GNU/Linux >> Tutoriels Linux >  >> Debian

Passerelle SMS Kannel sur Debian 10/11

Canal :

Kannel est une passerelle WAP et SMS open source pour les réseaux GSM. De plus, Kannel peut envoyer/recevoir des SMS à l'aide d'un modem GSM série ou USB. Il est accessible via l'API HTTP et peut être utilisé pour envoyer des SMS en masse, OTP, etc.

Ainsi, Kannel a trois programmes principaux appelés boîtes :bearerbox , boîte SMS , wapbox .

  • Interfaces Bearerbox vers les téléphones. Il accepte les messages WAP et SMS des téléphones et les envoie aux autres boîtes.
  • SMSbox gère la fonctionnalité de passerelle SMS.
  • WAPbox gère la fonctionnalité de passerelle WAP.

Il est possible d'avoir plusieurs SMSbox et plusieurs WAPbox sur différents hosts ce qui lui permet de gérer une charge plus importante.

Kannel prend également en charge l'intégration de bases de données et prend en charge mysql , pgsql , sdb , mssql , sqlite3 , oracle , redis et cassandre .

Kannel propose une large gamme de prise en charge de modem GSM; de plus, tout modem GSM accessible via un port série ou USB avec le pilote approprié et prenant en charge la commande AT serait utilisé avec Kannel.

Préparez-vous à installer Kannel SMS Gateway :

Ici, nous allons installer une dernière version stable de Kannel SMS Gateway 1.4.5 à partir du fichier tar source sur Debian 10 (buster) . Ici, nous allons configurer les composants principaux :bearerbox et smsbox celui qui est utilisé pour SMS Gateway.

IP hôte SMS-GW 192.168.10.38
IP de l'hôte client Windows 192.168.10.31
IP de l'hôte du client Linux 192.168.10.37
Modèle de modem GSM Modem USB 3G/GSM Huawei E303

Vérifiez la version du système d'exploitation

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

Sortie :

Connectez le modem USB à l'hôte Linux et vérifiez s'il détecte le modem en émettant lsusb commande

root@sms-gw :~# lsusb

Sortie :

Le modem a détecté sur le bus 2.

Maintenant, nous devons trouver à quel TTY le modem est connecté

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

Sortie :

Nous voyons que le modem est connecté sur /dev/ttyUSB0 et /dev/ttyUSB1 .En général, le débit en bauds de ces modems est de 9 600 ou 115 200.

Il existe un outil pratique wvdial , pour identifier le TTY USB et le débit en bauds d'un modem. wvdial est généralement utilisé comme numéroteur PPP en ligne de commande pour utiliser l'Internet mobile.

Installez wvdial pour trouver l'USB TTY et le débit en bauds du modem.

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

Émettez wvdialconf commande pour découvrir le TTY et le débit en bauds du modem

root@sms-gw :~# wvdialconf

Sortie :

D'après la sortie, nous constatons que le modem est connecté sur /dev/ttyUSB0 et le débit en bauds id 9600. wvdialconf écrit également la configuration de base du modem dans /etc/wvdial.conf fichier.

Installez maintenant les dépendances nécessaires pour 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 de la passerelle SMS Kannel :

Téléchargez l'archive source depuis 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

Décompressez le fichier et entrez le répertoire source

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

Exécutez configurer fichier avec préfixe de répertoire personnel kannel et start-stop-deamon, ici nous utilisons /usr/local/kannel comme répertoire personnel du canal

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

Nous pouvons également désactiver la wapbox car nous ne l'utiliserons pas

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

Après avoir terminé avec succès la configuration script exécuté, compilez le package

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

Installez les programmes avec les fichiers de données et la documentation

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

Il installera les binaires, bibliothèques et documents nécessaires dans différents répertoires dans /usr/local/kannel/ emplacement.

Remarque : Si vous rencontrez un problème lors de la création nous pouvons nettoyer ou désinstaller et recommencer. Pour nettoyer, lancez rendre propre , pour désinstaller, exécutez make uninstall commande.

Créez maintenant etc , exécuter et journal répertoires

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

Créer le fichier de configuration du canal /usr/local/kannel/etc/kannel.conf avec le contenu ci-dessous

##CORE 
groupe =noyau
port-admin =13000
port smsbox =13001
mot de passe-admin =sms-gw-admin-passwd
status-password =sms-gw-status-passwd
admin-deny-ip ="*.*.*.*"
admin-allow-ip ="*.*.*.*"
box-deny-ip ="*.*.*.*"
box-allow-ip ="*.*.*.*"
niveau journal =0
fichier-journal ="https://1118798822.rsc.cdn77.org/var/log/kannel/kannel.log"
dlr-stockage =interne
sms-renvoyer-réessayer =1

## SMSC
groupe =smsc
smsc =à
smsc-id =smsc01
autorisé-smsc-id =smsc01
id-smsc-préféré =smsc01
type de modem =Huawei
périphérique =/dev/ttyUSB0
vitesse =9600
alt-charset ="GSM"
sim-tampon =vrai
fichier-journal =/var/log/kannel/smsc01-gsm1.log
niveau journal =0

##MODEMS
groupe =modems
identifiant =Huawei
activer-mms =vrai
chaîne-init ="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
vitesse =9600
detect-string ="huawei"

##SMSBOX
groupe =smsbox
hôte-boîte-porteur =hôte local
sendsms-port =13013
expéditeur global =13013
mo-recode =vrai
envoiems-chars ="0123456789 +-"
fichier journal ="https://1118798822.rsc.cdn77.org/var/log/kannel/smsbox.log"
niveau journal =0
access-log ="https://1118798822.rsc.cdn77.org/var/log/kannel/access.log"

##SMS-UTILISATEUR
groupe =utilisateur sendsms
user-deny-ip ="*.*.*.*"
user-allow-ip ="*.*.*.*"
nom d'utilisateur =canal
mot de passe =kannelpasswd
défaut-smsc =smsc01
concaténation =1
max-messages =10

##SMS-SERVICE
groupe =service sms
mot-clé =par défaut
get-url =" "http://%S"
accept-x-kannel-headers =vrai
max-messages =10
concaténation =vrai
fourre-tout =vrai
omit-vide =vrai

Remarque : get-url directives de configuration dans le sms-serice groupe indique le style d'appel de l'API HTTP du serveur HTTP distant. Exemple :pour le serveur PlaySMS distant

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

Créer init script pour démarrer/arrêter les boîtes kannel comme /etc/init.d/kannel

#!/bin/bash 
# Démarrer/arrêter les boîtes Kannel :Une boîte porteuse et une boîte SMS.

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

USER=canal
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

CHEMIN=$CHEMINBOX:$CHEMIN

case "$1" dans
Démarrer)
echo -n "Démarrage de la passerelle WAP :bearerbox"
$SSD --start --quiet --pidfile $PIDFILES/kannel_bearerbox.pid --exec $RB -- --pidfile $PIDFILES/kannel_bearerbox.pid $BB -- $CONF
echo -n "boite sms"
$SSD --start --quiet --pidfile $PIDFILES/canal_smsbox.pid --exec $RB -- --pidfile $PIDFILES/cannel_smsbox.pid $SB -- $CONF
dormir 3
écho "."
;;

arrêt)
echo -n "Arrêt de la passerelle WAP :"
echo -n "boite sms"
$SSD --stop --quiet --pidfile $PIDFILES/kannel_smsbox.pid --exec $RB
echo -n "porteur"
$SSD --stop --quiet --pidfile $PIDFILES/kannel_bearerbox.pid --exec $RB
écho "."
;;

statut)
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
;;

recharger)
# Nous n'avons pas encore de support pour cela.
sortie 1
;;

redémarrage|rechargement forcé)
0 $ d'arrêt
dormir 3
0 $ de début
;;

*)
echo "Utilisation :$0 {start|stop|status|reload|restart|force-reload}"
sortie 1

esac

sortie 0

Remarque : Le script ci-dessus est un init.d par défaut scénario pour Kannel. Cette configuration est appropriée pour un petit site exécutant Kannel sur une seule machine. S'il vous plaît, assurez-vous que les binaires Kannel peuvent être trouvés dans $BOXPATH ou ailleurs le long de $PATH . run_kannel_box doit être dans $BOXPATH .

Faites le /etc/init.d/kannel fichier exécutable

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

Démarrer le canal

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

Sortie :

Vérifier le canal bearerbox et smsbox état d'écoute

Vérifiez l'état de Kannel depuis l'intérieur de la boîte Linux

root@sms-gw :~# /etc/init.d/état du kannel

Utilisez http://192.168.10.38:13000/status?password=sms‑gw‑admin‑passwd URL du navigateur de la machine cliente Windows pour vérifier l'état

Envoi de SMS à l'aide de la passerelle SMS Kannel :

Nous pouvons envoyer des SMS à partir de n'importe quel navigateur de machine cliente en utilisant l'URL. Exemple :

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

La page Web affiche le code de réponse SMS Push 0 :Accepté pour livraison , ce qui indique que Kannel a accepté le SMS pour livraison au destinataire

Envoi de SMS depuis une boîte Linux en utilisant curl

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

Sortie :

Envoyer des SMS en utilisant le texte SMS à partir du fichier en utilisant curl

root@host1:~# echo "SMS du fichier utilisant 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]

Envoi de SMS par tuyauterie sortie vers curl

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

SMS reçu par l'appareil mobile

Remarque : Il y a quelques autres codes de réponse SMS Push de Kannel

Code d'état Corps du message Signification
202 0 :Accepté pour la livraison Le SMS a été accepté et est transmis à un chauffeur SMSC
202 3 :mis en file d'attente pour livraison ultérieure La boîte porteuse accepté et stocké le message dans une file d'attente pour livraison ultérieure
4xx (varie) Il y avait quelque chose qui n'allait pas dans la demande ou la configuration de Kannel, vérifiez la demande et la configuration de Kannel.
503 Échec temporaire, réessayez plus tard Il y a eu un échec temporaire, réessayez plus tard.

Vérification des journaux :

Nous trouverons le noyau Kannel bearerbox se connecte à /var/log/kannel/kannel.log fichier.

/var/log/kannel/access.log fichier enregistre les demandes d'accès réussies des clients.

Exemple de journal :

/var/log/kannel/smsbox.log enregistre la demande du client et les communications avec bearerbox.

Les journaux liés au modem GSM se trouvent dans /var/log/kannel/smsc01-gsm1.log fichier.

Niveaux de gravité du journal :

niveau journal directive de configuration dans chaque groupe de configuration dans kannel.conf le fichier définit le niveau de gravité du journal pour ce groupe et se connecte en conséquence dans fichier journal donné dans ce groupe . Les niveaux de journalisation sont :

0> débogage
1> infos
2> avertissement
3> erreur
4> paniquer

Conseils de sécurité :

  • admin-deny-ip et admin-allow-ip les directives définissent la liste des adresses IP autorisées ou interdites pour accéder au portail d'administration du canal. Chaque liste peut avoir plusieurs adresses séparées par ";" , "*" représente tous les nombres dans un octet. Exemple :si nous voulons autoriser 192.168.10.31 et que localhost peut accéder au portail d'administration et que toutes les autres adresses IP doivent être bloquées, les directives de configuration seront comme ci-dessous

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

  • De même box-deny-ip et box-allow-ip les directives définissent la liste des adresses IP autorisées à accéder à bearerbox . C'est utile quand on utilise plusieurs smsbox . Nous allons lister la smsbox Adresses IP dans box‑allow‑ip pour accéder à bearerbox programme.
  • user-deny-ip et user-allow-ip sont utilisés pour autoriser/refuser l'adresse IP de l'utilisateur.
  • Il est préférable d'utiliser la directive de refus puis d'autoriser une adresse IP sélective pour chaque type de contrôle d'accès.
  • Utilisez un nom d'utilisateur/mot de passe très sécurisé pour toutes les options de nom d'utilisateur/mot de passe affichées dans le kannel.conf fichier.

Références :

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


Debian
  1. Comment installer Webmin sur Debian 10/11

  2. Sécurisez Apache2 avec Let's Encrypt SSL sur Debian 10/11

  3. Sécurisez Nginx avec Let's Encrypt SSL sur Debian 10/11

  4. Comment installer le bureau XFCE sur Debian 10/11

  5. Installer le serveur Wireguard sur Debian 10/11

Comment installer le dernier PHP 8.1 sur Debian 11/10

Comment installer l'outil d'administration Webmin sur Debian 10/11

Comment installer plusieurs versions de PHP avec Apache sur Debian 11/10

Comment installer le serveur SVN sur Debian 11/10

Intégration de PlaySMS Kannel SMS Gateway sur NGINX + Debian

Comment installer l'outil de surveillance Zabbix sur Debian 11/10