Huawei E3372s + Linux (Rasbian), problema de conexiones entrantes

Tengo un sistema operativo basado en Linux (Rasbian) que se ejecuta en Raspberry Pi 2+ y está utilizando un Stick USB 4G / LTE Huawei E3372 para connection a Internet.

Todas mis conexiones de salida funcionan perfectamente (el modo USB de Huawei cambió usando usb_modeswitch-ruling y Udev / rules.d) pero no puedo recibir ningún tipo de connection entrante al Raspi. Entrante simplemente no está funcionando .

No puedo recibir ningún package o connection, que he rastreado en time real y desde loggings utilizando las herramientas proporcionadas por las distribuciones de packages de Raspbian.

Ya he confirmado con mi 4G ISP que el service extendido que permite el tráfico bidireccional está habilitado, reseteado y gran parte de su conocimiento, a mi suscripción 3G / 4G, trabajando perfectamente desde su final, pero no puedo recibir ningún package con el Raspi.

El Huawei E3372s (a diferencia de la mayoría de los dispositivos antiguos que usan marcado como wvdial ) usa el sistema de controller CDC_ETH que crea un dispositivo tipo ethernet para el sistema (ETH1 en este caso) y debería funcionar en este caso sin problemas.

He limpiado, recreado, probado, modificado, re-borrado y de nuevo hice todas las tareas necesarias con IPTables, comprobé, modifiqué y probé la ruta varias veces y confirmé que no hay sistemas de locking conocidos que impidan la connection a través del dispositivo USB Huawei. , sin embargo, aún no puedo recibir ping en mi sistema, aunque hay services completamente funcionales en ejecución.

También he comprobado áreas más simples y sencillas, como los hosts, permiten / niegan reglas y no han tenido suerte con ellos. Tampoco es un nombre APN, ya que todas las configuraciones con la configuration interna del Huawei se han configurado correctamente utilizando su interfaz web.

Sin embargo, he encontrado en algunas ocasiones en foros aleatorios que la solución Huawei CDC_ETH puede tener fallas manejando las conexiones entrantes con su controller.

En este momento, estoy en el desesperado nivel de tratar de descubrir por qué no puedo recibir conexiones entrantes.

Si alguno de ustedes tiene experiencia con Debian / Rasbian / Linux problemas de connection entrante con Huawei E3372s o producto 3G / 4G USB relativo que usan CDC_ETH y han encontrado una solución a este problema, cualquier consejo y ayuda será muy apreciada.

Solutions Collecting From Web of "Huawei E3372s + Linux (Rasbian), problema de conexiones entrantes"

No necesita una actualización de firmware, pero sí necesita un modulador de modos, que haya encontrado, y un marcador, que no ha encontrado. Los siguientes files de configuration, tomados de NVDC Stuff Networking, Virtualization y Data Center Stuff pueden funcionar de la caja. Si no, utilice cada uno como plantilla y ajuste hasta que empiece a funcionar:

/etc/usb_modeswitch.conf

 DefaultVendor=0x12d1 DefaultProduct=0x14fe TargetVendor= 0x12d1 TargetProduct= 0x1506 MessageContent="55534243123456780000000000000011062000000100000000000000000000" 

/etc/wvdial.conf

 [Dialer Defaults] Init1 = ATZ Init2 = ATQ0 V1 E1 S0=0 Init3 = AT+CGDCONT=1,"IP","internet.t-mobile.cz" Stupid Mode = 1 ISDN = 0 Modem Type = Analog Modem New PPPD = yes Phone = *99***# Modem = /dev/gsmmodem Username = { } Password = { } Baud = 9600 

Uso

  1. Cree un enlace de /dev/gsmmodem a /dev/ttyUSB2 , que es el módem.
  2. Marca el mundo exterior. Tenga en count que debe hacer esto cada vez:

     wvdial >/dev/null 2>&1 & 
  3. Agregue lo siguiente al área de creación de scripts local de su sistema:

     MODEM_STORAGE="12d1:14fe" MODEM_MODEM="12d1:1506" # 0 = storage, 1= modem MODEM_MODE=0 check_modem_mode () { echo -n "Checking modem presence... " lsusb | grep --quiet "$MODEM_STORAGE" if [ $? -eq 0 ]; then MODEM_MODE=0 echo "OK: modem in mass storage mode" else lsusb | grep --quiet "$MODEM_MODEM" if [ $? -eq 0 ]; then MODEM_MODE=1 echo "OK: modem in modem mode" else echo "ERROR: modem not found" exit 1 fi fi } set_modem_mode () { while [ $MODEM_MODE -eq 0 ] do echo -n "Setting modem mode... " usb_modeswitch -s 15 -I -H -c /etc/usb_modeswitch.conf >/dev/null 2>&1 lsusb | grep --quiet "$MODEM_MODEM" if [ $? -eq 0 ]; then MODEM_MODE=1 echo "OK" else echo "FAILED" fi done } 

Explicación

Como expliqué en una publicación anterior , un módem GSM siempre tiene dos o más partes, en el caso de este model 3 partes.

  • Un área de almacenamiento, similar a una memory USB.
  • Un adaptador Ethernet inalámbrico para conectar varios dispositivos a él.
  • Un marcador PPP, para que su proveedor de services inalámbricos sepa que usted es un cliente que paga, y puede cobrarle por excedentes cuando sea necesario. Como puede probar que es un cliente que paga, porque PPPoE requiere authentication, puede usar la dirección IP negociada para acceder a Internet.

Las viñetas 1 y 2 se controlan mediante el etc/modeswitch.conf configuration etc/modeswitch.conf . 12d1 es la dirección MAC del proveedor, por así decirlo. Usando el script local, se crea el rest de la dirección MAC. 12:D1:14:FE , termina como el dispositivo de almacenamiento, y 12:D1:15:06 termina siendo el módem. Si no se usa el script local, usb_modeswitch -s 15 -I -H -c /etc/usb_modeswitch.conf

Nota: por defecto, es decir, sin modewitch, Linux solo ve el dispositivo de almacenamiento, por lo que el OP no puede ver ni usar el marcador PPP o el dispositivo inalámbrico .


Una vez que el módem se enciende utilizando el modificador de modos, wvdial o uno de sus muchos reemploops, controla el acceso al mundo exterior. Con el módem en modo módem, finalmente verá una salida similar a:

 wwan0 Link encap:Ethernet HWaddr 58:2c:80:13:93:13 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:0 (0.0 B) TX bytes:0 (0.0 B) ppp0 Link encap:Point-to-Point Protocol inet addr:10.83.249.176 PtP:10.64.64.64 Mask:255.255.255.255 UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1500 Metric:1 RX packets:4265 errors:0 dropped:0 overruns:0 frame:0 TX packets:6699 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:3 RX bytes:506706 (494.8 KiB) TX bytes:600991 (586.9 KiB) 

al emitir ifconfig

Supongo que este es un problema NAT. Incluso si el ISP no está NATiendo las conexiones, el Huawei está usando NAT para la interfaz eth1 .

El Huawei tiene básicamente dos modos:

  • hi-link , que usa NAT y proporciona una interfaz Ethernet.
  • no hi-link , donde se usa PPP o NDIS para conectarse al proveedor de telefonía mobile.

Hay muchos tutoriales sobre cómo cambiar entre los dos modos al actualizar otro firmware. Sin embargo, dado que puede bloquear su módem durante este process, me abstengo de publicar un enlace en particular.

En mi caso, encontré que esto es lo que necesito para la configuration de usb_modeswitch

 cat /etc/usb_modeswitch.d/huawei_e3372.conf # modeswitch config file for the huawei e3372 DefaultVendor=0x12d1 DefaultProduct=0x1f01 TargetVendor= 0x12d1 TargetProduct= 0x14dc MessageContent="55534243123456780000000000000011062000000100000000000000000000" 

Con este command para ejecutar y hacer que el módem funcione.

 sudo usb_modeswitch -s 15 -I -H -c /etc/usb_modeswitch.d/huawei_e3372.conf 
 sudo usb_modeswitch -v 12d1 -p 1f01 -V 12d1 -P 14DC -J 

-J, --huawei-new-mode apply a special procedure

Esto funciona para mí para cambiar al dispositivo de módem

 lsub Bus 001 Device 028: ID 12d1:14dc Huawei Technologies Co., Ltd. E33372 LTE/UMTS/GSM HiLink Modem/Networkcard 

Desde un dispositivo de almacenamiento masivo

 Bus 001 Device 027: ID 12d1:1f01 Huawei Technologies Co., Ltd. E353/E3131 (Mass storage mode) 

Este es el sistema en el que estoy trabajando

 uname -a Linux aaron-pc 4.9.63-1-MANJARO #1 SMP PREEMPT Sat Nov 18 14:12:41 UTC 2017 x86_64 GNU/Linu