我们有网络 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
希望这能澄清我的答案。