如何为特定子网添加路由?

如何为特定子网添加路由?

我有一台 Linux 计算机和一个eth0具有 2 个 IP 的接口:

ip : 10.10.1.1
mask : 255.128.0.0
gw : 0.0.0.0

ip : 10.22.32.1
mask : 255.255.255.0
gw : 10.22.32.254

我想为网络 10.22.0.0/16 添加一个特定网关,因此我执行以下操作:

route add -net 10.22.0.0/16 gw 10.22.32.254 dev eth0

这不起作用,我再也无法访问 10.10.0.0 上的机器。以下是路由表:

Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         0.0.0.0         0.0.0.0         U     0      0        0 eth0
10.0.0.0        0.0.0.0         255.128.0.0     U     1      0        0 eth0
10.22.0.0       10.22.32.254    255.255.0.0     UG    0      0        0 eth0
10.22.32.0      0.0.0.0         255.255.255.0   U     0      0        0 eth0
169.254.0.0     0.0.0.0         255.255.0.0     U     1000   0        0 eth0

它是否会失败,因为 10.22.0.0/16 是 10.10.0.0/9 的子部分?

答案1

网络布局存在几个问题:

  1. 正如 Stache 所指出的,10.22.0.0/16 的假定路由器需要在子网“10.10.1.1/9”中有一个可访问的接口(见下文)。事实上,它只能从同一子网内部访问,这是没有意义的。
  2. “10.10.1.1/9”子网实际上是 10.0.0.0/9 子网,包含 10.22.0.0/16 子网,这可能就是所有混乱的根源。
  3. 您提供的第一个信息是您使用 10.22.32.0/24子网 - 您也需要理清这一点。您可以对路由进行超网和子网划分,但需要确保它们能够组合在一起。

您需要整理子网地址和掩码。如果您使用 10.10.0.0/16您可以使用 10.22.0.0/16 作为不同的子网,但您需要一个带有接口的路由器在每个子网内

答案2

计算机使用目标 IP 地址来决定选择哪条路由。您的命令表示,对于与 匹配的目标 IP 地址10.22.0.0/16,您应该将其直接发送到10.22.32.254进行进一步路由。根据您的路由表,任何不匹配10.x或 的169.x内容都将直接放在线路上,而不会传递到路由器机器。

这看起来是倒退的。如果您可以10.22.332.254发送这些数据包,那么您可能已经有一个匹配的接口,10.22.0.0/16这意味着这些数据包可以直接在线路上传输,而无需传递到网关/路由器。您可能想要的是匹配的任何东西都10.22.x.x直接在线路上传输,而其他任何东西(例如互联网)都会在以下位置传递到路由器10.22.32.254

Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         10.22.32.254    0.0.0.0         UG    0      0        0 eth0
169.254.0.0     0.0.0.0         255.255.0.0     U     1000   0        0 eth0
10.22.0.0       0.0.0.0         255.255.0.0     U     0      0        0 eth0

相关内容