AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / unix / 问题 / 739481
Accepted
gorogm
gorogm
Asked: 2023-03-12 16:10:38 +0800 CST2023-03-12 16:10:38 +0800 CST 2023-03-12 16:10:38 +0800 CST

没有 MAC 地址的 USB LTE 调制解调器?

  • 772

我正在使用时下流行的 Huawei Brovi E3372-325 LTE USB Stick 将一台 Linux 机器连接到互联网。特殊要求是传入的 ssh/ping/NTP/... 连接必须到达我的 linux 操作系统。

状态是,使用usb_modeswitch -X和option driverI 可以调出 3 个 ttyUSB 接口,并使用 连接成功wvdial。但由于某种原因,ifconfig没有列出 ppp0 接口的硬件/MAC 地址,同一 APN 网络上的设备无法 ping 我的 IP 地址。我认为原因不是 ISP 阻塞,因为我的其他设备在网络上可以 ping 通。

的输出ip addr

19: ppp0: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UNKNOWN group default qlen 3
    link/ppp 
    inet 10.250.0.112 peer 10.64.64.64/24 scope global ppp0
       valid_lft forever preferred_lft forever
  1. 如果我没记错的话,我现在不使用 RNDIS。我是对的吗,一般来说,流行的 RNDIS 协议不适合我的用例,因为这会创建一个额外的本地网络,使得将传入连接转发到操作系统变得更加棘手?ping 可能从外部工作,因为它由 USB 调制解调器本身回答,但传入的 ssh 会失败。
  2. ppp0 没有 MAC 地址可能是什么原因?这怎么可能?我应该分配一个吗?这可能是其他设备无法 ping 通它的 IP 的原因吗?如何解决这种情况?
serial-port
  • 1 1 个回答
  • 15 Views

1 个回答

  • Voted
  1. Best Answer
    Marcus Müller
    2023-03-12T17:25:30+08:002023-03-12T17:25:30+08:00

    如果我没记错的话,我现在不使用 RNDIS。

    RNDIS 是 Windows 特定的网络接口驱动程序 API。嗯,这与你所做的无关,对吧?

    ppp0 没有 MAC 地址可能是什么原因?这怎么可能?

    MAC地址是一个以太网概念;PPP 不是以太网 :)

    PPP 的帧确实包含一个地址——但它只有一个字节长,并且总是设置为 0xFF,PPP 是一种点对点协议,你不需要更多的地址(你知道你在和谁说话——另一端)。

    我认为原因不是 ISP 阻塞,因为我的其他设备在网络上可以 ping 通。

    良好的调试。但是请注意,移动网络运营商 (MNO) 通常采用运营商级 NAT 将大量用户隐藏在一个公共 IPv4 地址后面——甚至在理论上,除了有电话的人之外,其他任何东西都被忽略——只有 2³² 个可能的 IP 地址(忽略任何“特殊”地址),并且电话的数量大致与人类的数量一样多,因此大约一半的电话只有 IPv4 地址。这里的信息是,如果您希望您的移动设备可以在全球范围内访问,则需要涉及一些额外的基础设施(如 VPN 服务器),或者您需要使用 IPv6。我建议使用 IPv6——由于市场力量,对于大多数移动网络运营商来说,使用 IPv6 流量进出互联网更便宜,因此他们可能会优先考虑这一点。

    不管怎样,你的问题是为什么它对你不起作用——事情是这样的:这是运营商级的 NAT(你在那个接口上的 IPv4 地址是私有的!),保证不同的东西既没有保证也没有太多意义订户可以直接相互联系。不过,很酷,它适用于您的其他设备。

    有点担心的是,您只分配了一个 IPv4 地址,而不是 IPv6 地址(或整个 IPv6 子网)。这可能意味着您的 Linux 机器的 pppd 未配置为接受 IPv6 或其他一些错误配置。

    但更现实的是:PPP 是一种……旧协议,与移动网络基础设施的运行方式完全无关。2.5G/GPRS/EDGE、3G/UMTS、4G/LTE、5G……等都是分组网络——你有一个直接传输IP分组的接口;您不会获得需要通过 PPP 建立数据包隧道的串行线路。
    那么,必须发生的事情是你的 USB 调制解调器连接到移动网络,获取 IP 地址,并将它通过 PPP 隧道获取的 IP 数据包放入,然后它似乎通过模拟串行链路放置到你的计算机?这是一种有趣的方式,至少可以说——也可以是 USB 网卡,开箱即用。事实上,这就是我手机上 USB 网络共享的工作方式,过去我的笔记本电脑上有内置调制解调器卡,也是如此。

    也许您的 USB 调制解调器有不同的操作模式,一个看起来像 1990 年代的拨号调制解调器模拟连接到提供 PPP 的 Internet 服务提供商,而另一种模式只是一个 IP 路由器?如果是这种情况,请使用后一种模式,并将其设置为将数据包转发到您的计算机。

    因此,无论哪种方式,您的调制解调器都会参与处理 IP 数据包;所以很可能这就是您的传入数据包丢失的地方。但是,也许您的其他设备名义上也使用相同的 APN ,但如果它们使用不同的方式连接到移动网络,则它们的数据包会在核心网络中走不同的路线,并且不会以相同的方式结束专用网络作为您的调制解调器;这里有很多不同之处,您的可见度为零。通常,您的 MNO 不会为您运营内部网络(除非您向他们付费——例如​​使用特殊的 M2M 订阅),而是互联网接入;如果您无法在本地通信,请通过互联网进行通信。为此,您需要一个可以连接的全球 IP 地址。

    如果你问我,是否需要相互沟通:

    • 使用 IPv6。这是您实际获得全球地址的最佳机会。仅当您确实需要时才回退到 IPv4。
    • 获取一些具有静态公共地址的服务器。您的用户设备会根据您的 MNO 的意愿分配一个新的 IP 地址。
    • 从您的每个设备建立到该公共地址的 VPN 连接——wireguard 是一种极好的、相对低功耗的方法。这可能已经解决了你所有的问题。
    • 如果你想在延迟方面变得聪明(大写 S),你可以在不同设备检测到它们可以相互直接通信时立即在它们之间添加额外的直接网络路径——这需要在端点运行一些软件,提供有关设备的地址信息您的设备提供的不同网络接口,以及理解这些接口的守护进程。
    • 5

相关问题

  • 在没有 kermit 和 lrzsz 的情况下通过串行检索文件

  • 如何防止为 cdc_acm 打开 DTR?

  • 在没有打开会话的情况下在后台运行 picocom

  • QEMU 4个以上的串口

  • 设置似乎没有 I/O 端口的 PCIe 串行卡

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    模块 i915 可能缺少固件 /lib/firmware/i915/*

    • 3 个回答
  • Marko Smith

    无法获取 jessie backports 存储库

    • 4 个回答
  • Marko Smith

    如何将 GPG 私钥和公钥导出到文件

    • 4 个回答
  • Marko Smith

    我们如何运行存储在变量中的命令?

    • 5 个回答
  • Marko Smith

    如何配置 systemd-resolved 和 systemd-networkd 以使用本地 DNS 服务器来解析本地域和远程 DNS 服务器来解析远程域?

    • 3 个回答
  • Marko Smith

    dist-upgrade 后 Kali Linux 中的 apt-get update 错误 [重复]

    • 2 个回答
  • Marko Smith

    如何从 systemctl 服务日志中查看最新的 x 行

    • 5 个回答
  • Marko Smith

    Nano - 跳转到文件末尾

    • 8 个回答
  • Marko Smith

    grub 错误:你需要先加载内核

    • 4 个回答
  • Marko Smith

    如何下载软件包而不是使用 apt-get 命令安装它?

    • 7 个回答
  • Martin Hope
    user12345 无法获取 jessie backports 存储库 2019-03-27 04:39:28 +0800 CST
  • Martin Hope
    Carl 为什么大多数 systemd 示例都包含 WantedBy=multi-user.target? 2019-03-15 11:49:25 +0800 CST
  • Martin Hope
    rocky 如何将 GPG 私钥和公钥导出到文件 2018-11-16 05:36:15 +0800 CST
  • Martin Hope
    Evan Carroll systemctl 状态显示:“状态:降级” 2018-06-03 18:48:17 +0800 CST
  • Martin Hope
    Tim 我们如何运行存储在变量中的命令? 2018-05-21 04:46:29 +0800 CST
  • Martin Hope
    Ankur S 为什么 /dev/null 是一个文件?为什么它的功能不作为一个简单的程序来实现? 2018-04-17 07:28:04 +0800 CST
  • Martin Hope
    user3191334 如何从 systemctl 服务日志中查看最新的 x 行 2018-02-07 00:14:16 +0800 CST
  • Martin Hope
    Marko Pacak Nano - 跳转到文件末尾 2018-02-01 01:53:03 +0800 CST
  • Martin Hope
    Kidburla 为什么真假这么大? 2018-01-26 12:14:47 +0800 CST
  • Martin Hope
    Christos Baziotis 在一个巨大的(70GB)、一行、文本文件中替换字符串 2017-12-30 06:58:33 +0800 CST

热门标签

linux bash debian shell-script text-processing ubuntu centos shell awk ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve