问题背景
网络环境配置:
- network1: 192.168.1.0/24
- 默认网关: 192.168.1.1
- host1: 192.168.1.10
- host2: 192.168.1.10
- network2: 192.168.2.0/24
- 默认网关: 192.168.2.1
- host3: 192.168.2.10
host1建立了到network2的VPN连接,可以ping通host3。host1共享VPN连接,可作为网关使用。host2将host1配置为默认网关,host2可以ping通host3。
测试过程
-
当host2 ping其自身子网外的任何目标时,在收到目标的第一个回复后,会收到来自host1的"Redirect Host(New nexthop: 192.168.1.1)“回复,这意味着系统要求将出站流量直接发送到默认网关,而不是发送到192.168.1.10,这是完全正常的行为。
-
当host2 ping host3时,收到预期的成功回复。
-
在host2持续ping host3的过程中,断开host1的VPN连接,此时到network2的路由不再有效。
-
正如预期的那样,host2无法再访问host3,但仍然收到相同的"Redirect Host(New nexthop: 192.168.1.1)“消息,系统要求使用默认网关,因为host1上到network2的有效路由已不存在。
核心问题
即使VPN连接恢复,host2也无法访问host3,因为它被要求使用默认网关而不是原来的路由。经过5分钟的超时后,重定向似乎被重新评估,路由恢复指向host1,从而能够再次访问host3。(经过测试,这一过程每294秒重复一次)
解决方案
可以创建到network2的静态路由来覆盖"新下一跳”。
技术疑问
在Linux系统(如Ubuntu 24.04)中,这些信息存储在哪里?
可以列出所有路由,但找不到任何显示这些"重定向请求"当前状态的表。
关键问题:
- 这些重定向信息能否被列出?
- 能否被修改?
- 是否存在对某些基础概念的理解偏差?
社区反馈
该问题因涉及主机/服务器配置而被标记为偏离主题,建议在Super User或Unix & Linux社区寻求解答。