路由表说明

路由表说明

最近我一直在学习 Linux 管理证书。我发现了一个关于路由的问题,如下所示。

# route
Kernel IP routing table
+----------------+-------------+----------------+------+------+
|Destination     |Gateway      |Genmask         |Flags |Inface|
+----------------+-------------+----------------+------+------+
|192.168.180.128 |*            |255.255.255.192 |U     |eth1  |
|192.168.40.0    |*            |255.255.255.0   |U     |eth0  |
|192.168.0.0     |*            |255.255.0.0     |U     |eth2  |
|Default         |192.168.40.2 |0.0.0.0         |UG    |eth0  |
+----------------+-------------+----------------+------+------+

答案(好的答案加粗):

A. 到 192.168.180.180 的流量通过 eth1 路由。
B. 到 192.180.240 的流量通过 eth1 路由。
C. 到 192.168.0.42 的流量通过 eth2 路由。
D. 到 192.168.42.42 的流量通过 eth2 路由。
E. 到 192.168.42.42 的流量通过 eth0 路由。
F. 到 192.168.180.180 的流量通过 eth0 路由。

我有基本的路由知识,并且知道一般规则是:

  1. 从上到下扫描列表。
  2. 如果未找到匹配项,则使用默认匹配项。
  3. 如果多行匹配,则使用最长网关的那一行。

但我无法理解标记的答案。有人可以解释一下吗

  1. 为什么 192.168.180.240 不是通过 eth1 路由
  2. 为什么 192.168.42.42 通过 eth2 路由

答案1

似乎对面具进行简短(并且有些简单化)的解释是合适的。给定一个地址(例如 192.168.180.128)和一个掩码(例如 255.255.255.192),掩码中的零位表示允许的地址中哪些位可以不同。 255 的所有位都是 1,因此前三个八位字节都不能不同。在第四个八位位组中,192_10 = 1100 0000_2,前 6 位为零,因此只有这些位可以更改。

对于 192.168.180.240,第 7 位也不同(240_10 = 1111 0000_2 和 128_10 = 1000 0000_2);为了允许这样做,掩码必须至少为 255.255.255.128。因此它无法通过该网关进行路由。 192.168.180.180 适合,因为 128 和 180 之间只有第 3、5 和 6 位不同。

同样,192.168.42.42 在 192.168.40.0 上需要掩码 255.255.254.0。它确实适合掩码为 255.255.0.0 的 192.168.0.0,因此它是这样路由的。

相关内容