通过另一个网络中的路由器进行路由 - “错误:Nexthop 具有无效网关。”

通过另一个网络中的路由器进行路由 - “错误:Nexthop 具有无效网关。”

我们有网络 192.168.88.0/22、192.168.40.0/23、192.168.10.0/24。192.168.88.73
上有一个路由器(操作系统:Debian 10),用于从 192.168.40.0 路由到 192.168.10.0,它在 192.168.10.0 上也有一个接口。

192.168.40.131 上有一个客户端(也是 Debian 10),它应该使用 192.168.88.73 上的路由器连接到 192.168.10.0。它可以使用默认网关(192.168.40.251)连接到 192.168.88.0/22 网络。客户端过去与 192.168.88.73 路由器位于同一网络中,并且正常工作,因此路由器正常工作(ping 正常)。

我尝试ip route add 192.168.10.0/24 via 192.168.88.73 dev eth0创建到路由器的静态路由,但不起作用。错误消息为:“错误:Nexthop 网关无效。”。
原因显然是客户端与路由器不在同一个网络中。但我找不到解决方案。

然后我route add -host 192.168.88.73 gw 192.168.40.251按照 Google 的建议尝试了一下,尽管它已经是默认网关了。但对我来说没用。

答案1

您的问题的解决方案非常明显:您的路由器需要客户端网络内的网络接口(192.168.40.0/23)和目标网络内的接口(192.168.88.0/22)才能路由数据包...分配 IP 后,您需要将这个新分配的 IP 设置为网关: route add -net 192.168.88.0/22 gw 192.168.40.XXX

并且不要忘记,通信是双向的:除非您伪装路由 IP,否则目标网络也需要进入客户端网络的路由!

当然,你需要对第三个网络 (192.168.10.0/24) 执行相同的操作

[编辑]

显然,仍然存在混淆...如果您无法将网络接口添加到直接连接的路由器,则需要在具有该接口的网关上设置路由。让我画一个网络布局来澄清一下。

Client A             Default Gateway            Router A          
192.168.40.131                                 192.168.88.73
   |                        |                         |
   |  ------------->.40.251 |                         |
   |                        |                         | --> Target Net
   |                        |                         |     (192.168.10.0/24)
   | <- 192.168.40.0/23 ->  |  <- 192.168.88.0/22 ->  |
    

我将做出以下假设:

  • 您的默认网关 (192.168.40.251) 也是网络 192.168.88.0/22 的一部分,并且在该网络内具有 ip 192.168.88.251
  • 您的路由器 192.168.88.73 在 192.168.10.0/24 网络中也有一个网络接口

我不太了解你的网络布局细节,但这些假设应该可以明确在哪里安装什么路由,以实现客户端 A 能够到达目标网络。

  • 客户端 A 只需要一条路由:默认网关上的默认路由
  • 在您的默认网关上,您需要安装以下路由:route add -net 192.168.10.0/24 gw 192.168.88.73。这是因为默认网关具有到 .88.0/22 网络的网络接口
  • 在路由器 A 上,您需要安装“向后”路由:route add -net 192.168.40.0/23 gw 192.168.88.251

希望这能澄清我的答案。

相关内容