Kanzel:
Kannel ist ein Open-Source-WAP- und SMS-Gateway für GSM-Netze. Darüber hinaus kann Kannel SMS über ein serielles oder USB-GSM-Modem senden/empfangen. Es ist über die HTTP-API zugänglich und kann zum Senden von Massen-SMS, OTP usw. verwendet werden.
Kannel hat also drei Hauptprogramme namens Boxen:bearerbox , smsbox , wapbox .
- Bearerbox-Schnittstellen zu den Telefonen. Es akzeptiert WAP- und SMS-Nachrichten von den Telefonen und sendet sie an die anderen Boxen.
- SMSbox verwaltet die SMS-Gateway-Funktionalität.
- WAPbox verwaltet die WAP-Gateway-Funktionalität.
Es ist möglich, mehrere SMSboxen und mehrere WAPboxen auf verschiedenen Hosts zu haben, wodurch größere Lasten bewältigt werden können.
Kannel unterstützt auch die Datenbankintegration und unterstützt mysql , pgsql , SDB , mssql , sqlite3 , Orakel , redis und kassandra .
Kannel bietet eine breite Palette an Unterstützung für GSM-Modems; Darüber hinaus würde jedes GSM-Modem, das über einen seriellen oder USB-Anschluss mit dem richtigen Treiber zugänglich ist und den AT-Befehl unterstützt, mit Kannel verwendet werden.
Bereiten Sie die Installation von Kannel SMS Gateway vor:
Hier werden wir die neueste stabile Version 1.4.5 des Kannel SMS Gateway aus der Quell-TAR-Datei auf Debian 10 (Buster) installieren . Hier konfigurieren wir die Kernkomponenten:Bearerbox und smsbox das für SMS Gateway verwendet wird.
SMS-GW-Host-IP | 192.168.10.38 |
Host-IP des Windows-Clients | 192.168.10.31 |
Linux-Client-Host-IP | 192.168.10.37 |
GSM-Modemmodell | Huawei E303 3G/GSM-USB-Modem |
Überprüfen Sie die Betriebssystemversion
root@sms-gw:~# cat /etc/os-release
Ausgabe:
Verbinden Sie das USB-Modem mit dem Linux-Host und prüfen Sie, ob es das Modem erkennt, indem Sie lsusb ausgeben Befehl
root@sms-gw:~# lsusb
Ausgabe:
Das Modem hat Bus 2 erkannt.
Nun müssen wir herausfinden, an welchem TTY das Modem angeschlossen ist
root@sms-gw:~# ls /dev/ttyUSB*
Ausgabe:
Wir sehen, dass das Modem an /dev/ttyUSB0 angeschlossen ist und /dev/ttyUSB1 .Normalerweise beträgt die Baudrate dieser Modems 9600 oder 115200.
Es gibt ein praktisches Tool wvdial , um USB TTY und Baudrate für ein Modem zu identifizieren. wvdial wird normalerweise als Befehlszeilen-PPP-Dialer zur Nutzung des mobilen Internets verwendet.
Installieren Sie wvdial, um USB TTY und die Baudrate für das Modem zu finden.
root@sms-gw:~# apt-get update
root@sms-gw:~# apt-get install -y wvdial
Geben Sie wvdialconf aus Befehl, um die TTY- und Baudrate des Modems zu ermitteln
root@sms-gw:~# wvdialconf
Ausgabe:
Aus der Ausgabe entnehmen wir, dass das Modem an /dev/ttyUSB0 angeschlossen ist und Baudraten-ID 9600. wvdialconf schreibt auch die grundlegende Modemkonfiguration in /etc/wvdial.conf Datei.
Installieren Sie nun die notwendigen Abhängigkeiten für 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
Installation des Kannel SMS Gateway:
Laden Sie den Quell-Tarball von https://kannel.org/download/1.4.5/gateway-1.4.5.tar.gz
herunterroot@sms-gw:~# wget --no-check-certificate https://kannel.org/download/1.4.5/gateway-1.4.5.tar.gz
Entpacken Sie die Datei und geben Sie das Quellverzeichnis ein
root@sms-gw:~# tar -zxf gateway-1.4.5.tar.gz
root@sms-gw:~# cd gateway-1.4.5/
Führen Sie configure aus Datei mit dem Home-Verzeichnis-Präfix Kannel und Start-Stopp-Daemon, hier verwenden wir /usr/local/kannel als Kannel-Home-Verzeichnis
root@sms-gw:~/gateway-1.4.5# ./configure --enable-start-stop-daemon --prefix=/usr/local/kannel
Wir können auch die wapbox deaktivieren da wir es nicht verwenden werden
root@sms-gw:~/gateway-1.4.5# ./configure --enable-start-stop-daemon --prefix=/usr/local/kannel --disable-wap
Nach erfolgreichem Abschluss von Konfigurieren Skript ausführen, Paket kompilieren
root@sms-gw:~/gateway-1.4.5# make
Installieren Sie die Programme mit Datendateien und Dokumentation
root@sms-gw:~/gateway-1.4.5# make install
Es installiert notwendige Binärdateien, Bibliotheken und Dokumente in verschiedenen Verzeichnissen in /usr/local/kannel/ Ort.
Hinweis: Wenn beim make ein Problem auftritt Wir können bereinigen oder deinstallieren und von vorne beginnen. Führen Sie zum Reinigen make clean aus , führen Sie zum Deinstallieren make uninstall aus Befehl.
Erstellen Sie nun etc , laufen und protokollieren Verzeichnisse
root@sms-gw:~# mkdir /usr/local/kannel/etc
root@sms-gw:~# mkdir /usr/local/kannel/run
root@sms-gw:~# mkdir /var/log/kannel/
Erstellen Sie die Kannel-Konfigurationsdatei /usr/local/kannel/etc/kannel.conf mit untenstehendem Inhalt
##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
Hinweis: get-url config-Anweisungen im sms-serice Gruppe geben den HTTP-API-Aufrufstil des Remote-HTTP-Servers an. Beispiel:für entfernten PlaySMS-Server
get-url = "http://PLAYSMS-SERVER-IP/playsms/plugin/gateway/kannel/geturl.php?t=%t&q=%q&a=%aQ=%Q&smsc=%i"
Erstellen Sie init Skript zum Starten/Stoppen der Kannel-Boxen als /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
Hinweis: Das obige Skript ist ein Standard-init.d Skript für Kannel. Diese Konfiguration ist für eine kleine Website geeignet, auf der Kannel auf einem einzelnen Computer ausgeführt wird. Bitte stellen Sie sicher, dass die Kannel-Binärdateien in $BOXPATH zu finden sind oder irgendwo anders entlang $PATH . run_kannel_box muss sich in $BOXPATH befinden .
Erstellen Sie die /etc/init.d/kannel ausführbare Datei
root@sms-gw:~# chmod +x /etc/init.d/kannel
Kannel starten
root@sms-gw:~# /etc/init.d/kannel start
Ausgabe:
Kannel Bearerbox überprüfen und smsbox Hörzustand
Überprüfen Sie den Kannel-Status in der Linux-Box
root@sms-gw:~# /etc/init.d/kannel status
Verwenden Sie http://192.168.10.38:13000/status?password=sms-gw-admin-passwd URL vom Browser des Windows-Client-Computers zum Überprüfen des Status
Versenden von SMS mit Kannel SMS Gateway:
Wir können SMS von jedem Client-Computer-Browser mit URL senden. Beispiel:
http://192.168.10.38:13013/cgi-bin/sendsms?username=kannel&password=kannelpasswd&to=01700000000&text=SMS+from+kannel+01
Auf der Webseite wird der SMS-Push-Antwortcode 0:Zur Zustellung akzeptiert angezeigt , was anzeigt, dass Kannel die SMS zur Zustellung an den Empfänger akzeptiert hat
Senden von SMS von der Linux-Box mit curl
root@host1:~# curl "http://192.168.10.38:13013/cgi-bin/sendsms?username=kannel&password=kannelpasswd&to=01700000000&text=SMS+from+kannel+02"
Ausgabe:
Senden Sie SMS mit SMS-Text aus einer Datei mit 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]
Senden von SMS per Piping Ausgabe an curl
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@-
Vom Mobilgerät empfangene SMS
Hinweis: Es gibt einige weitere SMS-Push-Antwortcodes von Kannel
Statuscode | Nachrichtentext | Bedeutung |
202 | 0:Zur Lieferung angenommen | Die SMS wurde akzeptiert und wird an einen SMSC-Treiber weitergeleitet |
202 | 3:Für spätere Lieferung in die Warteschlange gestellt | Die Trägerbox akzeptiert und die Nachricht in einer Warteschlange gespeichert, um sie später zuzustellen |
4xx | (variiert) | Irgendetwas stimmte nicht mit der Anfrage oder der Kannel-Konfiguration, überprüfen Sie die Anfrage und die Kannel-Konfiguration. |
503 | Vorübergehender Fehler, versuchen Sie es später erneut | Ein zeitlicher Fehler ist aufgetreten. Versuchen Sie es später noch einmal. |
Prüfprotokolle:
Wir werden Kannel Core Trägerbox finden loggt sich in /var/log/kannel/kannel.log ein Datei.
/var/log/kannel/access.log Datei protokolliert erfolgreiche Zugriffsanfragen von Clients.
Beispielprotokoll:
/var/log/kannel/smsbox.log protokolliert Clientanfragen und Kommunikation mit Bearerbox.
Protokolle zum GSM-Modem finden Sie unter /var/log/kannel/smsc01-gsm1.log Datei.
Schweregrad protokollieren:
Protokollebene config-Direktive in jeder Konfigurationsgruppe in kannel.conf Datei definiert den Schweregrad des Protokolls für diese Gruppe und protokolliert entsprechend in log-file in dieser Gruppe gegeben . Protokollebenen sind:
0> debuggen
1> Info
2> Warnung
3> Fehler
4> Panik
Sicherheitstipps:
- admin-deny-ip und admin-allow-ip Direktiven definieren eine Liste von IP-Adressen, denen der Zugriff auf das Kannel-Admin-Portal erlaubt oder verboten ist. Jede Liste kann mehrere Adressen haben, die durch „;“ getrennt sind. , „*“ steht für alle Zahlen in einem Oktett. Beispiel:Wenn wir 192.168.10.31 zulassen möchten und localhost auf das Admin-Portal zugreifen kann und alle anderen IP-Adressen blockiert werden sollen, dann sehen die Konfigurationsanweisungen wie folgt aus
admin-deny-ip =„*.*.*.*“
admin-allow-ip =„127.*.*.*; 192.168.10.31“
- Ähnlich box-deny-ip und box-allow-ip Direktiven definieren eine Liste von IP-Adressen, die auf bearerbox zugreifen dürfen . Es ist nützlich, wenn wir mehrere smsbox verwenden . Wir listen die smsbox auf IP-Adressen in box-allow-ip um auf Bearerbox zuzugreifen Programm.
- user-deny-ip und user-allow-ip werden verwendet, um Benutzer-IP-Adressen zuzulassen/zu verweigern.
- Es ist besser, die Anweisung deny zu verwenden, als eine selektive IP-Adresse für jede Art der Zugriffskontrolle zuzulassen.
- Verwenden Sie einen sehr sicheren Benutzernamen/Passwort für alle Benutzernamen/Passwort-Optionen, die in der kannel.conf angezeigt werden Datei.
Referenzen:
- https://www.kannel.org/download/kannel-userguide-snapshot/userguide.html