使用 rmnet_data0 接口设置数据调用时遇到问题

使用 rmnet_data0 接口设置数据调用时遇到问题

我正在尝试通过接口建立数据呼叫rmnet_dataX,该接口指的是通过插入的卡进行蜂窝连接,但这样做时遇到问题。我执行以下操作

ifconfig rmnet_data0 up

然后我静态分配一个IP

rmnet_data0 Link encap:UNSPEC  HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
          inet addr:10.246.68.132  Mask:255.0.0.0
          UP RUNNING  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)

在路由表中添加默认路径

ip ro add default via 10.246.68.132 dev rmnet_data0

添加 DNS 服务器

echo "nameserver 8.8.4.4" >> /etc/resolv.conf

设置 NAT 规则

iptables -t nat -D POSTROUTING -o rmnet_data0 -j MASQUERADE

路由表

netstat -r 

Kernel IP routing table
Destination     Gateway         Genmask         Flags   MSS Window  irtt Iface

default         10.246.68.132   0.0.0.0         UG        0 0          0 rmnet_data0
10.0.0.0        *               255.0.0.0       U         0 0          0 rmnet_data0
192.168.225.0   *               255.255.255.0   U         0 0          0 bridge0
ping google.com // fails

另外,默认路径实际上只是表示到达网关 IP 的数据包被路由到外部网络,在这种情况下是网络数据吗?

鉴于此,NAT 规则真的需要吗?

答案1

好的,一些网络基础知识(请阅读详细信息,网上有大量资源):

  • 路由表既适用于源自本机的数据包,也适用于从其他机器传入并转发的数据包(需要为此启用转发)。所以路由表是总是任何网络所必需的。

  • 仅当 (1) 来自其他计算机的数据包转发到您的蜂窝网络,并且 (2) 您的蜂窝网络仅识别单个客户端(通常是这种情况)时,才需要网络地址转换 (NAT),并且您需要假装来自其他计算机的数据包来自此计算机,而不是来自其他计算机。

  • 让它工作的步骤首先是让它在这台计算机上工作。如果您确实需要转发和 NAT,那就是第二步。所以最初没有防火墙规则。

  • 您需要运行处理此特定接口的特定 DHCP 客户端。详细信息取决于您的系统; systemd、网络管理器或遗留样式配置等的配置都不同。找出您的系统上运行的内容,谷歌“使用 systemd 设置 DHCP”或类似内容。

  • 对于 DHCP,通常在接口启动时触发 DHCP 客户端,然后 DHCP 客户端在接口上广播一条消息“你好,我是新来的,请给我一个 IP 地址和附加信息”。 DHCP 服务器应答该广播,并告诉您 IP、网关以及可能的更多信息。然后 DHCP 客户端程序使用此信息来设置 IP 地址、路由表等。有些蜂窝网络使用这种方式,有些则使用不同的方式。我不知道你的移动电话提供商是做什么的。

相关内容