Canale:
Kannel è un gateway WAP e SMS open source per reti GSM. Inoltre, Kannel può inviare/ricevere SMS utilizzando un Modem GSM Seriale o USB. È accessibile tramite API HTTP e può essere utilizzato per l'invio di SMS in blocco, OTP ecc.
Quindi, Kannel ha tre programmi principali chiamati box:bearerbox , casella SMS , wapbox .
- Interfacce Bearerbox verso i telefoni. Accetta i messaggi WAP e SMS dai telefoni e li invia alle altre caselle.
- SMSbox gestisce la funzionalità del gateway SMS.
- WAPbox gestisce la funzionalità del gateway WAP.
È possibile avere più SMSbox e più WAPbox su host diversi che gli consentono di gestire un carico maggiore.
Kannel supporta anche l'integrazione del database e supporta mysql , pgsql , sdb , msql , sqlite3 , oracolo , redis e cassandra .
Kannel ha un'ampia gamma di supporto per modem GSM; inoltre qualsiasi Modem GSM accessibile tramite porta seriale o USB con driver appropriato e supporta il comando AT verrebbe utilizzato con Kannel.
Prepararsi per installare Kannel SMS Gateway:
Qui installeremo un Kannel SMS Gateway ultima versione stabile 1.4.5 dal file tar di origine su Debian 10 (buster) . Qui configureremo i componenti principali:bearerbox e smsbox quello utilizzato per il gateway SMS.
IP host SMS-GW | 192.168.10.38 |
IP host client Windows | 192.168.10.31 |
IP host client Linux | 192.168.10.37 |
Modello modem GSM | Modem USB Huawei E303 3G/GSM |
Controlla la versione del sistema operativo
root@sms-gw:~# cat /etc/os-release
Uscita:
![](https://m.unixlinux.online/article/uploadfiles/202204/2022042816120113.png)
Collega il modem USB con l'host Linux e verifica se rileva il modem emettendo lsusb comando
root@sms-gw:~# lsusb
Uscita:
![](https://m.unixlinux.online/article/uploadfiles/202204/2022042816120150.png)
Il Modem ha rilevato sul Bus 2.
Ora dobbiamo trovare a quale TTY è collegato il modem
root@sms-gw:~# ls /dev/ttyUSB*
Uscita:
![](https://m.unixlinux.online/article/uploadfiles/202204/2022042816120168.png)
Vediamo che il modem è connesso su /dev/ttyUSB0 e /dev/ttyUSB1 .Di solito la velocità in baud di quei modem è 9600 o 115200.
C'è uno strumento utile wvdial , per identificare USB TTY e baud rate per un modem. wvdial viene solitamente utilizzato come dialer PPP da riga di comando per utilizzare Internet mobile.
Installa wvdial per trovare USB TTY e baud rate per il modem.
root@sms-gw:~# apt-get update
root@sms-gw:~# apt-get install -y wvdial
Problema wvdialconf comando per scoprire TTY e Baud rate del Modem
root@sms-gw:~# wvdialconf
Uscita:
![](https://m.unixlinux.online/article/uploadfiles/202204/2022042816120119.png)
Dall'output troviamo che il modem è connesso su /dev/ttyUSB0 e baud rate id 9600. wvdialconf scrive anche la configurazione di base del modem in /etc/wvdial.conf file.
Ora installa le dipendenze necessarie per 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
Installazione del gateway SMS Kannel:
Scarica il tarball sorgente da 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
Decomprimi il file e accedi alla directory di origine
root@sms-gw:~# tar -zxf gateway-1.4.5.tar.gz
root@sms-gw:~# cd gateway-1.4.5/
Esegui configura file con prefisso della directory home del canale e start-stop-deamon, qui stiamo usando /usr/local/kannel come directory home del canale
root@sms-gw:~/gateway-1.4.5# ./configure --enable-start-stop-daemon --prefix=/usr/local/kannel
Possiamo anche disabilitare la wapbox poiché non lo useremo
root@sms-gw:~/gateway-1.4.5# ./configure --enable-start-stop-daemon --prefix=/usr/local/kannel --disable-wap
Dopo aver completato con successo la configurazione script eseguito, compilare il pacchetto
root@sms-gw:~/gateway-1.4.5# make
Installa i programmi con file di dati e documentazione
root@sms-gw:~/gateway-1.4.5# make install
Installerà i binari, le librerie e i documenti necessari in diverse directory in /usr/local/kannel/ posizione.
Nota: In caso di problemi durante il make possiamo pulire o disinstallare e ricominciare da capo. Per pulire esegui make clean , per disinstallare esegui make uninstall comando.
Ora crea ecc , corri e log directory
root@sms-gw:~# mkdir /usr/local/kannel/etc
root@sms-gw:~# mkdir /usr/local/kannel/run
root@sms-gw:~# mkdir /var/log/kannel/
Crea un file di configurazione del canale /usr/local/kannel/etc/kannel.conf con i contenuti di seguito
##CORE
group = core
admin-port = 13000
smsbox-port = 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 = internal
sms-resend-retry = 1
##SMSC
group = smsc
smsc = at
smsc-id = smsc01
allowed-smsc-id = smsc01
preferred-smsc-id = smsc01
modemtype = Huawei
device = /dev/ttyUSB0
speed = 9600
alt-charset = "GSM"
sim-buffering = true
log-file = /var/log/kannel/smsc01-gsm1.log
log-level = 0
##MODEMS
group = modems
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
speed = 9600
detect-string = "huawei"
##SMSBOX
group = smsbox
bearerbox-host = localhost
sendsms-port = 13013
global-sender = 13013
mo-recode = true
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"
##SMS-USER
group = sendsms-user
user-deny-ip = "*.*.*.*"
user-allow-ip = "*.*.*.*"
username = kannel
password = kannelpasswd
default-smsc = smsc01
concatenation = 1
max-messages = 10
##SMS-SERVICE
group = sms-service
keyword = default
get-url = " "http://%S"
accept-x-kannel-headers = true
max-messages = 10
concatenation = true
catch-all = true
omit-empty = true
Nota: get-url config in sms-serice gruppo indica lo stile di chiamata dell'API HTTP del server HTTP remoto. Esempio:per server PlaySMS remoto
get-url = "http://PLAYSMS-SERVER-IP/playsms/plugin/gateway/kannel/geturl.php?t=%t&q=%q&a=%aQ=%Q&smsc=%i"
Crea inizializzazione script per avviare/arrestare le caselle del canale come /etc/init.d/kannel
#!/bin/bash
# Start/stop the Kannel boxes: One bearer box and one SMS box.
BOXPATH=/usr/local/kannel/sbin
PIDFILES=/usr/local/kannel/run
CONFDIR=/usr/local/kannel/etc
CONF=$CONFDIR/kannel.conf
USER=kannel
VERSION=""
RB=$BOXPATH/run_kannel_box$VERSION
BB=$BOXPATH/bearerbox$VERSION
WB=$BOXPATH/wapbox$VERSION
SB=$BOXPATH/smsbox$VERSION
SSD=$BOXPATH/start-stop-daemon$VERSION
PATH=$BOXPATH:$PATH
case "$1" in
start)
echo -n "Starting WAP gateway: 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
sleep 3
echo "."
;;
stop)
echo -n "Stopping WAP gateway: "
echo -n " smsbox"
$SSD --stop --quiet --pidfile $PIDFILES/kannel_smsbox.pid --exec $RB
echo -n " bearerbox"
$SSD --stop --quiet --pidfile $PIDFILES/kannel_bearerbox.pid --exec $RB
echo "."
;;
status)
CORE_CONF=$(grep -r 'group[[:space:]]*=[[:space:]]*core' $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
;;
reload)
# We don't have support for this yet.
exit 1
;;
restart|force-reload)
$0 stop
sleep 3
$0 start
;;
*)
echo "Usage: $0 {start|stop|status|reload|restart|force-reload}"
exit 1
esac
exit 0
Nota: Lo script sopra è un init.d predefinito sceneggiatura per Kannel. Questa configurazione è appropriata per un piccolo sito che esegue Kannel su una singola macchina. Per favore, assicurati che i binari del canale si trovino in $BOXPATH o da qualche altra parte lungo $PATH . run_kannel_box deve essere in $BOXPATH .
![](https://m.unixlinux.online/article/uploadfiles/202204/2022042816120180.png)
Crea il /etc/init.d/kannel file eseguibile
root@sms-gw:~# chmod +x /etc/init.d/kannel
Avvia canale
root@sms-gw:~# /etc/init.d/kannel start
Uscita:
![](https://m.unixlinux.online/article/uploadfiles/202204/2022042816120179.png)
Controlla il canale casella portante e smsbox stato di ascolto
![](https://m.unixlinux.online/article/uploadfiles/202204/2022042816120283.png)
Controlla lo stato del canale dall'interno della scatola di Linux
root@sms-gw:~# /etc/init.d/kannel status
![](https://m.unixlinux.online/article/uploadfiles/202204/2022042816120257.png)
Usa http://192.168.10.38:13000/status?password=sms‑gw‑admin‑passwd URL dal browser della macchina client Windows per verificare lo stato
![](https://m.unixlinux.online/article/uploadfiles/202204/2022042816120213.png)
Invio di SMS tramite Kannel SMS Gateway:
Possiamo inviare SMS da qualsiasi browser della macchina client utilizzando l'URL. Esempio:
http://192.168.10.38:13013/cgi-bin/sendsms?username=kannel&password=kannelpasswd&to=01700000000&text=SMS+from+kannel+01
![](https://m.unixlinux.online/article/uploadfiles/202204/2022042816120204.png)
La pagina web mostra il codice di risposta push SMS 0:Accettato per la consegna , che indica che Kannel ha accettato l'SMS per la consegna al destinatario
Invio di SMS da Linux box usando curl
root@host1:~# curl "http://192.168.10.38:13013/cgi-bin/sendsms?username=kannel&password=kannelpasswd&to=01700000000&text=SMS+from+kannel+02"
Uscita:
![](https://m.unixlinux.online/article/uploadfiles/202204/2022042816120265.png)
Invia SMS utilizzando il testo SMS da file utilizzando curl
root@host1:~# echo "SMS from file using 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]
Invio di SMS tramite piping output per arricciare
root@host1:~# printf "SMS from output" | curl "http://192.168.10.38:13013/cgi-bin/sendsms?username=kannel&password=kannelpasswd&to=01700000000" -G --data-urlencode text@-
SMS ricevuti dal dispositivo mobile
![](https://m.unixlinux.online/article/uploadfiles/202204/2022042816120250.png)
Nota: Ci sono altri codici di risposta push SMS da Kannel
Codice di stato | Corpo messaggio | Significato |
202 | 0:Accettato per la consegna | L'SMS è stato accettato e viene consegnato a un autista SMSC |
202 | 3:In coda per la consegna successiva | La scatola portante accettato e archiviato il messaggio in una coda da consegnare in seguito |
4xx | (varia) | Si è verificato un errore nella richiesta o nella configurazione del canale, controlla la richiesta e la configurazione del canale. |
503 | Errore temporale, riprova più tardi | Si è verificato un errore temporale, riprova più tardi. |
Controllo log:
Troveremo il core del canale bearerbox accede a /var/log/kannel/kannel.log file.
/var/log/kannel/access.log file registra le richieste di accesso riuscite dai client.
Esempio di registro:
![](https://m.unixlinux.online/article/uploadfiles/202204/2022042816120254.png)
/var/log/kannel/smsbox.log registra la richiesta del client e le comunicazioni con bearerbox.
I registri relativi al modem GSM si trovano in /var/log/kannel/smsc01-gsm1.log file.
Livelli di gravità del registro:
livello di log config in ogni gruppo di configurazione in kannel.conf file definisce il livello di gravità del registro per quel gruppo e accede di conseguenza in file di registro dato in quel gruppo . I livelli di registro sono:
0> eseguire il debug
1> info
2> avviso
3> errore
4> panico
Suggerimenti per la sicurezza:
- ip-admin-negazione e admin-allow-ip le direttive definiscono l'elenco di indirizzi IP consentiti o vietati per accedere al portale di amministrazione del canale. Ciascun elenco può avere più indirizzi separati da “;” , “*” rappresenta tutti i numeri in un ottetto. Esempio:se vogliamo consentire 192.168.10.31 e localhost può accedere al portale di amministrazione e tutti gli altri indirizzi IP devono essere bloccati, le direttive di configurazione saranno come sotto
admin-deny-ip =“*.*.*.*”
admin-allow-ip =“127.*.*.*; 192.168.10.31”
- Allo stesso modo box-deny-ip e box-allow-ip le direttive definiscono l'elenco di indirizzi IP a cui è consentito accedere a bearerbox . È utile quando utilizziamo più smsbox . Elencheremo la smsbox Indirizzi IP in box‑allow‑ip per accedere a casella portante programma.
- IP negazione utente e ip-utente-consenti vengono utilizzati per consentire/negare l'indirizzo IP dell'utente.
- È meglio utilizzare la direttiva di negazione, quindi consentire l'indirizzo IP selettivo per ogni tipo di controllo dell'accesso.
- Utilizza nome utente/password molto sicuri per tutte le opzioni nome utente/password mostrate in kannel.conf file.
Riferimenti:
- https://www.kannel.org/download/kannel-userguide-snapshot/userguide.html