什么是本地路由表使用?

我想了解什么是本地路由表。

如果我用下面的命令添加一个随机地址:

sudo ip route add to local <any-ip-address> dev <network interface> 

现在我可以ping通这个地址,但是没有ifconfig列出的接口使用这个地址。

例:

 $ ping 192.168.22.22 -w 1 PING 192.168.22.22 (192.168.22.22) 56(84) bytes of data. --- 192.168.22.22 ping statistics --- 1 packets transmitted, 0 received, 100% packet loss, time 0ms $ sudo ip route add to local 192.168.22.22 dev wlp2s0 $ ping 192.168.22.22 -w 1 PING 192.168.22.22 (192.168.22.22) 56(84) bytes of data. 64 bytes from 192.168.22.22: icmp_seq=1 ttl=64 time=0.018 ms 64 bytes from 192.168.22.22: icmp_seq=2 ttl=64 time=0.015 ms --- 192.168.22.22 ping statistics --- 2 packets transmitted, 2 received, 0% packet loss, time 999ms rtt min/avg/max/mdev = 0.015/0.016/0.018/0.004 ms 

感觉它可以作为回送工作,但是从ifconfig,lo接口仍然只有127.0.0.1地址。 如果我检查此表ip route ls table local我看到以下内容:

 $ ip route ls 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 wlp2s0 proto kernel scope link src 192.168.0.13 local 192.168.0.13 dev wlp2s0 proto kernel scope host src 192.168.0.13 broadcast 192.168.0.255 dev wlp2s0 proto kernel scope link src 192.168.0.13 local 192.168.22.22 dev wlp2s0 scope host broadcast 192.168.122.0 dev virbr0 proto kernel scope link src 192.168.122.1 local 192.168.122.1 dev virbr0 proto kernel scope host src 192.168.122.1 broadcast 192.168.122.255 dev virbr0 proto kernel scope link src 192.168.122.1 

那么我应该使用什么地方桌子和女巫场景呢?

我读过的地方是广播和本地机器托pipe的地址,但我不明白为什么我们需要一个特殊的表格,什么时候应该添加任何条目到这张表。

谢谢

首先,因为一些在互联网上的信息可以解释“ 本地表是由内核维护的一个特殊的路由表 ”。

如果你今天真的很勇敢,那么你甚至可以在本地获得一些信息,方法如下:

man ip – 因为这是你一直在修改的命令是有道理的,期望其手册应该有一些提示这个问题。 现在你应该清楚地看到所谓的SEE ALSO部分。 我们仔细研究一下 – 除此之外,它无耻地提到了2个可能的候选人,以便进一步询问:

  1. ip-route(8)
  2. ip-rule(8)

总而言之,我们现在有点:

man 8 ip-route的:

local – 目的地被分配给这个主机。 数据包被回送并在本地传送。

实际上,另一张桌子总是存在,这是隐形的,但更重要的。 它是local表( ID 255 )。 该表由本地和广播地址的路由组成。 内核自动维护这个表,pipe理员通常不需要修改它,甚至不需要查看它。

man 8 ip-rule的:

在启动时,内核configuration由三个规则组成的默认RPDB:

  1. 优先级:0,select器:匹配任何内容,动作:查找local路由表( ID 255 )。 local表是一个特殊的路由表,包含本地和广播地址的高优先级控制路由。

我个人对一些作者在引用的手册中提供的信息感到满意,但是如果你还饿,我想现在你知道如何去钓鱼了。

本地路由表允许系统路由到适当的接口到达地址。 路由select使用最具体(最小的子网)路由。 但是,您正在testing由回送地址处理的路由。

Ping在界面层面得到了回应,并且不需要监听过程。 当ping一个分配给主机上一个接口的地址时,networking会短路由到环回接口。 路由到回送接口可防止远程服务器窥探stream量。 由于您已将路由分配给本地接口,ping将由回送接口响应。

通常你路由表将有以下路由:

  • 默认(0.0.0.0/0):到路由器的路由,将stream量路由到其他未知的地址。 这是用于连接到互联网的路线。 这应该直接路由到路由器,虽然有办法通过指定一个中间路由器间接路由。

  • 192.0.2.0/24 :(可选,只对多个接口有用)其中,192.0.2.0是远程子网的networking地址,/ 24是nework的大小。 再次,这将路由到路由器。 只有当路由是由路由器而不是路由器为封闭子网路由时才需要

  • 192.0.2.0/24 :(标准)。 值如上所述)提供到所连接networking的路由。 接口的IP地址必须在子网中。 这路由到服务子网的路由器。 但是,到子网中其他主机的连接将被直接路由,除非被更具体的路由覆盖。

  • 127.0.0.1/8 :(标准)。 这是连接到环回伪地址接口的环回地址。 这些地址不应该在真实的界面上看到。

还有其他专门的路线,如点对点和黑洞。 这些很less使用。