我该如何理解“本地”路由表?

我该如何理解“本地”路由表?
$ ip route show 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.122.0 dev ens3 proto kernel scope link src 192.168.122.202 
local 192.168.122.202 dev ens3 proto kernel scope host src 192.168.122.202 
broadcast 192.168.122.255 dev ens3 proto kernel scope link src 192.168.122.202
  1. 在第一个条目中,127.0.0.0 是否代表环回地址的网络? 127.0.0.0是广播IP地址吗?

  2. 两个环回广播条目有什么区别:第一个为 127.0.0.0.0,第四个为 127.255.255.255?

  3. 在第五条中,192.168.122.0是否代表环回地址的网络? 192.168.122.0是广播IP地址吗?

  4. 两个广播条目有什么区别:第五个广播条目为 192.168.122.0,最后一个广播条目为 192.168.122.255?

  5. 127.0.0.1 是 127.0.0.0/8 中的地址吗?为什么 127.0.0.1 的第三个条目从 127.0.0.0/8 的第二个条目中脱颖而出?

谢谢。

答案1

我会尽力一次性回答您所有的问题。

首先,你应该看一下ip(8)联机帮助页并花一些时间阅读联机帮助页在这里解释。通过阅读一些人花费时间和精力在类 Unix 操作系统中分享宝贵信息的手册,您可以学到很多东西。

在第一个条目中,127.0.0.0 是否代表环回地址的网络? 127.0.0.0是广播IP地址吗?

是的。地址127.0.0.0代表网络地址(网络的第一个地址)。这是ipv4的概念性定义。

两个环回广播条目有什么区别:第一个为 127.0.0.0.0,第四个为 127.255.255.255?

概念:他们是不同的。网络和广播地址。你必须读一些书或者用谷歌搜索一下,然后自己找到这些差异,因为这超出了 U&L 的范围。也许 SE Network Engineering 的这个问题可以帮助您:

真实用例:它们在 Linux 服务器场景上几乎相同,因此被创建为brodcast地址类型。引用精彩linux-ip文档:

...网络地址和广播地址都作为 broadcast它们所绑定的接口上的类型地址输入。从概念上讲,网络地址和广播地址之间的区别很重要,但实际上,其他网络设备以及 Linux 内核对它们的处理方式类似......

这是一条公理,你必须接受它的本来面目。在路由的实际用例这两个地址的使用位置几乎没有区别。

在第五条中,192.168.122.0是否代表环回地址的网络? 192.168.122.0是广播IP地址吗?

不,那是您接口的网络地址ens3。看看dev那条线上的。localtable是存储本地路由的地方。这并不意味着只有环回相关的路由存在。只是您将在本地传送数据的地方。

再次引用手册ip页:

   At startup time the kernel configures the default RPDB consisting of three rules:

   1.  Priority: 0, Selector: match anything, Action: lookup routing  table  local  (ID  255).
       The  local table is a special routing table containing high priority control routes for
       local and broadcast addresses.

两个广播条目有什么区别:第五个广播条目为 192.168.122.0,最后一个广播条目为 192.168.122.255?

与问题 2 相同,但针对网络192.168.122.0/24开发ens3而不是环回设备:与现实世界路由的相同用例的概念差异。

127.0.0.1 是 127.0.0.0/8 中的地址吗?为什么 127.0.0.1 的第三个条目从 127.0.0.0/8 的第二个条目中脱颖而出?

确保与 相关的所有流量127.0.0.0/8都将在本地传递,并且来源始终为127.0.0.1。再次联机帮助页:

    local - the destinations are assigned to this host.  The packets are looped  back  and
    delivered locally.

    broadcast  -  the  destinations are broadcast addresses.  The packets are sent as link
    broadcasts.

我的观点是,这将迫使任何发往127.0.0.0/8​​网络的流量都来自127.0.0.1.这可能最初听起来很愚蠢,但是,您可以使用该127.0.0.2地址在 Linux 内部拥有另一个应用程序/服务,并且由于local 127.0.0.0/8 dev lo proto kernel scope host src 127.0.0.1路由将127.0.0.1地址作为源 ( src),这将避免出现问题。

相关内容