NetworkManager连接优先级需同时设置autoconnect=yes和autoconnect-priority;多默认网关冲突应通过策略路由隔离;nmcli con up失败常因设备名不匹配;bonding mode=1切换延迟受miimon、downdelay、updelay协同影响。

NetworkManager连接优先级设置不生效?检查 autoconnect-priority 和 autoconnect
NetworkManager 默认不会按你期望的顺序切换连接,除非显式启用自动连接并设置优先级。关键参数是 autoconnect-priority 和 autoconnect,两者缺一不可。
常见错误是只改了优先级但没开 autoconnect,或者多个连接都设了高优先级导致冲突。
-
nmcli con show "Wired connection 1" | grep -E "(autoconnect|priority)"查看当前值 - 必须执行
nmcli con mod "Wired connection 1" connection.autoconnect yes - 优先级数字越大越优先,例如主有线设为
100,备用WiFi设为50,最低备选设为0 - 修改后需
nmcli con down "Wired connection 1" && nmcli con up "Wired connection 1"才能触发重评估
多默认网关冲突导致路由混乱?用策略路由隔离流量
当两个接口(如 eth0 和 wlan0)都配置了默认网关,Linux 内核会随机选一条路径,造成连接不稳定或部分服务失联。这不是 NetworkManager 的 bug,而是内核路由表设计使然。
解决办法不是禁用某个网关,而是把不同来源的流量导向不同出口:
- 先确认冲突:
ip route show table main | grep default—— 如果出现两条,就是问题根源 - 为 eth0 创建独立路由表(如 ID 200),添加其默认网关:
ip route add default via 192.168.1.1 dev eth0 table 200 - 添加规则:源 IP 属于 eth0 子网时查表 200:
ip rule add from 192.168.1.0/24 table 200 - 所有配置需写入
/etc/iproute2/rt_tables和网络服务启动脚本,否则重启失效
手动切换连接时 nmcli con up 失败?注意 device 状态与 connection 名称匹配
nmcli con up 报错 “no suitable device found” 或 “connection not available on device” 很常见,本质是连接配置绑定的物理接口当前未就绪或名称不一致。
典型原因包括:
- 接口名变化(如从
eth0变成enp0s3),而旧连接仍绑在eth0上 —— 用nmcli con show "conn-name" | grep connection.interface-name检查 - 设备被其他进程占用(如 systemd-networkd 或 ifupdown 正在管理该接口)—— 运行
systemctl status systemd-networkd和nmcli dev status对照 - 连接配置中指定了错误的
match-device规则(如 MAC 地址硬编码),而实际网卡已更换 - 临时修复:用
nmcli con mod "conn-name" connection.interface-name enp0s3强制指定,再nmcli con up
Bonding mode=1 切换延迟高?miimon 和 downdelay 参数必须协同调优
使用 bonding 主备模式时,故障检测不是瞬时的,默认 miimon=100(100ms 检测一次)看似快,但实际切换往往要等 3~5 秒,因为内核还需确认链路完全断开。
真正影响感知延迟的是 downdelay 和 updelay,它们控制接口状态变更后的等待时间:
-
miimon=50可缩短检测周期,但过小(如 10)可能误判瞬时丢包为故障 -
downdelay=200表示确认链路 down 后等待 200ms 再切换,避免抖动干扰 -
updelay=200表示新主接口 up 后等待 200ms 再启用,防止 link-up 信号未稳就发包 - 这些参数需统一写入
/etc/modprobe.d/bonding.conf,仅改ifenslave命令无效
复杂点在于,bonding 的故障判定依赖底层驱动上报的 link state,某些虚拟化环境或 USB 网卡可能不支持可靠上报,这时得配合用户态健康检查脚本兜底。


















