我有一台 Linux PC 的以下路由表。(我已启用 ip_forward 选项)
Destination Gateway Genmask Flags MSS Window irtt Iface
10.0.1.0 10.0.1.11 255.255.255.0 UG 0 0 0 p1p1
10.0.1.0 * 255.255.255.0 U 0 0 0 p1p1
10.0.2.0 * 255.255.255.0 U 0 0 0 p1p2
10.0.3.0 10.0.2.1 255.255.255.0 UG 0 0 0 p1p2
192.168.1.0 * 255.255.255.0 U 0 0 0 em1
网关 * 是什么意思?它和 是同一个东西吗
0.0.0.0
?如果不是,那它们有什么区别?当 PC 收到数据包时,它会发送到哪个网关
10.0.2.0
?我听到有人说它会将数据包转发到所有可用的网关。这个说法正确吗?如果正确,它如何知道哪些网关可用?当 PC 收到数据包时,它将使用哪个路由条目
10.0.1.0
?(第一个还是第二个?我不认为这是最长前缀匹配的示例)
答案1
Gateway *
表示目标网络直接连接,不必经过路由器。它不会经过网关到达 10.0.2.0/24,而是通过接口 p1p2 直接发送到目的地。
我认为它应该使用 10.0.1.0/24 的直接连接路由条目。否则它将产生无限递归,因为 10.0.1.0/24 的网关位于 10.0.1.0/24 上。
回答您评论中的问题,0.0.0.0/0 是默认路由,用于任何没有更具体路由的事情。
答案2
广告 1*
对于不需要网关的网络,会打印星号 ( ),因为它们直接连接到您的计算机。
广告 2您将通过p1p2
接口发送您的数据包。
广告 3我认为它会遵循*
规则,因此它会通过接口将其发送到目标主机。