这是我的手机的网络配置(请注意,rndis0 表示 USB 网络接口)
~ $ ifconfig
Warning: cannot open /proc/net/dev (Permission denied). Limited output.
lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
unspec 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00 txqueuelen 1000 (UNSPEC)
rmnet_data2: flags=65<UP,RUNNING> mtu 1500
inet 100.145.149.154 netmask 255.255.255.252
unspec 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00 txqueuelen 1000 (UNSPEC)
rndis0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.90.238 netmask 255.255.255.0 broadcast 192.168.90.255
unspec 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00 txqueuelen 1000 (UNSPEC)
我可以 ping 连接 USB 电缆另一端的台式电脑的 IP
~ $ ping 192.168.90.175 # desktop computer's IP
PING 192.168.90.175 (192.168.90.175) 56(84) bytes of data.
64 bytes from 192.168.90.175: icmp_seq=1 ttl=64 time=0.486 ms
64 bytes from 192.168.90.175: icmp_seq=2 ttl=64 time=1.08 ms
^C
--- 192.168.90.175 ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1016ms
rtt min/avg/max/mdev = 0.486/0.787/1.088/0.301 ms
但是在手机上,我无法 ping 通我的台式计算机通过标准以太网端口连接到的路由器:
~ $ ping 192.168.2.1
connect: Network is unreachable
这是意料之中的,因为我的手机上有路由表
~ $ su
:/data/data/com.termux/files/home # ../usr/bin/route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
100.145.149.152 0.0.0.0 255.255.255.252 U 0 0 0 rmnet_data2
192.168.90.0 0.0.0.0 255.255.255.0 U 0 0 0 rndis0
但即使我更改手机上的路由表以添加默认网关,我仍然无法访问路由器
:/data/data/com.termux/files/home # ../usr/bin/route add default gw 192.168.90.175 dev rndis0
:/data/data/com.termux/files/home # ../usr/bin/route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 192.168.90.175 0.0.0.0 UG 0 0 0 rndis0
100.145.149.152 0.0.0.0 255.255.255.252 U 0 0 0 rmnet_data2
192.168.90.0 0.0.0.0 255.255.255.0 U 0 0 0 rndis0
:/data/data/com.termux/files/home # ping 192.168.2.1
connect: Network is unreachable
2|:/data/data/com.termux/files/home # ping -I rndis0 192.168.2.1
PING 192.168.2.1 (192.168.2.1) from 192.168.90.238 rndis0: 56(84) bytes of data.
From 192.168.90.238: icmp_seq=1 Destination Host Unreachable
From 192.168.90.238: icmp_seq=2 Destination Host Unreachable
也许我需要在电脑上配置一些东西,然后我就会去做。但从错误消息来看,似乎手机这边也存在问题:具体来说,手机似乎忽略了路由表中的默认网关条目。例如,当我在 ping 中不指定接口时,我得到“网络不可达”。当我指定接口时,我从手机的 IP 而不是默认网关 (192.168.90.175:) 的 IP 获得“目标主机不可达”,如上面的日志所示,它是可以到达/ping 的。