无法使用 Android Wi-Fi 网络共享访问互联网

无法使用 Android Wi-Fi 网络共享访问互联网

不确定这是否是发布此问题的正确地方。

我的问题其实很简单,我的 Android 设备使用数据连接,并且在此设备上设置了热点。

我将 Linux 机器连接到这个热点,没有问题。
我的电脑在 wlan0 上获取地址 192.168.1.234
我的 Android 设备在 wlan0 上是 192.168.1.1
=> wlan0 UP 192.168.1.1/24

从以下位置 ping 本地 wifi 地址两个都但是,我无法从我的电脑 ping 通互联网上的服务器。

我知道将流量从一侧转发到另一侧有某种方法,但我不知道该如何做。

我到目前为止所做的:在 Android 设备上

$ echo 1 > /proc/sys/net/ipv4/ip_forward
$ iptables -t nat -F
$ iptables -t nat -A POSTROUTING -j MASQUERADE

除了为特殊服务器添加路由外,电脑上没有什么特别的,我希望流量通过 wlan0。

Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
default         10.162.105.1    0.0.0.0         UG    0      0        0 eth0
10.162.105.0    *               255.255.255.0   U     0      0        0 eth0
158.x.x.x       192.168.1.1     255.255.255.255 UGH   0      0        0 wlan0
192.168.1.0     *               255.255.255.0   U     0      0        0 wlan0
192.168.25.0    *               255.255.255.0   U     0      0        0 vmnet1
192.168.29.0    *               255.255.255.0   U     0      0        0 vmnet8

在android端,我可以看到来自我的电脑的流量。

03:50:17.426155 IP 192.168.1.234 > 158.x.x.x: ICMP echo request, id 5782, seq 634, length 64
03:50:18.427529 IP 192.168.1.234 > 158.x.x.x: ICMP echo request, id 5782, seq 635, length 64
03:50:19.428445 IP 192.168.1.234 > 158.x.x.x: ICMP echo request, id 5782, seq 636, length 64
03:50:20.425667 IP 192.168.1.234 > 158.x.x.x: ICMP echo request, id 5782, seq 637, length 64
03:50:21.426491 IP 192.168.1.234 > 158.x.x.x: ICMP echo request, id 5782, seq 638, length 64
03:50:22.425759 IP 192.168.1.234 > 158.x.x.x: ICMP echo request, id 5782, seq 639, length 64
03:50:23.425759 IP 192.168.1.234 > 158.x.x.x: ICMP echo request, id 5782, seq 640, length 64

但从未看到回复,就像数据包永远不会离开 Android 设备一样。

我究竟做错了什么?

谢谢您的帮助。

答案1

我自己找到了答案。

问题出在 iptables 命令上。需要指定输出设备并设置转发策略。

iptables -t nat -A POSTROUTING -o rmnet_usb0 -j MASQUERADE
iptables -P FORWARD ACCEPT

此后,Linux 机器端就可以访问互联网了。希望这对处于同样境况的人有所帮助。

相关内容