Linux 多网卡配置含五种方案:mode= 0 轮询负载均衡需交换机聚合;mode= 1 主备高可用无需交换机支持;mode= 4 基于 LACP 动态聚合需交换机启用 802.3ad;mode= 6 自适应负载均衡收发双向均衡且免交换机配合;策略路由实现按源地址分流至不同物理链路。

在 Linux 系统中,当服务器配备多个物理网卡时,可通过网卡绑定(Bonding)技术实现高可用性或带宽聚合。不同绑定模式对应不同的流量分发与故障切换逻辑。以下是几种主流的多网卡配置方案及其负载策略解析:
一、mode=0(balance-rr)轮询模式
该模式通过轮询方式将网络数据包依次分发至各从属网卡,实现带宽叠加和基本负载均衡。要求交换机 端口 配置为聚合组(如 IEEE 802.3ad),且所有参与绑定的网卡速率与双工模式必须一致。
1、加载 bonding 内核模块:modprobe bonding mode=0 miimon=100
2、创建 bond0 接口 配置文件 (/etc/sysconfig/network-scripts/ifcfg-bond0),设置 BOOTPROTO 为 static,并指定 IP 地址、 子网 掩码及网关
3、修改各物理网卡配置文件(如 ifcfg-eth0、ifcfg-eth1),将 DEVICE 设为对应名称,ONBOOT 设为 yes,BOOTPROTO 设为 none,并添加 MASTER=bond0 与SLAVE=yes
4、重启网络服务:systemctl restart network
二、mode=1(active-backup)主备模式
此模式仅一个网卡处于活动状态,其余作为热备份。当主网卡失效时,自动切换至备用网卡,保障连接连续性。无需交换机支持链路聚合,适用于对高可用性要求严苛但不追求带宽叠加的场景。
1、加载 bonding 模块并指定主备模式:modprobe bonding mode=1 miimon=100 primary=eth0
2、配置 bond0 接口为静态 IP,禁用 IPv6(可选),并确保 NM_CONTROLLED=no 以避免 NetworkManager 干扰
3、在各从属网卡配置中分别写入 MASTER=bond0 与SLAVE=yes,同时在主网卡配置中追加BONDING_OPTS=”mode=1 primary=eth0 miimon=100″
4、执行 ip link set bond0 up 启用绑定接口,并验证状态:cat /proc/net/bonding/bond0
三、mode=4(802.3ad)动态链路聚合模式
基于 IEEE 802.3ad 标准,通过 LACP 协议与交换机协商聚合参数,实现自动发现、配置同步与故障检测。需交换机端明确启用 LACP,并将对应端口加入同一 LAG 组。
1、确认内核已启用 802.3ad 支持:grep CONFIG_BONDING /boot/config-$(uname -r),输出应含 = y 或 =m
2、加载模块时指定 lacp_rate 与 xmit_hash_policy:modprobe bonding mode=4 lacp_rate=1 xmit_hash_policy=layer2+3 miimon=100
3、在 bond0 配置中添加:BONDING_OPTS=”mode=4 lacp_rate=1 xmit_hash_policy=layer2+3 miimon=100″
4、检查聚合状态是否为“Aggregator ID: N”且所有端口显示“Aggregator ID: N, Actor Key: N, Partner Key: N”,表示 LACP 握手成功
四、mode=6(balance-alb)自适应负载均衡模式
该模式无需交换机配合,支持发送与接收双向流量均衡。发送端依据哈希算法分配流量,接收端通过 ARP 协商机制引导响应报文由特定网卡处理,从而实现收发路径分离下的负载分担。
1、加载模块并启用 ALB:modprobe bonding mode=6 miimon=100
2、配置 bond0 为静态 IP,关闭 STP(若使用桥接):STP=off
3、在各从属网卡配置中设置MASTER=bond0、SLAVE=yes,并在 bond0 配置中加入BONDING_OPTS=”mode=6 miimon=100″
4、触发 ARP 重协商:echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore与echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce
五、基于策略 路由 的多网卡独立出口配置
当需要不同业务流量走不同物理链路(如管理网段走 eth0、业务网段走 eth1),可绕过 bonding,采用策略路由方式实现网卡分工。每张网卡保留独立 IP 与路由表,通过源地址匹配规则决定出口路径。
1、为 eth0 配置主 IP(如 192.168.1.10/24),eth1 配置次 IP(如 10.0.2.20/24),均设置 ONBOOT=yes 且 BOOTPROTO=static
2、创建独立路由表(/etc/iproute2/rt_tables),追加两行:100 table_eth0与101 table_eth1
3、分别为两张网卡添加默认路由与直连路由:ip route add default via 192.168.1.1 dev eth0 table table_eth0,ip route add 192.168.1.0/24 dev eth0 src 192.168.1.10 table table_eth0
4、添加策略规则:ip rule add from 192.168.1.10/32 table table_eth0,ip rule add to 192.168.1.0/24 table table_eth0,同理配置 eth1 对应规则