如何在Linux中配置具体的系统级网络接口在不同网络环境下自动切换的策略

冬强酱_3935

冬强酱_3935

2026-07-10

934人浏览

原创

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

如何在linux中配置具体的系统级网络接口在不同网络环境下自动切换的策略

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” 很常见,本质是连接配置绑定的物理接口当前未就绪或名称不一致。

Obsidian (Linux)
Obsidian (Linux)

操作 Obsidian 库(纯 Markdown 笔记),并通过 notesmd-cli 实现自动化。

下载

典型原因包括:

  • 接口名变化(如从 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 网卡可能不支持可靠上报,这时得配合用户态健康检查脚本兜底。

相关文章

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

linux

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
硬盘接口类型介绍
硬盘接口类型介绍

硬盘接口类型有IDE、SATA、SCSI、Fibre Channel、USB、eSATA、mSATA、PCIe等等。详细介绍:1、IDE接口是一种并行接口,主要用于连接硬盘和光驱等设备,它主要有两种类型:ATA和ATAPI,IDE接口已经逐渐被SATA接口;2、SATA接口是一种串行接口,相较于IDE接口,它具有更高的传输速度、更低的功耗和更小的体积;3、SCSI接口等等。

2023.10.19

3168

3

PHP接口编写教程
PHP接口编写教程

本专题整合了PHP接口编写教程,阅读专题下面的文章了解更多详细内容。

2025.10.17

5029

12

php8.4实现接口限流的教程
php8.4实现接口限流的教程

PHP8.4本身不内置限流功能,需借助Redis(令牌桶)或Swoole(漏桶)实现;文件锁因I/O瓶颈、无跨机共享、秒级精度等缺陷不适用高并发场景。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2025.12.29

3809

9

java接口相关教程
java接口相关教程

本专题整合了java接口相关内容,阅读专题下面的文章了解更多详细内容。

2026.01.19

466

15

磁盘配额是什么
磁盘配额是什么

磁盘配额是计算机中指定磁盘的储存限制,就是管理员可以为用户所能使用的磁盘空间进行配额限制,每一用户只能使用最大配额范围内的磁盘空间。php中文网为大家提供各种磁盘配额相关的内容,教程,供大家免费下载安装。

2023.06.21

4210

4

如何安装LINUX
如何安装LINUX

本站专题提供如何安装LINUX的相关教程文章,还有相关的下载、课程,大家可以免费体验。

2023.06.29

3553

10

linux find
linux find

find是linux命令,它将档案系统内符合 expression 的档案列出来。可以指要档案的名称、类别、时间、大小、权限等不同资讯的组合,只有完全相符的才会被列出来。find根据下列规则判断 path 和 expression,在命令列上第一个 - ( ) , ! 之前的部分为 path,之后的是 expression。还有指DOS 命令 find,Excel 函数 find等。本站专题提供linux find相关教程文章,还有相关

2023.06.30

2793

5

linux修改文件名
linux修改文件名

本专题为大家提供linux修改文件名相关的文章,这些文章可以帮助用户快速轻松地完成文件名的修改工作,大家可以免费体验。

2023.07.05

6850

7

linux系统安装教程
linux系统安装教程

linux系统是一种可以免费使用,自由传播,多用户、多任务、多线程、多CPU的操作系统。本专题提供linux系统安装教程相关的文章,大家可以免费体验。

2023.07.06

6502

7

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Python uv官方安装与入门文档
Python uv官方安装与入门文档

共0课时 | 0人学习

Buffalo框架快速入门指南
Buffalo框架快速入门指南

共0课时 | 0人学习

Valgrind支持平台说明
Valgrind支持平台说明

共0课时 | 0人学习