作为虚拟化架构师,我在使用nmcli配置Linux网卡绑定时遵循以下步骤,并总结了实践中常见的挑战:
配置流程
-
创建绑定接口
nmcli con add type bond con-name bond0 ifname bond0 mode active-backup
- 关键参数:
mode
需明确指定(如balance-rr
,802.3ad
),默认使用active-backup
。 - 经验:生产环境推荐
mode=802.3ad
(需交换机支持LACP),冗余场景用active-backup
。
- 关键参数:
-
添加从属网卡
nmcli con add type bond-slave ifname eth0 master bond0 nmcli con add type bond-slave ifname eth1 master bond0
- 常见错误:未先禁用原有网卡配置(
nmcli con del eth0
),导致IP冲突。
- 常见错误:未先禁用原有网卡配置(
-
配置IP与激活
nmcli con mod bond0 ipv4.addresses 192.168.1.10/24 nmcli con mod bond0 ipv4.gateway 192.168.1.1 nmcli con up bond0
- 替代方案:使用DHCP时需设置
ipv4.method auto
。
- 替代方案:使用DHCP时需设置
-
高级参数调优
nmcli con mod bond0 bond.options miimon=100,primary=eth0
- 关键优化:
miimon=100
(链路检测间隔),primary
指定主接口。
- 关键优化:
实践挑战与解决方案
-
模式兼容性问题
- 部分旧内核版本对
802.3ad
支持不稳定,需确认cat /proc/net/bonding/bond0
输出中模式已生效。
- 部分旧内核版本对
-
交换机配置依赖
- 使用LACP(802.3ad)时,若交换机未配置动态聚合,会导致绑定接口无响应。
-
服务冲突
- 若系统同时运行
network.service
与NetworkManager,需执行systemctl disable network
避免配置覆盖。
- 若系统同时运行
-
驱动限制
- 某些网卡驱动(如虚拟机VirtIO)需手动加载bonding模块:
modprobe bonding && echo 'bonding' > /etc/modules-load.d/bonding.conf
- 某些网卡驱动(如虚拟机VirtIO)需手动加载bonding模块:
验证与排错
-
实时状态检查:
cat /proc/net/bonding/bond0
输出应显示从属接口Slave Interface: eth0/eth1
及MII Status: up
。 -
故障模拟测试:
拔除主网线后,在active-backup
模式下应观察到Current Active Slave
切换至备用接口。 -
日志追踪:
journalctl -u NetworkManager -f
可捕获绑定初始化失败或MII检测超时等错误。