内容提要
本文介绍Ubuntu多宽带配置:使用nmcli重命名网卡连接,通过设置路由跃点(Metric)控制优先级(如电信100、联通200)实现主备切换;同时禁用DHCP冗余默认路由,并配置公网连通性探针检测假死,确保链路故障时自动切换。
延伸解读
路由跃点:多宽带出口选择的核心
在Ubuntu多宽带环境中,内核依据路由跃点(Metric)决定默认出口,数值越小优先级越高。文章示例将电信设为100、联通200,使电信成为主用链路。当主链路物理断开时,内核自动移除其路由,流量无缝切换至备用链路。这一机制不依赖额外软件,是Linux原生高可用的基础。
清理DHCP冗余默认路由的必要性
即使手动指定了Metric,NetworkManager仍可能从DHCP获取默认网关并添加偏移量为20000的冗余路由,导致路由表出现metric 20100等条目。这些冗余项可能干扰出口选择。通过ipv4.ignore-auto-routes yes可禁止注入DHCP默认网关,同时不影响IP地址和DNS获取,使路由表保持精简可控。
公网探针:识别链路假死
物理链路Up不代表公网可达,光猫上行断光或欠费时网线仍显示连接,内核无法感知。文章建议启用NetworkManager连通性探针,使用HTTP 204端点定期检测,几乎不消耗资源。当主链路静默故障时,探针状态会从full变为limited,帮助运维人员及时发现并处理。
验证与故障模拟方法
配置完成后,可用ip route get 223.5.5.5验证默认出口是否经由主链路。通过sudo ip link set eth_ctcc down模拟主接口断开,再次执行该命令应显示切换至备用接口。恢复接口后路由表自动回切,形成完整的高可用故障转移闭环。这些命令简单有效,适合日常排查。
Q&A
Ubuntu下如何设置多宽带线路的优先级?
通过调整路由跃点数(Metric)来控制优先级。Metric数值越小,优先级越高。例如,将主用线路CTCC的Metric设为100,备用线路CUCC设为200,系统会优先使用Metric最小的网关。
为什么配置了Metric后路由表还会出现20000+的冗余默认路由?如何禁止?
因为NetworkManager默认会接收DHCP下发的默认网关,并叠加20000+Metric作为回退容灾。要禁止,需对连接执行:sudo nmcli connection modify "CTCC" ipv4.ignore-auto-routes yes(对CUCC同样操作),然后重新激活连接。
如何检测宽带是否假死(如光猫断光但网线仍Up)?
启用NetworkManager的连通性探针。创建配置文件/etc/NetworkManager/conf.d/20-connectivity.conf,写入[connectivity] uri=http://connect.rom.miui.com/generate_204 interval=10,然后重启NetworkManager。使用nmcli networking connectivity check验证,返回full表示正常,limited表示故障。
如何验证多宽带配置的出口和故障切换?
使用ip route get 223.5.5.5查看出口接口,应显示dev eth_ctcc。模拟故障:sudo ip link set eth_ctcc down,再次执行ip route get 223.5.5.5应显示dev eth_cucc。恢复:sudo ip link set eth_ctcc up。
如何重命名NetworkManager中的网卡连接?
先查看现有连接:nmcli -t -f NAME,DEVICE connection show。然后重命名:sudo nmcli connection modify "Wired connection 1" connection.id "CTCC",对联通连接类似操作改为"CUCC"。
ipv4.ignore-auto-routes yes会影响IP地址和DNS获取吗?
不会。该设置仅阻止注入DHCP默认网关,不影响网卡IP地址分配和DNS服务器的自动解析获取。