客观的
我正在尝试为 Linux 机器设置某种“不间断互联网供应”。为此,我使用两个上行链路:一个通过 的标准有线连接eth0
,以及一个通过 提供的 3G 连接eth1
。有线eth0
连接应为默认连接,而eth1
连接应仅在出现连接问题时使用eth0
。两个接口均通过 DHCP 配置。
当前设置
eth0
我分别通过和设置了两个默认路由eth1
,并且我为分配了更高的度量值,eth1
因此eth0
默认情况下优先选择该路由。基本上,这工作正常:当从端口拔下以太网电缆时eth0
,系统可以无缝地继续使用eth1
任何 Internet 访问,因为它检测到eth0
电缆被拔出,因此可以立即eth0
从路由表中删除无效条目(这似乎是默认行为)。
问题
然而,当有线连接不是直接在eth0
接口本身中断,而是在网络的某个稍后点中断时,我遇到了一个问题。在这种情况下,Linux 机器当然无法检测到某些电缆已被拔出,保留eth0
路由表中的条目,并且任何互联网连接尝试都会失败,并出现“目标网络无法访问”错误。
eth0
那么,如果路由无法用于到达目标网络,是否有某种方法可以告诉 Linux 立即丢弃该路由?如果是,我该如何检测eth0
连接何时再次可用,以便我可以再次切换回来eth1
?eth0
这可能吗?
非常感谢您的任何提示!!
答案1
路由协议旨在解决内部网络中的这个问题。OSPF 等协议会找到相邻邻居并实施“保持活动”系统 - 如果他们没有收到保持活动的确认,他们就会认为该路由已失效并实时重写路由表。
如果您控制了超出范围的任何内容eth0
,请考虑设置类似的东西。我认为quagga
您可能需要研究软件包/软件。可能有更简单的解决方案,不涉及路由协议。
如果eth0
直接连接到互联网(这是您无法控制的网络),您将需要进行某种计划任务检查以确保真正的连接(ping 外部服务器等),并在发现不可达时手动关闭您的接口或重写您的路由。