路由 – 为什么在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 

我们之前看到的路由表是主路由表.您的问题涉及本地路由表,其中包含与本地连接相关的所有路由.该表如下所示:

$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相同.)

在这里你可以看到环回路由.

您可以使用此基于策略的路由执行各种精彩的操作,我建议您阅读Matthew G. Marsh的Policy Routing with Linux,了解您需要的所有信息.

转载注明原文:路由 – 为什么在Ubuntu中没有localhost的路由? - 代码日志