跳转到主内容
趣航编程网 - 趣学编程,启航技术之路!

怎么在Linux利用Nmcli配置静态IP及多网卡冗余绑定

nmcli 配静态 IP 必须先设 ipv4.method manual 再配地址,否则 DHCP 仍生效;bond 需先建逻辑接口再加 slave;主备切换需启用 miimon 并检查 /proc/net/bonding/bond0;重启后需禁用 NM 对物理口的管理以防冲突。 nmcli 里配静态 IP 必须禁用 DHCP 并显式设地址族 直接
nmcli connection modify
改 IP 却没关 DHCP,改完重启连接还是拿 DHCP 地址——这是最常踩的坑。nmcli 不会自动帮你关掉 DHCP,哪怕你已经写了
ipv4.addresses
,只要
ipv4.method
还是
auto
,它就优先走 DHCP。 正确做法是两步一起做:
nmcli connection modify "ens33" ipv4.method manual
nmcli connection modify "ens33" ipv4.addresses "192.168.10.50/24"
nmcli connection modify "ens33" ipv4.gateway "192.168.10.1"
nmcli connection modify "ens33" ipv4.dns "8.8.8.8,114.114.114.114"
nmcli connection modify "ens33" ipv4.ignore-auto-routes yes
(避免 DHCP 路由残留干扰) 别漏掉
ipv4.method manual
,否则其他设置全白配。改完必须
nmcli connection down "ens33" && nmcli connection up "ens33"
才生效,
reload
或
reapply
不行。 多网卡绑定(bond)必须先建 bond 接口再加 slave 想用
ens33
和
ens34
做主备冗余,不能直接对物理口设 bond 参数。nmcli 要求先创建一个逻辑
bond
连接,再把物理口作为 slave 加进去,顺序反了会报
No suitable object found
或
Connection 'ens33' is not a slave of any master
。 实操步骤(主备模式
active-backup
):
nmcli connection add type bond con-name bond0 ifname bond0 mode active-backup
nmcli connection modify bond0 ipv4.method manual
nmcli connection modify bond0 ipv4.addresses "192.168.10.50/24"
nmcli connection modify bond0 ipv4.gateway "192.168.10.1"
nmcli connection add type bond-slave con-name bond0-ens33 ifname ens33 master bond0
nmcli connection add type bond-slave con-name bond0-ens34 ifname ens34 master bond0
注意:
bond-slave
连接不能单独设 IP 或 gateway,所有网络配置只在
bond0
上设;物理口连接默认会被自动
down
,不用手动关。 主备切换测试得看 link 状态,不是 ping 以为
ping
通就代表冗余生效?错。很多环境里即使主口断电,bond 仍维持 UP 状态(因为内核认为 carrier 未完全丢失),但实际发包失败。真正验证得查
/proc/net/bonding/bond0
输出里的
MII Status
和
Primary Slave
行。 CentOS Linux 7.9.2009 CentOS Linux 7.9.2009是传统CentOS Linux 7的最后主要版本,也是很多企业历史服务器中仍可能遇到的系统版本。它以稳定、兼容RHEL 7生态、文档丰富和软件支持广泛著称,曾长期用于Web服务、数据库、虚拟化节点和企业内部业务系统。不过CentOS Linux 7已于2024年6月30日停止维护,现在继续使用会面临安全补丁缺失风险。该版本更适合旧业务迁移、历史环境恢复或离线兼容性测试。 下载 快速判断方法: 拔掉主网线后执行
cat /proc/net/bonding/bond0 | grep -E "(MII Status|Primary Slave)"
看到
MII Status: down
且
Primary Slave
变成另一个接口名,才算切换成功 如果
MII Status
一直是
up
,说明链路检测没起作用,要检查
miimon
参数:加
nmcli connection modify bond0 bond.options "miimon=100"
再重载 默认不设
miimon
,bond 就不会主动轮询物理口状态,故障时无法触发切换。 重启后 bond 不生效?检查 NetworkManager 是否接管了物理口 系统重启后
bond0
up 了,但
ip addr
里看不到地址,或者
ens33
、
ens34
自己又冒出来成了独立连接——大概率是 NetworkManager 自动为物理口生成了默认连接(名字类似
Wired connection 1
),跟你的 bond 配置冲突。 解决办法只有两个: 删掉自动生成的物理口连接:
nmcli connection delete "Wired connection 1"
(查清名字再删,用
nmcli connection show
) 永久禁止 NM 管理特定物理口:
nmcli device set ens33 managed no
(对每个 slave 口都执行) 后者更稳妥,否则下次重装驱动或插拔网线,NM 又可能自作主张建新连接。这个设置不随 reboot 丢失,但需要在 bond 配置前或配置后立即执行,晚了就容易被覆盖。

相关文章