我正在尝试学习 Linux 路由表,但遇到了一些障碍。在下面的示例中,我不确定发生了什么。我的理解是 0.0.0.0 意味着对于第 1 行和第 2 行,其网络之外的任何数据包都会查看默认网关 10.0.0.1。
Destination Gateway Genmask Flags MSS Window irtt Iface
10.0.0.0 0.0.0.0 255.255.255.0 U 40 0 0 eth1
10.1.1.0 0.0.0.0 255.255.255.0 U 40 0 0 eth0
0.0.0.0 10.0.0.1 0.0.0.0 UG 40 0 0 eth1
那么我的问题是,哪个接口更接近互联网?我不确定数据包是否立即离开 eth0 和 eth1 将数据包发送到网关 10.0.0.1,或者 eth0 和 eth1 是否都将数据包路由到 10.0.0.1 以进行互联网。
答案1
在你的路由表中,你的计算机知道 2 个子网。
1- 10.0.0.0/24
2- 10.1.1.0/24
其余流量将发送到您的网关 (10.0.0.1)。
这是什么意思?如果您从子网 1 向地址发送数据包,那么您的计算机会尝试通过 eth1 发送它。
你的问题的答案是eth1是最近的“互联网”,因为每个对互联网的请求都会通过10.0.0.1(网关)。
答案2
那么我的问题是,哪个接口更接近互联网?
它们都不是 - 从 RFC 1918 开始,10.0.0.0/8 不可全局路由。但是,第三个条目表示 10.0.0.1 是默认网关(到 0.0.0.0/0 的流量会到达那里,但 10.0.0.0/ 处的目的地除外) 24 和 10.1.1.0/24),可能有到 Internet 的路由(使用 NAT)。在这种情况下,eth1“更接近”互联网(在适当的意义上)。
答案3
当数据包发送到 IP 堆栈时,驱动程序会在路由表中搜索与目标 IP 地址最匹配的路由。它通过执行每个路由中定义的目的地和数据包中定义的目的地的二进制和来实现这一点。与数据包中定义的目的地最匹配的结果就是驱动程序使用的路线。如果为该路由定义了默认网关,则数据包将发送到该网关。如果没有为该路由定义网关,则假定目的地位于本地网络上,并且数据包直接发送到目的地。
因此,目标地址为 10.1.1.67 的数据包将与路由 10.1.1.0/24 匹配,并将按照第二条路由的配置在端口 eth0 上离开。目标地址为 10.0.0.84 的数据包将按照第一条路由的配置在 eth1 上离开。任何其他目标地址将仅匹配第三条路由,并将通过 eth1 离开,前往网关。
没有办法说哪条路由“更接近”互联网,因为这些路由都不处理公共路由地址,而这些都是 A 类私有地址。 A、B 和 C 类地址范围保留供私人使用,通常不会路由到互联网。数据包完全有可能在到达互联网之前通过其他网络进行路由,或者它们可能根本不会到达互联网。
答案4
经济型路由器,有2个IP地址
- LAN,99% 是 192.168.1.1,我们可以(应该) 更改。
- 广域网。由ISP自动分配
网关是数据包的目的地地址,在每台计算机中都使用 DHCP 设置(大多数情况下),如果未设置网关,则 LAN 中的计算机可以通信,但不能向外部发送数据包。
在这里你可以找到很好解释的答案:https://stackoverflow.com/questions/8599424/understanding-routing-table-entry