Linux网卡绑定(Bonding)是一种将多个物理网卡虚拟为一个逻辑网卡的技术,通过绑定可以提升网络带宽、实现链路冗余和负载均衡,确保网络的高可用性和性能,本文将详细介绍Linux网卡绑定的原理、模式选择及具体配置步骤。

网卡绑定原理与模式
网卡绑定的核心是通过内核中的bonding模块实现,将多个物理网卡(从设备)绑定为一个逻辑网卡(主设备),对外呈现单一IP地址,根据需求可选择不同绑定模式,常见模式如下:
| 模式编号 | 模式名称 | 工作原理 | 适用场景 |
|---|---|---|---|
| 0 | balance-rr | 轮询模式,按顺序将数据包通过不同网卡发送,实现负载均衡 | 需要高带宽且无交换机支持的环境 |
| 1 | active-backup | 主备模式,仅一块网卡工作,故障时自动切换到备用网卡 | 对可靠性要求高,带宽需求一般的场景 |
| 2 | balance-xor | 异或模式,根据目标MAC地址将数据包分配到不同网卡,确保同一目标流量走同一网卡 | 需要负载均衡且无需交换机配置的场景 |
| 3 | broadcast | 广播模式,所有网卡同时发送相同数据包 | 需要最高冗余的关键业务场景 |
| 4 | 3ad | LACP模式,通过LACP协议与交换机协商,动态实现负载均衡和链路聚合 | 需要高带宽且交换机支持LACP的企业环境 |
| 5 | balance-tlb | 传输负载均衡,根据网卡负载情况分配发送流量,接收流量由主网卡处理 | 接收负载不高,但发送负载大的场景 |
| 6 | balance-alb | 自适应负载均衡,在balance-tlb基础上支持接收负载均衡 | 发送和接收都需要负载均衡的场景 |
网卡绑定配置步骤
检查并加载bonding模块
首先确认系统是否支持bonding模块,执行以下命令加载模块并指定模式(以mode=1为例):
modprobe bonding mode=1 miimon=100
参数说明:miimon=100表示每100毫秒检测一次链路状态,若链路故障则自动切换。
创建Bonding接口配置文件
以CentOS/RHEL系统为例,在/etc/sysconfig/network-scripts/目录下创建ifcfg-bond0文件(bond0为逻辑接口名,可自定义):
DEVICE=bond0 TYPE=Bond BOOTPROTO=static IPADDR=192.168.1.100 NETMASK=255.255.255.0 GATEWAY=192.168.1.1 BONDING_OPTS="mode=1 miimon=100" ONBOOT=yes
若使用DHCP,将BOOTPROTO设为dhcp即可。

配置从属物理网卡
假设绑定eth0和eth1两块网卡,修改其配置文件ifcfg-eth0和ifcfg-eth1:
DEVICE=eth0 TYPE=Ethernet BOOTPROTO=none MASTER=bond0 SLAVE=yes ONBOOT=yes
eth1配置文件内容相同,确保MASTER和SLAVE参数正确。
设置开机启动并重启网络服务
通过以下命令使bonding模块开机自动加载,并重启网络服务使配置生效:
echo "bonding" >> /etc/modules # 开机加载模块 systemctl restart network # 重启网络服务
验证绑定状态
执行以下命令查看绑定状态:
cat /proc/net/bonding/bond0
输出结果会显示当前活动网卡(如Slave Interface: eth0 (Active))、从属网卡列表及绑定模式,若需查看接口IP配置,可使用ip a show bond0。

常见问题与优化
配置完成后,若出现网络不通或绑定失效,需检查:
- 物理网卡链路状态(是否连接网线、交换机端口是否正常);
- 配置文件中
MASTER和SLAVE参数是否匹配; miimon值是否过小(建议100-1000ms,避免频繁切换);- 交换机是否支持对应模式(如mode=4需开启LACP聚合)。
相关问答FAQs
Q1:如何根据业务需求选择合适的Bonding模式?
A:选择模式需综合考虑带宽、冗余和交换机支持情况,金融等高可靠性场景推荐mode=1(主备),需要高带宽且交换机支持LACP的场景选mode=4(802.3ad),无交换机支持且需简单负载均衡选mode=0(轮询),若业务对发送负载要求高,可选mode=5(balance-tlb)。
Q2:Bonding配置后,从属网卡显示“inactive”怎么办?
A:首先检查从属网卡配置文件中MASTER=bond0和SLAVE=yes是否正确,确保物理链路正常(如网线、交换机端口),若配置正确但状态异常,可尝试重启网络服务(systemctl restart network)或重新加载bonding模块(rmmod bonding; modprobe bonding mode=1 miimon=100),若问题持续,检查内核日志(dmesg | grep bonding)排查错误信息。
原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/29528.html