我的 Linux 机器上的输出 /sbin/route -n
没有提到127.xxx地址范围,它都没有提到罗界面。尽管如此ping localhost
,并且ssh localhost
工作正常。
计算机如何知道到达的路线127.0.0.1如果它不在路由表中?
答案1
(复制自https://serverfault.com/a/683542/68920)
该route
命令已被弃用,不应再使用。
新方法是使用 iproute 命令集,这些命令都通过ip
后跟一个对象来调用。例如:
$ ip route show
default via 192.168.1.254 dev eth0
192.168.0.0/23 dev eth0 proto kernel scope link src 192.168.1.27
现在,我听到你说,这基本上是相同的信息!是的,但这不是故事的全部。在路由表(是的,复数)之前是规则表:
$ ip rule show
0: from all lookup local
32766: from all lookup main
32767: from all lookup default
我们之前看的路由表就是main
路由表。您的问题涉及local
路由表,其中包含与本地连接相关的所有路由。该表可以如下所示:
$ ip ro sh table local
broadcast 127.0.0.0 dev lo proto kernel scope link src 127.0.0.1
local 127.0.0.0/8 dev lo proto kernel scope host src 127.0.0.1
local 127.0.0.1 dev lo proto kernel scope host src 127.0.0.1
broadcast 127.255.255.255 dev lo proto kernel scope link src 127.0.0.1
broadcast 192.168.0.0 dev eth0 proto kernel scope link src 192.168.1.27
local 192.168.1.27 dev eth0 proto kernel scope host src 192.168.1.27
broadcast 192.168.1.255 dev eth0 proto kernel scope link src 192.168.1.27
(您可以缩写ip
选项/参数,只要它们仍然是唯一的,因此ip ro sh
与 相同ip route show
。)
在这里您可以看到环回路由。
你可以用它做各种奇妙的事情基于策略的路由,我建议你阅读Linux 策略路由作者:Matthew G. Marsh,提供您需要的所有信息。