我不知道如何给出一个更好的标题,但我的计划路线是:
主机 -> 192.168.1.254 -> 192.168.3.254 -> 192.168.3.0/24
我计划通过提供路线来实现这一点
192.168.3.254 255.255.255.255 192.168.1.254
192.168.3.0 255.255.255.0 192.168.3.254
但我遇到了麻烦,它无法工作。
有人能指出我的逻辑中的缺陷吗?
答案1
IP 数据包中没有编码其完整路径。它们只携带最终目标 IP 地址,并且每个跳转都会自行决定将它们发送到何处。¹ 您的主机本身可以选择将数据包发送到路由器 A,但不能强制另一台设备(路由器 A)将其发送到接下来的路由器 B。
路由中的“网关”字段通常被称为“下一跳”字段,因为它唯一能描述的是将数据包发送到的下一个设备。²“网关”字段中的地址被转换为 MAC 地址,因此必须可以在同一个以太网上直接访问。
(这通常意味着“192.168.3.0/24 via 192.168.3.254”这样的路由在术语上是矛盾的...路由器有多个 IP 地址 - 每侧一个 - 因此“网关”字段通常必须是面向发送方的地址,而不是面向目的地的地址。)
如果你的主机是 192.168.1.x,它应该有以下路由:
192.168.3.0/24 via 192.168.1.254
路由器 192.168.1.254 应该通过路由器 B 拥有自己的 192.168.3.0/24 路由。
(¹ 大型 ISP 网络存在例外,例如 MPLS 或分段路由,但这不是您在家庭 LAN 中会发现的东西。)
(²“递归”路由(就像您尝试过的一样)确实存在于各种系统中,但它们实际上并没有指定整个路径 - 它们只是通过 192.168.1.254 间接编写相同的“192.168.3.0/24”的方式。)