我有一台嵌入式设备,其中有三个网络连接:eth0、wwan0 和 wlan0。wwan0 是计量连接,因此我通常更喜欢 eth0 或 wlan0。问题是,在任何给定时间,任何接口都可以连接,但实际上无法访问互联网。由于各种原因,任何接口可能根本不存在。在这种情况下,我的路由表没有按照我的要求运行。有没有比不断检查和修改路由表的脚本更好的方法来处理这个问题?部分问题在于可用、不可用、没有互联网等的组合和排列太多。
答案1
正如您所注意到的,有很多种可能。有些情况比较模糊,例如:“有互联网,但只有测试服务器不可用”,这些服务器不可用可能是因为所有服务器都出现故障或被政府封锁。还有一种可能,即“一半”的互联网可以通过一家 ISP 访问,而“另一半”无法访问;但其他 ISP 的情况则“相反”。(信不信由你,我曾经见过这种情况。)您声称哪一个“有互联网”?
这是一个很难回答的问题,这就是为什么 SOHO 路由器存在一个完整的商业利基市场,它们或多或少能够在各种情况下做出决定,而且这些路由器通常不太容易设置,因此它们可以做出够好了这也是为什么电信行业如此热衷于 BGP 业务的原因。
因此,如您所见,您无法做得比脚本更好、更高效。我不知道您为什么要这样做,但对于桌面/最终用户机器,我认为根本不值得自动化。对于 Linux 路由器,我将使用 RPDB 进行标准拆分访问配置,并按优先顺序通过每个具有高指标的链接设置默认路由,然后脚本将仅根据对五个地理分布的测试点(访问量最大或最重要的测试点)的 ping 来设置或更新具有低指标的默认路由。