华为 E3372s + Linux (Rasbian),传入连接问题

华为 E3372s + Linux (Rasbian),传入连接问题

我有一个在 Raspberry Pi 2+ 上运行的基于 Linux 的操作系统 (Rasbian),它正在使用华为E3372s用于互联网连接的 4G/LTE USB 棒。

我的所有出站连接都工作正常(使用 usb_modeswitch-ruling 和 Udev/rules.d 更改了华为 USB 模式),但我无法接收到 Raspi 的任何类型的入站连接。传入功能不起作用

无法接收我使用 Raspbian 软件包发行版提供的工具从日志中实时跟踪的任何数据包或连接。

我已经与我的 4G ISP 确认,允许双向流量的扩展服务已启用、重置,并且他们对我的 3G/4G 订阅有很多了解,从他们的端完美工作,但我无法接收任何数据包拉斯皮。

华为E3372s(与大多数使用拨号方式的旧棒不同wvdial)使用CDC_ETH驱动程序系统,它为系统创建一个类似以太网的设备(在本例中为 ETH1),并且在这种情况下应该可以完美地工作。

我已经清除、重新创建、测试、修改、重新清除并再次使用 IPTables 完成了所有需要的任务,多次检查、修改和测试了路由,并确认不存在阻止通过华为 USB 记忆棒连接的已知阻塞系统,尽管有功能齐全的服务正在运行,但我仍然无法接收到我的系统的 Ping。

我还检查了更简单和直接的区域,例如主机允许/拒绝规则,但没有运气。它也不是 APN 名称,因为华为内部配置的所有设置都已使用其 Web 界面正确设置。

然而,我在随机论坛中偶尔遇到过,华为 CDC_ETH 解决方案在处理与其驱动程序的传入连接时可能存在缺陷。

如果你们中有人遇到过 Debian/Rasbian/Linux 传入连接问题华为E3372s或相关3G/4G USB产品使用CDC_ETH并找到了这个问题的解决方案

答案1

您不需要固件更新,但您确实需要一个已找到的模式开关和一个您尚未找到的拨号器。以下配置文件,取自NVDC 内容 网络、虚拟化和数据中心内容可以开箱即用。如果不使用每个作为模板并进行调整,直到它开始工作:

/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

用法

  1. /dev/gsmmodem创建一个从到 的链接/dev/ttyUSB2,即调制解调器。
  2. 拨通外界的电话。请注意,您每次都必须执行此操作:

    wvdial >/dev/null 2>&1 &
    
  3. 将以下内容添加到系统的本地启动脚本区域:

    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
    }
    

解释

正如我所解释的在之前的帖子中,GSM 调制解调器始终具有两个或多个部件,在此模型中为 3 个部件。

  • 存储区域,类似于 USB 记忆棒。
  • 用于连接多个设备的无线以太网适配器。
  • PPP 拨号器,以便您的无线提供商知道您是付费客户,并可以根据需要向您收取超额费用。既然您可以证明您是付费客户,由于PPPoE需要身份验证,您可以使用协商的IP地址访问互联网。

第 1 条和第 2 条是通过etc/modeswitch.conf配置文件控制的。12d1可以这么说,是供应商 MAC 地址。使用本地脚本创建 MAC 地址的其余部分。 12:D1:14:FE,最终成为存储设备,12:D1:15:06最终成为调制解调器。如果不使用本地脚本问题usb_modeswitch -s 15 -I -H -c /etc/usb_modeswitch.conf

注意:默认情况下,即没有模式开关的 Linux 只能看到存储设备,这就是 OP 无法看到或使用 PPP 拨号器或无线设备的原因


使用模式开关打开调制解调器后,拨号,或其众多替代品之一,控制对外部世界的访问。当调制解调器处于调制解调器模式时,您最终将看到类似以下内容的输出:

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  P-t-P: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)

发行时ifconfig

答案2

我猜这是一个 NAT 问题。即使 ISP 没有对连接进行 NAT,华为也会对eth1接口使用 NAT。

华为基本上有两种模式:

  • 高联,它使用 NAT 并提供以太网接口。
  • 非高链接,其中 PPP 或 NDIS 用于连接到移动提供商。

有很多教程如何通过刷新另一个固件来在两种模式之间进行更改。但是,由于在此过程中您可能会损坏调制解调器,因此我不会发布特定链接。

答案3

就我而言,我发现这就是我需要的 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"

使用此命令运行并使调制解调器工作。

sudo usb_modeswitch -s 15 -I -H -c /etc/usb_modeswitch.d/huawei_e3372.conf

答案4

即使 LTE ISP 或华为正在进行 NAT,也有一个解决方法ssh -R:如果您在互联网上拥有一台服务器,您可以通过 ssh 转发您的端口,例如对于 Tomcat:

ssh -R 4080:localhost:8080 my.cloud.server

并访问 pi 像

http://my.cloud.server:4080

OpenVPN 应该也能工作。

相关内容