GNU/Linux >> Znalost Linux >  >> Debian

Kannel SMS Gateway na Debianu 10/11

Kannel:

Kannel je open source WAP a SMS brána pro GSM sítě. Kromě toho může Kannel odesílat / přijímat SMS pomocí sériového nebo USB GSM modemu. Je přístupný přes HTTP API a lze jej použít při odesílání hromadných SMS, OTP atd.

Kannel má tedy tři hlavní programy zvané boxy:bearerbox , schránka SMS , wapbox .

  • Rozhraní Bearerbox směrem k telefonům. Přijímá WAP a SMS zprávy z telefonů a odesílá je do ostatních schránek.
  • SMSbox obsluhuje funkce brány SMS.
  • WAPbox se stará o funkčnost brány WAP.

Je možné mít několik SMSboxů a několik WAPboxů na různých hostitelích, což mu umožňuje zvládnout větší zátěž.

Kannel také podporuje integraci databází a podporuje mysql , pgsql , sdb , mssql , sqlite3 , oracle , redis a cassandra .

Kannel má širokou škálu podpory GSM modemů; navíc s Kannel by byl použit jakýkoli GSM modem, který je přístupný přes sériový nebo USB port se správným ovladačem a podporuje AT příkaz.

Příprava na instalaci Kannel SMS Gateway:

Zde nainstalujeme Kannel SMS Gateway nejnovější stabilní verzi 1.4.5 ze zdrojového souboru tar na Debian 10 (buster) . Zde nakonfigurujeme základní komponenty:bearerbox a schránka SMS který se používá pro SMS bránu.

IP hostitele SMS-GW 192.168.10.38
IP adresa hostitele klienta Windows 192.168.10.31
IP hostitele klienta Linux 192.168.10.37
Model GSM modemu Huawei E303 3G/GSM USB modem

Zkontrolujte verzi OS

root@sms-gw:~# cat /etc/os-release

Výstup:

Připojte USB modem k hostiteli Linux a zkontrolujte, zda detekuje modem vydáním lsusb příkaz

root@sms-gw:~# lsusb

Výstup:

Modem detekoval sběrnici 2.

Nyní musíme zjistit, ke kterému TTY je modem připojen

root@sms-gw:~# ls /dev/ttyUSB*

Výstup:

Vidíme, že modem je připojen na /dev/ttyUSB0 a /dev/ttyUSB1 .Obvykle je přenosová rychlost těchto modemů 9600 nebo 115200.

Existuje šikovný nástroj wvdial , k identifikaci USB TTY a přenosové rychlosti pro modem. wvdial se obvykle používá jako příkazový řádek PPP dialer pro použití Mobile Internet.

Nainstalujte wvdial, abyste našli USB TTY a přenosovou rychlost pro modem.

root@sms-gw:~# aktualizace apt-get 
root@sms-gw:~# apt-get install -y wvdial

Problém wvdialconf příkaz ke zjištění TTY a přenosové rychlosti modemu

root@sms-gw:~# wvdialconf

Výstup:

Z výstupu zjistíme, že modem je připojen na /dev/ttyUSB0 a id přenosové rychlosti 9600. wvdialconf také zapisuje základní konfiguraci modemu do /etc/wvdial.conf soubor.

Nyní nainstalujte potřebné závislosti pro Kannel

root@sms-gw:~# apt-get install -y linux-headers-$(uname -r) build-essential make gcc cpp wget curl libxml2 libxml2-dev bison flex byacc zlib1g-dev libiconv-hook1 libtool 

Instalace Kannel SMS Gateway:

Stáhněte si zdrojový tarball z https://kannel.org/download/1.4.5/gateway-1.4.5.tar.gz

root@sms-gw:~# wget --no-check-certificate https://kannel.org/download/1.4.5/gateway-1.4.5.tar.gz

Rozbalte soubor a zadejte zdrojový adresář

root@sms-gw:~# tar -zxf gateway-1.4.5.tar.gz 
root@sms-gw:~# cd gateway-1.4.5/

Spusťte configure soubor s předponou domovského adresáře kannel a start-stop-deamon, zde používáme /usr/local/kannel jako domovský adresář kanálu

root@sms-gw:~/gateway-1.4.5# ./configure --enable-start-stop-daemon --prefix=/usr/local/kannel

Můžeme také vypnout wapbox protože to nebudeme používat

root@sms-gw:~/gateway-1.4.5# ./configure --enable-start-stop-daemon --prefix=/usr/local/kannel --disable-wap

Po úspěšném dokončení konfigurace spustit skript, zkompilovat balíček

root@sms-gw:~/gateway-1.4.5# make

Nainstalujte programy s datovými soubory a dokumentací

root@sms-gw:~/gateway-1.4.5# make install

Nainstaluje potřebné binární soubory, knihovny a dokumenty do různých adresářů v /usr/local/kannel/ umístění.

Poznámka: Pokud při vytváření narazíte na nějaký problém můžeme vyčistit nebo odinstalovat a začít znovu. Chcete-li vyčistit, spusťte vyčistit , pro odinstalaci spusťte provést odinstalaci příkaz.

Nyní vytvořte atd , spustit a protokolovat adresáře

root@sms-gw:~# mkdir /usr/local/kannel/etc 
root@sms-gw:~# mkdir /usr/local/kannel/run
root@sms-gw:~# mkdir /var/log/kannel/

Vytvořte konfigurační soubor kanálu /usr/local/kannel/etc/kannel.conf s níže uvedeným obsahem

##CORE 
skupina =jádro
admin-port =13000
port smsbox =13001
admin-password =sms-gw-admin-passwd
status-password =sms-gw-status-passwd
admin-deny-ip ="*.*.*.*"
admin-allow-ip ="*.*.*.*"
box-deny-ip ="*.*.*.*"
box-allow-ip ="*.*.*.*"
log-level =0
log-file ="https://1118798822.rsc.cdn77.org/var/log/kannel/kannel.log"
dlr-storage =interní
sms-resend-retry =1

##SMSC
skupina =smsc
smsc =zavináč
smsc-id =smsc01
allow-smsc-id =smsc01
preferované-smsc-id =smsc01
typ modemu =Huawei
zařízení =/dev/ttyUSB0
rychlost =9600
alt-charset ="GSM"
sim-buffering =pravda
log-file =/var/log/kannel/smsc01-gsm1.log
log-level =0

##MODEMY
skupina =modemy
id =Huawei
enable-mms =true
init-string ="ATQ0 V1 E1 S0=0 &C1 &D2 +FCLASS=0;+CNMI=1,3,2,2,1;+CMEE=1;+CPMS=\"SM\",\"SM\" ,\"SM\";+CMGF=0;+CSCS=GSM
rychlost =9600
detect-string ="huawei"

##SMSBOX
skupina =smsbox
bearerbox-host =localhost
Sendsms-port =13013
globální-odesílatel =13013
mo-recode =pravda
sendsms-chars ="0123456789 +-"
log-file ="https://1118798822.rsc.cdn77.org/var/log/kannel/smsbox.log"
log-level =0
access-log ="https://1118798822.rsc.cdn77.org/var/log/kannel/access.log"

##Uživatel SMS
skupina =sendsms-user
user-deny-ip ="*.*.*.*"
user-allow-ip ="*.*.*.*"
uživatelské jméno =kannel
heslo =kannelpasswd
default-smsc =smsc01
zřetězení =1
maximální počet zpráv =10

##SMS-SERVIS
skupina =sms-služba
klíčové slovo =výchozí
get-url =" "http://%S"
accept-x-kannel-headers =true
maximální počet zpráv =10
zřetězení =pravda
catch-all =pravda
omit-empty =true

Poznámka: get-url config v sms-serice skupina označuje styl volání HTTP API vzdáleného HTTP serveru. Příklad:pro vzdálený server PlaySMS

get-url ="http://PLAYSMS-SERVER-IP/playsms/plugin/gateway/kannel/geturl.php?t=%t&q=%q&a=%aQ=%Q&smsc=%i"

Vytvořte init skript pro spuštění/zastavení kannelových boxů jako /etc/init.d/kannel

#!/bin/bash 
# Spuštění/zastavení kannelových schránek:Jedna schránka nosiče a jedna schránka SMS.

BOXPATH=/usr/local/kannel/sbin
PIDFILES=/usr/local/kannel/run
CONFDIR=/usr/local/kannel/etc
CONF=$CONFDIR/kannel.conf

USER=kannel
VERZE=""

RB=$BOXPATH/run_kannel_box$VERSION
BB=$BOXPATH/bearerbox$VERSION
WB=$BOXPATH/wapbox$VERZE
SB=$BOXPATH/smsbox$VERZE
SSD=$BOXPATH/start-stop-daemon$VERSION

PATH=$BOXPATH:$PATH

pouzdro "$1" in
Start)
echo -n "Spouštění brány WAP:bearerbox"
$SSD --start --quiet --pidfile $PIDFILES/kannel_bearerbox.pid --exec $RB -- --pidfile $PIDFILES/kannel_bearerbox.pid $BB -- $CONF
echo -n "smsbox"
$SSD --start --quiet --pidfile $PIDFILES/kannel_smsbox.pid --exec $RB -- --pidfile $PIDFILES/kannel_smsbox.pid $SB -- $CONF
spát 3
echo "."
;;

stop)
echo -n "Zastavení brány WAP:"
echo -n "smsbox"
$SSD --stop --quiet --pidfile $PIDFILES/kannel_smsbox.pid --exec $RB
echo -n "nosič"
$SSD --stop --quiet --pidfile $PIDFILES/kannel_bearerbox.pid --exec $RB
echo "."
;;

postavení)
CORE_CONF=$(grep -r 'skupina[[:mezera:]]*=[[:mezera:]]*jádro' $CONFDIR | cut -d:-f1)
ADMIN_PORT=$(grep '^admin-port' $CORE_CONF | sed "s/.*=[[:space:]]*//")
ADMIN_PASS=$(grep '^admin-password' $CORE_CONF | sed "s/.*=[[:space:]]*//")
STATUS_URL="http://127.0.0.1:${ADMIN_PORT}/status.txt?password=${ADMIN_PASS}"
curl $STATUS_URL
;;

Znovu načíst)
# Zatím pro to nemáme podporu.
výstup 1
;;

restart|force-reload)
0 $ zastávka
spát 3
Začátek 0 $
;;

*)
echo "Využití:$0 {start|stop|stav|reload|restart|force-reload}"
výstup 1

esac

exit 0

Poznámka: Výše uvedený skript je výchozí init.d skript pro Kannel. Tato konfigurace je vhodná pro malý web provozující Kannel na jednom počítači. Ujistěte se prosím, že binární soubory Kannel lze nalézt v $BOXPATH nebo někde jinde podél $PATH . run_kannel_box musí být v $BOXPATH .

Vytvořte /etc/init.d/kannel spustitelný soubor

root@sms-gw:~# chmod +x /etc/init.d/kannel

Spustit kannel

root@sms-gw:~# /etc/init.d/kannel start

Výstup:

Zkontrolujte kanál nosič a schránka SMS stav poslechu

Zkontrolujte stav kanálu z krabice Linux

root@sms-gw:~# /etc/init.d/kannel status

Použijte http://192.168.10.38:13000/status?password=sms-gw-admin-passwd URL z prohlížeče klientského počítače systému Windows ke kontrole stavu

Odesílání SMS pomocí Kannel SMS Gateway:

Můžeme odesílat SMS z libovolného prohlížeče klientského počítače pomocí adresy URL. Příklad:

http://192.168.10.38:13013/cgi-bin/sendsms?username=kannel&password=kannelpasswd&to=01700000000&text=SMS+from+kannel+01

Na webové stránce se zobrazuje kód odpovědi SMS Push 0:Přijato k doručení , což znamená, že Kannel přijal SMS k doručení příjemci

Odesílání SMS z Linux boxu pomocí curl

root@host1:~# curl "http://192.168.10.38:13013/cgi-bin/sendsms?username=kannel&password=kannelpasswd&to=01700000000&text=SMS+from+kannel+02"

Výstup:

Odešlete SMS pomocí SMS textu ze souboru pomocí curl

root@host1:~# echo "SMS ze souboru pomocí curl"> smsfile.txt 
root@host1:~# curl "http://192.168.10.38:13013/cgi-bin/sendsms?username=kannel&password=kannelpasswd&to=01700000000" -G --data-urlencode [email protected]

Odesílání SMS pomocí potrubí výstup do curl

root@host1:~# printf "SMS z výstupu" | curl "http://192.168.10.38:13013/cgi-bin/sendsms?username=kannel&password=kannelpasswd&to=01700000000" -G --data-urlencode text@-

SMS přijatá mobilním zařízením

Poznámka: Existuje několik dalších kódů pro odpověď SMS Push od Kannel

Stavový kód Tělo zprávy Význam
202 0:Přijato k doručení SMS byla přijata a je doručena dále ovladači SMSC
202 3:Ve frontě pro pozdější doručení schránka nosiče přijal a uložil zprávu do fronty k doručení později
4xx (různé) Něco nebylo v pořádku v požadavku nebo konfiguraci kanálu, zkontrolujte požadavek a konfiguraci kanálu.
503 Dočasné selhání, zkuste to znovu později Došlo k dočasnému selhání, zkuste to znovu později.

Kontrola protokolů:

Najdeme Kannel core bearerbox přihlášení /var/log/kannel/kannel.log soubor.

/var/log/kannel/access.log file logs úspěšné žádosti o přístup od klientů.

Příklad protokolu:

/var/log/kannel/smsbox.log zaznamenává požadavek klienta a komunikaci s nosičem.

Protokoly týkající se GSM modemu naleznete v /var/log/kannel/smsc01-gsm1.log soubor.

Úrovně závažnosti protokolu:

úroveň protokolu config v každé konfigurační skupině vkannel.conf soubor definuje úroveň závažnosti protokolu pro tuto skupinu a podle toho se zaloguje do souboru protokolu v této skupině . Úrovně protokolu jsou:

0> ladit
1> informace
2> varování
3> chyba
4> panika

Bezpečnostní tipy:

  • admin-deny-ip a admin-allow-ip direktivy definují seznam IP adres, kterým je povolen nebo zakázán přístup k portálu administrace kanálu. Každý seznam může mít více adres oddělených „;“ , „*“ představuje všechna čísla v oktetu. Příklad:pokud chceme povolit 192.168.10.31 a localhost může přistupovat na administrátorský portál a všechny ostatní IP adresy by měly být blokovány, pak budou konfigurační direktivy vypadat jako níže

admin-deny-ip ="*.*.*.*"
admin-allow-ip =„127.*.*.*; 192.168.10.31”

  • Podobně box-deny-ip a box-allow-ip direktivy definují seznam IP adres, kterým je povolen přístup do nosič . Je to užitečné, když používáme více smsboxů . Vypíšeme smsbox IP adresy v box‑allow‑ip pro přístup k doručitelské schránce program.
  • user-deny-ip a user-allow-ip se používají k povolení/zakázaní IP adresy uživatele.
  • Je lepší použít direktivu deny a poté povolit selektivní IP adresu pro každý typ řízení přístupu.
  • Používejte velmi zabezpečené uživatelské jméno/heslo pro všechny možnosti uživatelského jména/hesla zobrazené v kannel.conf soubor.

Odkazy:

  • https://www.kannel.org/download/kannel-userguide-snapshot/userguide.html


Debian
  1. Jak nainstalovat Webmin na Debian 10/11

  2. Zabezpečte Apache2 pomocí Let's Encrypt SSL na Debianu 10/11

  3. Nainstalujte OpenVPN Server na Debian 11/Debian 10

  1. Zabezpečte Nginx pomocí Let's Encrypt SSL na Debianu 10/11

  2. Jak nainstalovat plochu XFCE na Debian 10/11

  3. Nainstalujte server Wireguard na Debian 10/11

  1. Nainstalujte server OpenVPN na Debian 10/11

  2. Jak nainstalovat plazmu KDE na Debian 10/11

  3. Nainstalujte WordPress s Nginx na Debian 10/11