GNU/Linux >> Linux Esercitazione >  >> Debian

Gateway SMS Kannel su Debian 10/11

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:

Collega il modem USB con l'host Linux e verifica se rileva il modem emettendo lsusb comando

root@sms-gw:~# lsusb

Uscita:

Il Modem ha rilevato sul Bus 2.

Ora dobbiamo trovare a quale TTY è collegato il modem

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

Uscita:

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:

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 .

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:

Controlla il canale casella portante e smsbox stato di ascolto

Controlla lo stato del canale dall'interno della scatola di Linux

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

Usa http://192.168.10.38:13000/status?password=sms‑gw‑admin‑passwd URL dal browser della macchina client Windows per verificare lo stato

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

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:

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

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:

/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


Debian
  1. Come installare il desktop XFCE su Debian 10/11

  2. Installa il server Wireguard su Debian 10/11

  3. Installa il server OpenVPN su Debian 10/11

  4. Come installare KDE plasma su Debian 10/11

  5. Installa WordPress con Nginx su Debian 10/11

Come installare l'ultimo PHP 8.1 su Debian 11/10

Come installare Webmin Admin Tool su Debian 10/11

Come installare più versioni di PHP con Apache su Debian 11/10

Come installare il server SVN su Debian 11/10

Integrazione del gateway SMS PlaySMS Kannel su NGINX+Debian

Come installare lo strumento di monitoraggio Zabbix su Debian 11/10