“ip route show”的输出似乎不完整:没有默认路由,但无论如何都可以访问互联网

“ip route show”的输出似乎不完整:没有默认路由,但无论如何都可以访问互联网

在我的 Android 手机上,我有一个在用户空间中运行的 Debian 系统(apt、GNU 工具和其他软件在 chroot 中运行,可通过 ssh 访问),路由表似乎不完整。

输出ip route -all -details show

unicast 192.168.2.0/24 dev wlan0 proto kernel scope link src 192.168.2.108 
unicast 192.168.43.0/24 dev p2p-p2p0-0 proto kernel scope link src 192.168.43.1 

输出ip route get 1.1.1.1

1.1.1.1 via 192.168.2.1 via ??? ??? dev wlan0 src 192.168.2.108 
    cache 

它从哪里来192.168.2.1?这确实是正确的网关,但路由表输出没有显示它。我也可以到达外部地址。

质疑我的理智,我尝试了另一个工具,当它给我相同的输出时,我找到了一种直接询问内核的方法:

$ route -v
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
192.168.2.0     0.0.0.0         255.255.255.0   U     0      0        0 wlan0
192.168.43.0    0.0.0.0         255.255.255.0   U     0      0        0 p2p-p2p0-0

$ cat /proc/net/route
Iface   Destination Gateway     Flags   RefCnt  Use Metric  Mask        MTU Window  IRTT
wlan0   0002A8C0    00000000    0001    0   0   0   00FFFFFF    0   0   0
p2p-p2p0-0  002BA8C0    00000000    0001    0   0   0   00FFFFFF    0   0   0

该设备正在“WiFi桥接”模式下运行,连接到WiFi网络并同时提供热点;因此有两个本地网络。内核是:

$ uname -a
Linux localhost 4.1.18-g0fcbc9f #1 SMP PREEMPT Thu Dec 28 10:57:06 CST 2017 armv7l GNU/Linux

这个神奇的默认路由来自哪里?

答案1

标准ip route程序不知道选项-all-details,因此您可能在这里有一个 Android 特定版本。

表中可能存在默认路由条目以外的路由条目。

假设您的ip命令与标准兼容ip,请运行

ip rule

您至少应该看到一个表格列表

0:      from all lookup local 
32766:  from all lookup main 
32767:  from all lookup default 

然后你可以检查它们中的每一个

ip route show table 32767

上面列表中的表编号依此类推。

相关内容