最近我一直在学习 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 路由。
我有基本的路由知识,并且知道一般规则是:
- 从上到下扫描列表。
- 如果未找到匹配项,则使用默认匹配项。
- 如果多行匹配,则使用最长网关的那一行。
但我无法理解标记的答案。有人可以解释一下吗
- 为什么 192.168.180.240 不是通过 eth1 路由
- 为什么 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,因此它是这样路由的。