Conexión permanente a Internet con módem 3G/4G

Fecha publicación
#
30
Dificultad
Intermedio
3 more properties
Publicado
tags
i40sys, industry 4.0, industry40.systems, industrial, plc, siemens, omron, ubuntu, linux, iot gateway, gateway, iot, internet of things, modem, 3G, 4G, modeswitch, internet, wvdial, SMS, iptraf, AT

Descripción

En este artículo se describe como configurar un módem 4G para el IoT Gateway. Este módem podemos tenerlo siempre conectado a Internet, o usar el envió de SMS contra este dispositivo para activar y desactivar la conexión cuando queramos tener acceso remoto al equipo.
En esta entrada te explicamos la primera parte, la de tener el módem siempre conectado y en el próximo vídeo nos centraremos en controlar la conexión vía SMS.

Configuración del módem

Empezamos por definirle al USB en que modo debe ser reconocido por el equipo. A esto se le llama configuración del “usb-modeswitch”.

usb-modeswitch

Instalamos el paquete:
Plain Text
apt install usb-modeswitch
para configurar el comportamiento del usb-modeswitch crearemos el seguiente fichero de configuración:

/etc/udev/rules.d/40-usb_modeswitch.rules

YAML
ATTR(idVendor}=="12d1", ATTR{idProduct}=="1446", RUN+="usb_modeswitch '%b/%k'"

# ttyUSB_utps_modem
SUBSYSTEMS=="usb", ATTRS{modalias}=="usb:v12D1p1001*", KERNEL=="ttyUSB*", ATTRS{bInterfaceNumber}=="00", ATTRS{bInterfaceProtocol}=="ff", SYMLINK+="modem0"
# ttyUSB_utps_diag
SUBSYSTEMS=="usb", ATTRS{modalias}=="usb:v12D1p1001*", KERNEL=="ttyUSB*", ATTRS{bInterfaceNumber}=="01", ATTRS{bInterfaceProtocol}=="ff", SYMLINK+="modem1"
# ttyUSB_utps_pcui
SUBSYSTEMS=="usb", ATTRS{modalias}=="usb:v12D1p1001*", KERNEL=="ttyUSB*", ATTRS{bInterfaceNumber}=="02", ATTRS{bInterfaceProtocol}=="ff", SYMLINK+="modem2"
Para que el dispositivo se reconozca se puede usar el siguiente comando y si no funciona también podemos reiniciar.
YAML
udevadm control --reload-rules && udevadm trigger
Después debemos ver que dentro de /dev deben aparecer varios dispositivos llamados /dev/modem* a través de los cuales podemos acceder a las diferentes funciones del módem.
Para saber más de cada uno de estos dispositivos podemos usar el comando:
YAML
udevadm info -a /dev/modem0

Conexión a Internet

Para esto instalaremos el paquet wvdial:
YAML
apt install wvdial
Para configurarlo, creamos los ficheros siguientes con el contenido indicado:

/etc/ppp/peers/wvdial

Bash
noauth
name wvdial
usepeerdns
defaultroute
replacedefaultroute

/etc/wvdial.conf

Bash
[Dialer Defaults]
Init1 = AT
Init2 = ATZ
Modem = /dev/ttyUSB0
Baud = 460800


[Dialer internet]
Init3 = AT+CGDCONT=1,"IP","inet.es"
Phone = *99***1#
ISDN = 1
Username =;
Password =;
Stupid Mode = on
Auto DNS = on
Auto Reconnect = on
New PPPD = yes

; [Dialer pin]
; Init2 = AT+CPIN="1234"
Fíjate que esta comentada la parte de introducción del PIN.
Por otro lado, también observa que el Init3 tiene la información de conexión del APN del operador que usamos nosotros. Nuestro APN es el “inet.es” cámbialo por el tuyo además de los usuarios y passwords asociados para la conexión, si hace falta.
Una vez tenemos esto listo, podemos usar estos comandos:
YAML
# ejecuta los comandos que hay dentro de defaults
wvdial

# introduce el PIN de la tarjeta SIM si has descomentado las líneas pertinentes que comentamos más arriba
wvdial pin

# para conectar a Internet
wvdial internet
Se puede usar el propio crontab para lanzar la conexión al iniciar el equipo si queremos estar siempre conectados:
Comando para editar crontab:
YAML
crontab -e
Contenido que debemos añadir a nuestro crontab:
Bash
@reboot /usr/bin/wvdial internet

Algunas notas para resolución de problemas

Problemas con el DNS

Una opción és eliminar el link a /etc/resolv.conf y en ocasiones lo encontraremos apuntando a ../run/systemd/resolve/stub-resolv.conf
YAML
rm /etc/resolv.conf
Se puede crear un fichero estático convencional para evitar que los automatismos del módem nos dejen el fichero inconsistente y esto genere problemas con el Zerotier u otros servicios vitales para los accesos remotos.
Por ejemplo,
YAML
nameserver 1.1.1.1
nameserver 1.0.0.1

Comprobar que wvdial ha lanzado pppd

YAML
ps ax | grep pppd

Consultar logs para ver la negociación de la conexión

YAML
journalctl -f

Además de los comandos típicos para monitorizar el enrutado de paquetes

YAML
ip -o a
ip route

O comprobar si se mueve tráfico por la interface del módem

YAML
iptraf-ng -d ppp0

VNSTAT - Monitorización del ancho de banda usado por el módem

Concretamente para saber esto lo que monitorizamos es el consumo del enlace PPP.
Primero instalamos vnstat:
YAML
apt install vnstat
Después editamos el fichero de configuración /etc/vnstat.conf y en la línia 5 donde se define la interface ponemos:
YAML
Interface "ppp0"
Una vez hecho esto con el siguiente comando sabremos el consumo acumulado en nuestro enlace:
YAML
vnstat -m
Si queremos recibir un correo automáticamente cada hora informando del consumo acumulado podemos poner lo siguiente en crontab:
Bash

59 * * * * vnstat -m