什么是bond?将多块网卡虚拟成为一块网卡的技术,通过bond技术让多块网卡看起来是一个单独的以太网接口设备并具有相同的ip地址。
原理:
网卡工作在混杂(promisc)模式,接收到达网卡的所有数据包,tcpdump工作用的也是混杂模式(promisc),将两块网卡的 MAC地址修改为相同接收特定MAC的数据帧,然后把相应的数据帧传送给bond驱动程序进行处理。
mode=1:在主备模式下,只有主网卡eth0工作,eth1作为备份网卡是不工作的,只有当一个网络接口失效时(例如交换机掉电等),为了不会出现网络中断,系统会按照配置指定的网卡顺序启动工作,保证机器仍能对外服务,起到了失效保护功能。
mode=0:在负载均衡模式下,两块网卡都工作,提供两倍带宽。
操作方法(通用)
加载bond模块
modprobe bonding #加载模块
lsmod | grep bonding #确认模块已经加载

创建 bond 接口配置
# CentOS或者RHEL
nmcli connection add type bond ifname bond0 mode=active-backup
nmcli connection add type ethernet ifname ens33 master bond0
nmcli connection add type ethernet ifname ens34 master bond0
nmcli connection modify bond0 ipv4.method manual ipv4.addresses 192.168.1.100/24 ipv4.gateway 192.168.1.1
nmcli connection up bond0
常用模式(两种核心模式)
模式 0:balance-rr(负载均衡/轮询)
- 特点:数据包轮流从每块网卡发出,实现负载均衡和冗余。
- 优点:带宽叠加,利用率最高。
- 缺点:需要交换机支持(需配置成聚合端口,如 Cisco 的 EtherChannel、华为的 Eth-Trunk),否则会产生乱序或环路。
配置示例(CentOS 7 nmcli):
nmcli con add type bond ifname bond0 mode=balance-rr
模式 1:active-backup(主备模式)
- 特点:只有一块网卡工作,另一块做备用,主网卡出问题后自动切换。
- 优点:无需交换机特殊配置,最通用。
- 缺点:不能叠加带宽,只保证高可用。
配置示例:
nmcli con add type bond ifname bond0 mode=active-backup
查看状态
cat /proc/net/bonding/bond0
总结:
- balance-rr (mode=0) → 带宽叠加 + 冗余(需交换机支持)。
- active-backup (mode=1) → 高可用冗余(最常用,不需交换机支持)
配置示例
一个 CentOS 7 上 bond0 主备模式 (active-backup) 的完整配置文件示例
假设网卡名称为 ens33 和 ens34,bond 接口为 bond0,IP 为 192.168.1.100/24
,网关 192.168.1.1
/etc/sysconfig/network-scripts/ifcfg-bond0
DEVICE=bond0
NAME=bond0
TYPE=Bond
BONDING_MASTER=yes
BOOTPROTO=static
IPADDR=192.168.1.100
PREFIX=24
GATEWAY=192.168.1.1
ONBOOT=yes
# 关键参数:模式 1 主备,链路检测 100ms
BONDING_OPTS="mode=1 miimon=100"
ens33:
DEVICE=ens33
NAME=ens33
TYPE=Ethernet
BOOTPROTO=none
ONBOOT=yes
MASTER=bond0
SLAVE=yes
ens34:
DEVICE=ens34
NAME=ens34
TYPE=Ethernet
BOOTPROTO=none
ONBOOT=yes
MASTER=bond0
SLAVE=yes
如果你要用 balance-rr 模式 (mode=0),只需要改 ifcfg-bond0
里的:
BONDING_OPTS=”mode=0 miimon=100″