GNU/Linux >> Tutoriales Linux >  >> Debian

Puerta de enlace SMS de Kannel en Debian 10/11

Canal:

Kannel es una puerta de enlace WAP y SMS de código abierto para redes GSM. Además, Kannel puede enviar/recibir SMS usando un módem serial o USB GSM. Se puede acceder a través de la API HTTP y se puede utilizar para enviar SMS masivos, OTP, etc.

Entonces, Kannel tiene tres programas principales llamados cajas:bearerbox , buzón de sms , caja de transferencia .

  • Interfaces Bearerbox hacia los teléfonos. Acepta mensajes WAP y SMS de los teléfonos y los envía al resto de buzones.
  • SMSbox maneja la funcionalidad de puerta de enlace de SMS.
  • WAPbox maneja la funcionalidad de puerta de enlace WAP.

Es posible tener varios SMSboxes y varios WAPboxes en diferentes hosts que le permitan manejar una carga más grande.

Kannel también admite la integración de bases de datos y admite mysql , pgsql , sdb , mssql , sqlite3 , oráculo , redis y casandra .

Kannel tiene una amplia gama de compatibilidad con módem GSM; además, cualquier módem GSM al que se pueda acceder a través del puerto serie o USB con el controlador adecuado y que admita el comando AT se usará con Kannel.

Prepárese para instalar Kannel SMS Gateway:

Aquí vamos a instalar la última versión estable 1.4.5 de Kannel SMS Gateway desde el archivo tar de origen en Debian 10 (buster) . Aquí configuraremos los componentes principales:bearerbox y smsbox el que se utiliza para SMS Gateway.

Compruebe la versión del sistema operativo

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

Salida:

Conecte el módem USB con el host Linux y verifique si detecta el módem emitiendo lsusb comando

root@sms-gw:~# lsusb

Salida:

El módem ha detectado en el bus 2.

Ahora tenemos que encontrar en qué TTY está conectado el módem

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

Salida:

Vemos que el módem está conectado en /dev/ttyUSB0 y /dev/ttyUSB1 .Por lo general, la velocidad en baudios de esos módems es 9600 o 115200.

Hay una herramienta útil wvdial , para identificar el TTY USB y la velocidad en baudios de un módem. dial wv generalmente se usa como un marcador PPP de línea de comando para usar Internet móvil.

Instale wvdial para encontrar el TTY USB y la velocidad en baudios del módem.

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

Problema wvdialconf comando para descubrir el TTY y la tasa de baudios del módem

root@sms-gw:~# wvdialconf

Salida:

De la salida encontramos que el módem está conectado en /dev/ttyUSB0 y velocidad de transmisión id 9600. wvdialconf también escribe la configuración básica del módem en /etc/wvdial.conf archivo.

Ahora instale las dependencias necesarias para 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

Instalando Kannel SMS Gateway:

Descargue el código fuente desde 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

Descomprima el archivo e ingrese al directorio de origen

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

Ejecute configurar archivo con el prefijo del directorio de inicio de kannel y start-stop-deamon, aquí estamos usando /usr/local/kannel como directorio de inicio de kannel

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

También podemos deshabilitar el wapbox ya que no lo usaremos

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

Después de completar con éxito configure ejecutar el script, compilar el paquete

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

Instalar los programas con archivos de datos y documentación

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

Instalará los binarios, bibliotecas y documentos necesarios en diferentes directorios en /usr/local/kannel/ ubicación.

Nota: Si encuentra algún problema mientras hacer podemos limpiar o desinstalar y empezar de nuevo. Para limpiar ejecuta make clean , para desinstalar ejecute make uninstall comando.

Ahora crea etc , correr y registrar directorios

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

Cree el archivo de configuración de kannel /usr/local/kannel/etc/kannel.conf con los siguientes contenidos

##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: obtener URL directivas de configuración en el sms-servicio El grupo indica el estilo de llamada de la API HTTP del servidor HTTP remoto. Ejemplo:para servidor PlaySMS remoto

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

Crear inicio script para iniciar/detener los cuadros de kannel como /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: El script anterior es un init.d predeterminado Guión para Kannel. Esta configuración es apropiada para un sitio pequeño que ejecuta Kannel en una sola máquina. Por favor, asegúrese de que los binarios de Kannel se puedan encontrar en $BOXPATH o en otro lugar a lo largo de $PATH . ejecutar_kannel_box tiene que estar en $BOXPATH .

Haga el /etc/init.d/kannel archivo ejecutable

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

Iniciar canal

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

Salida:

Comprobar canal bearerbox y smsbox estado de escucha

Verifique el estado de Kannel desde el interior de la caja de Linux

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

Utilice http://192.168.10.38:13000/status?password=sms‑gw‑admin‑passwd URL del navegador de la máquina cliente de Windows para comprobar el estado

Enviar SMS usando Kannel SMS Gateway:

Podemos enviar SMS desde el navegador de cualquier máquina cliente usando URL. Ejemplo:

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

La página web muestra el código de respuesta SMS Push 0:Aceptado para entrega , que indica que Kannel ha aceptado el SMS para su entrega al destinatario

Envío de SMS desde el cuadro de Linux 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"

Salida:

Enviar SMS usando texto SMS desde un archivo usando 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]

Envío de SMS por tubería salida a 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@-

SMS recibidos por el dispositivo móvil

Nota: Hay algunos códigos de respuesta SMS Push más de Kannel

IP de host de SMS-GW 192.168.10.38
IP del host del cliente de Windows 192.168.10.31
IP del host del cliente Linux 192.168.10.37
Modelo de módem GSM Módem USB Huawei E303 3G/GSM

Comprobación de registros:

Encontraremos Kannel core bearerbox inicia sesión en /var/log/kannel/kannel.log archivo.

/var/log/kannel/access.log El archivo registra las solicitudes de acceso exitosas de los clientes.

Registro de ejemplo:

/var/log/kannel/smsbox.log registra la solicitud del cliente y las comunicaciones con bearerbox.

Los registros relacionados con el módem GSM se encontrarán en /var/log/kannel/smsc01-gsm1.log archivo.

Niveles de gravedad del registro:

nivel de registro directiva de configuración en cada grupo de configuración en kannel.conf El archivo define el nivel de gravedad del registro para ese grupo y registra en consecuencia en archivo de registro dado en ese grupo . Los niveles de registro son:

0> depurar
1> información
2> advertencia
3> error
4> pánico

Consejos de seguridad:

  • administrador-denegar-ip y admin-permitir-ip Las directivas definen la lista de direcciones IP permitidas o prohibidas para acceder al portal de administración de kannel. Cada lista puede tener varias direcciones separadas por “;” , “*” representa todos los números en un octeto. Ejemplo:si queremos permitir 192.168.10.31 y localhost puede acceder al portal de administración y todas las demás direcciones IP deben bloquearse, las directivas de configuración serán como se muestra a continuación

administrador-denegar-ip =“*.*.*.*”
administrador-permitir-ip =“127.*.*.*; 192.168.10.31”

  • Del mismo modo box-deny-ip y box-allow-ip Las directivas definen una lista de direcciones IP a las que se les permite acceder a bearerbox . Es útil cuando usamos múltiples smsbox . Listaremos el smsbox Direcciones IP en box-allow-ip para acceder a bearerbox programa.
  • usuario-denegar-ip y usuario-permitir-ip se utilizan para permitir/denegar la dirección IP del usuario.
  • Es mejor usar la directiva de denegación y luego permitir una dirección IP selectiva para cada tipo de control de acceso.
  • Utilice un nombre de usuario/contraseña muy seguro para todas las opciones de nombre de usuario/contraseña que se muestran en kannel.conf archivo.

Referencias:

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


Debian
  1. Cómo instalar Webmin en Debian 10/11

  2. Asegure Apache2 con Let's Encrypt SSL en Debian 10/11

  3. Asegure Nginx con Let's Encrypt SSL en Debian 10/11

  4. Cómo instalar el escritorio XFCE en Debian 10/11

  5. Instale el servidor OpenVPN en Debian 11/Debian 10

Cómo instalar el último PHP 8.1 en Debian 11/10

Cómo instalar la herramienta de administración de Webmin en Debian 10/11

Cómo instalar varias versiones de PHP con Apache en Debian 11/10

Cómo instalar el servidor SVN en Debian 11/10

Integración de PlaySMS Kannel SMS Gateway en NGINX+Debian

Cómo instalar la herramienta de monitoreo Zabbix en Debian 11/10

    Código de estado Cuerpo del mensaje Significado
    202 0:Aceptado para entrega El SMS ha sido aceptado y se envía a un conductor de SMSC
    202 3:En cola para entrega posterior La caja del portador aceptó y almacenó el mensaje en una cola para entregarlo más tarde
    4xx (varía) Hubo algo mal en la solicitud o configuración de Kannel, verifique la solicitud y la configuración de Kannel.
    503 Error temporal, vuelva a intentarlo más tarde Hubo un error temporal, inténtelo de nuevo más tarde.