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

为什么 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 网关而不是环回设备?

答案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 sh与 相同ip route show。)

在这里您可以看到环回路由。

你可以用它做各种奇妙的事情基于策略的路由,我建议你读一下Linux 中的策略路由由 Matthew G. Marsh 撰写,提供您所需要的所有信息。

答案2

route命令已经是 10 年前的旧命令了,您应该使用该iproute2软件包。

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

希望它有帮助。

相关内容