为什么在Ubuntu中没有本地主机的路由?


12
$ 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的网关而不是回送设备?


我的意思是:为什么在Ubuntu中没有回环的途径?
Balazs Rau 2015年

我认为用于环回网络的显式路由是过去的。看到您的问题,我看了看我们的一些服务器,路由表上没有用于环回的路由。这对于Solaris 10也有效,对于Solaris 8则无效(是的,我们在Solaris 8上仍有一些功能)。
alphamikevictor 2015年

Answers:


25

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)。

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

您可以使用此基于策略的路由来完成各种奇妙的事情,我建议您阅读Matthew G. Marsh撰写的Linux上策略路由,以获取所需的所有信息。


1
只是担心您的措辞:他的问题实际上是关于本地地址的路由(127.0.0.0/8)。 table local是答案,但不是问题。之所以如此,是因为到任何127. *地址的流量都被转换为源地址为127.0.0.1,并且我认为也不得不使用dev lo
彼得·科德斯

1
因此,真正的答案是“因为环回是特殊的,不需要一个”。例如,这些路由表条目均未提及有关如何路由至127.1.1.1的任何信息,但它仍然有效(如您从ping时间所知)。据推测网络代码特殊情况下由于性能原因,本地地址,因为ip addr不会显示lo有不止127.0.0.1为自己的地址,但它实际上将获得流量任何IP在127 ... / 8
彼得·柯德斯

4
@PeterCordes实际上,该行local 127.0.0.0/8 dev lo proto kernel scope host src 127.0.0.1涵盖了到达127.1.1.1的路线;这意味着以127.开头的任何内容都是本地的。
wurtel

啊,好吧,我还不了解表中local条目所local隐含的一切。谢谢。
彼得·科德斯

2

route命令自10年前就已经存在,您应该使用这些iproute2软件包。

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

希望能有所帮助。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.