为什么Ubuntu中没有localhost的路由?

$ sudo docker run --rm ubuntu:14.04 route -n Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 0.0.0.0 172.17.42.1 0.0.0.0 UG 0 0 0 eth0 172.17.0.0 0.0.0.0 255.255.0.0 U 0 0 0 eth0 

这是不是意味着127.0.0.0/8被路由到172.17.42.1的网关而不是回送设备?

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 ship route show相同。)

在这里你可以看到回送路由。

你可以用这个基于策略的路由器做各种奇妙的事情,我build议你阅读Matthew G. Marsh的Linux策略路由(Policy Routing with Linux) ,了解你所需要的所有信息。

route命令从10年前就已经老了,你应该使用iproute2软件包。

当你使用ip route show main表时显示。 要显示local表,请使用ip route show table local

希望它有帮助。