我正在使用最新的 Raspbian,并将我的设备连接到 2 个 LAN,每个 LAN 都有一个互联网网关。(该设备通过以太网电缆连接到一个 LAN,并通过 USB(USB 绑定的移动电话)连接到另一个 LAN。)
它似乎开箱即用,因为我可以访问互联网,并且插入电缆后路由表会自动设置如下:
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
default 192.168.0.1 0.0.0.0 UG 202 0 0 eth0
default 192.168.42.129 0.0.0.0 UG 205 0 0 usb0
然而,我想知道,如果其中一个 LAN 上的网关随机中断,设备是否仍然能够访问互联网?我安装了 iproute2 包,但我不知道它是如何工作的,而且在互联网上也没有找到好的答案。谢谢。
答案1
您有 2 个指标。202 将用于路由流量。205 将用于发生故障的情况。您有 FLAGS UG:Up & Gateway。如果 U 消失,则表示您的网关已关闭。如果您的锉刀和路由器之间的电源或中间的任何东西断电,它就会关闭。如果路由器有故障,或者他的互联网线路断了,那么流量将路由到死胡同。
如果您想避免这种情况,并且由于它不是动态路由协议,您将需要建立 SLA 策略。
例如:一个脚本使用“ping -I usb0”连接到 google,另一个脚本使用 -I eth0 连接到 google。如果指标较低的脚本已启动但无法连接 google,请更改其指标,或彻底关闭它。(指标:ip route add ${address}/${mask} via ${gateway} metric ${number})。
如果更改度量标准,您仍然可以尝试 ping,并在 ping 满足要求时恢复连接。
使用非常慢的 ping,并让其在切换之前出现 3 或 4 次失败。
这不是解决您问题的灵丹妙药,但它是一个很酷的场景,可以建立一些很酷且简单的脚本:):)。
答案2
您的网关具有不同的度量标准,因此即使您有两个默认路由,您也只会使用其中一个。这是一件好事,因为通常的互联网协议(TCP、UDP)不是多宿主:您不能使用它们通过多个本地和/或远程 IP 地址形成单个连接,同时在不同的路径上进行路由。
因此,您实际上无法同时使用两个互联网连接,除非您使用静态标准进行某种负载平衡。而设置起来并不容易。
至于如果一个网关“随机中断”会发生什么,这取决于它是如何中断的,以及您的 RaspPi 如何检测中断:如果一个接口进入关闭状态,我认为(但没有测试)它会使用另一个默认路由。如果网关本身“中断”(例如失去互联网连接),但与 RaspPi 的连接正常,RaspPi 会很乐意继续使用此网关,从而中断 RaspPi 的互联网连接。