Ubuntu 24.04 双网卡 bond0 绑定
一、前期准备:添加双网卡(VMware 虚拟机+物理机)
(一)VMware 虚拟机添加双网卡(详细步骤+原理)
步骤1:关闭虚拟机
操作:选中目标 Ubuntu 24.04 虚拟机 → 右键 → 电源 → 关闭客户机
原因:VMware 硬件变更(添加/修改网卡)需虚拟机完全关机,挂起或开机状态下无法生效,且可能导致系统识别异常。
步骤2:添加第一块物理网卡(若已有可跳过)
- 桥接模式:直接连接物理网络,可与宿主机/外网通信(推荐测试用);
- 仅主机模式:仅与宿主机及同网络虚拟机通信;
原因:
- 网络适配器是虚拟机与外部通信的硬件基础,需先创建第一块网卡作为绑定的基础设备;
- 勾选「启动时连接」确保开机后网卡自动启用,无需手动激活;
- 2块网卡必须同网络模式,否则属于不同网络域,无法实现绑定(绑定要求从设备在同一网络环境)。
步骤3:添加第二块物理网卡
操作:重复步骤2的所有操作,确保网络连接模式与第一块网卡完全一致(如均为桥接),最后点击「确定」。
原因:双网卡绑定需至少2块物理网卡,一块承担主流量,一块备用或分担流量(负载均衡模式),缺少第二块网卡无法实现高可用/带宽叠加功能。
步骤4:开机验证网卡识别(关键)
启动Ubuntu虚拟机,执行以下命令确认2块网卡已被系统识别:
ip addr # 查看所有网络设备信息
命令解析:
- ip:Ubuntu 内置的网络配置工具,功能覆盖 ifconfig;
- addr:address 的缩写,用于查看网卡IP、设备名等信息;
预期输出: - 显示2块以太网网卡(类型为 ether),设备名通常为 ens33、ens37(或 eth0、eth1),记录这两个网卡名(后续配置需用到);
- 网卡状态可能为 DOWN 或 UP,无需手动激活,后续配置会自动处理。
(二)物理机添加双网卡(简要说明)
二、配置 bond0 绑定(balance-rr 轮询模式+命令解析)
步骤1:安装辅助工具(可选但推荐)
sudo apt update && sudo apt install -y ifenslave
命令解析:
- sudo:以管理员权限执行(网络配置需root权限);
- apt update:更新软件包索引,确保获取最新的工具版本;
- apt install -y ifenslave:安装网卡绑定辅助工具,-y 自动确认安装(无需手动输入y);
原因:ifenslave 可辅助管理bond从设备,增强绑定稳定性,虽非必需,但能减少配置异常概率。
步骤2:备份原有网络配置(避免冲突)
sudo cp /etc/netplan/01-network-manager-all.yaml /etc/netplan/01-network-manager-all.yaml.bak
命令解析:
- cp:复制文件命令;
- /etc/netplan/01-network-manager-all.yaml:Ubuntu 默认网络配置文件路径;
- .bak:备份文件后缀,确保后续可恢复原始配置;
原因:避免新配置与原有配置冲突,若绑定失败可快速回滚。
步骤3:创建 bond0 专属配置文件
sudo vim /etc/netplan/bond0.yaml
命令解析:
- vim:Ubuntu 内置文本编辑器(若不习惯,可替换为 nano);
- /etc/netplan/bond0.yaml:新建 bond0 配置文件(Netplan 会自动加载该目录下的所有 .yaml 文件);
写入配置(替换 ens37、ens38 为实际网卡名):
network:
version: 2 # Netplan 配置版本(固定为2)
renderer: networkd # 使用 systemd-networkd 管理网络(而非 NetworkManager,更稳定)
ethernets:
ens37: # 第一块物理网卡名
addresses: [] # 物理网卡不单独配置IP(IP由bond0统一分配)
dhcp4: false # 禁用DHCP(避免自动获取IP导致冲突)
ens38: # 第二块物理网卡名
addresses: []
dhcp4: false
bonds:
bond0: # 绑定后的虚拟网卡名
addresses: [192.168.8.124/24] # bond0 静态IP(示例:IP+子网掩码)
gateway4: 192.168.8.1 # 网关(根据实际网络修改)
nameservers:
addresses: [223.5.5.5, 119.29.29.29] # DNS服务器(解析域名)
interfaces: [ens37, ens38] # 绑定的2块物理网卡
parameters:
mode: balance–rr # 轮询负载均衡模式
mii-monitor-interval: 100 # 每100毫秒检测一次网卡链路状态
配置原理解析:
- balance-rr 模式:流量按顺序交替从2块网卡发送(如第1个数据包走 ens37,第2个走 ens38),实现负载均衡,提高带宽利用率(需交换机支持,无交换机也可工作,但负载效果稍差);
- mii-monitor-interval: 100:MII(Media Independent Interface)是网卡物理层检测机制,每100ms检测一次网卡是否正常,故障时快速切换,减少业务中断时间;
- 物理网卡 addresses: []:确保物理网卡不单独占用IP,所有网络流量通过 bond0 转发,避免IP冲突。
步骤4:应用配置并生效
sudo netplan apply
命令解析:
- netplan apply:Netplan 核心命令,用于加载并应用新的网络配置;
- 无需重启系统,配置即时生效;
原因:触发系统创建 bond0 虚拟网卡,将2块物理网卡绑定为从设备,并加载IP、网关等配置。
三、验证 bond0 绑定效果(步骤+命令解析)
测试1:查看 bond0 基本状态
ip addr show bond0
命令解析:
- ip addr show 设备名:查看指定设备的详细网络信息;
预期输出: - 显示 inet 192.168.8.124/24(bond0 已配置静态IP);
- 状态为 UP,LOWER_UP(网卡已启用且链路正常);
原因:确认 bond0 虚拟网卡创建成功且IP配置正确。
测试2:查看绑定详细参数
cat /proc/net/bonding/bond0
命令解析:
- cat:读取文件内容并输出;
- /proc/net/bonding/bond0:系统内核维护的 bond0 状态文件,记录绑定模式、从设备状态等关键信息;
关键输出解析: - Bonding Mode: load balancing (round-robin):确认绑定模式为轮询负载均衡;
- Slave Interface: ens37 和 ens38:均显示 MII Status: up(2块物理网卡均正常工作);
- MII Polling Interval (ms): 100:验证心跳检测间隔配置生效;
原因:确认绑定参数与配置一致,从设备正常挂载。
测试3:验证网络连通性
# ping 网关(测试内网连通)
ping 192.168.8.1 -c 4
# ping 外网(测试DNS与外网访问)
ping www.baidu.com -c 4
命令解析:
- ping:测试网络连通性的工具(发送ICMP数据包,接收响应则表示连通);
- -c 4:指定发送4个数据包后停止(避免持续ping占用资源);
预期结果:无丢包,延迟稳定,说明 bond0 网络配置正常;
原因:验证IP、网关、DNS配置无误,bond0 能正常转发网络流量。
测试4:负载均衡/故障切换测试
(1)负载均衡测试(balance-rr 模式)
ping 192.168.8.200 -f # -f 快速ping,产生大量流量
watch -n 1 ifstat -i ens37 -i ens38
命令解析:
- watch -n 1:每1秒刷新一次输出;
- ifstat:查看网卡流量的工具(若未安装,执行 sudo apt install ifstat);
- -i 网卡名:指定查看的网卡;
预期结果:ens37 和 ens38 的 tx(发送)流量基本一致,说明负载均衡生效;
原因:验证 round-robin 模式能将流量均匀分配到2块网卡。
(2)故障切换测试
sudo ip link set ens37 down
命令解析:
- ip link set 网卡名 down:禁用指定网卡(链路断开);
- ping 终端:仅丢1-2个包(切换时间),随后恢复正常;
- 查看 bond0 状态:
cat /proc/net/bonding/bond0 | grep "MII Status"
预期输出:ens37 显示 down,ens38 显示 up,流量自动切换到 ens38;
4. 恢复网卡:
sudo ip link set ens37 up
原因:验证 bond0 的高可用能力,单网卡故障时业务不中断。
四、环境还原:取消 bond0 绑定(步骤+命令解析)
若需恢复单网卡模式,按以下步骤操作:
步骤1:删除 bond0 配置文件
sudo rm -f /etc/netplan/bond0.yaml
命令解析:
- rm -f:强制删除文件(忽略不存在的文件,无提示);
原因:Netplan 仅加载 /etc/netplan/ 下的 .yaml 文件,删除后 bond0 配置失效。
步骤2:恢复原始网络配置
sudo mv /etc/netplan/01-network-manager-all.yaml.bak /etc/netplan/01-network-manager-all.yaml
命令解析:
- mv:移动/重命名文件,将备份文件恢复为原始配置文件;
原因:恢复到绑定前的网络配置状态。
步骤3:应用还原配置
sudo netplan apply
命令解析:加载恢复后的原始配置,删除 bond0 虚拟网卡,物理网卡恢复独立状态;
原因:使还原配置生效,系统恢复单网卡工作模式。
步骤4:验证还原结果
# 查看bond0是否存在(应提示“未找到设备”)
ip addr show bond0
# 查看物理网卡状态(应恢复独立IP或DHCP状态)
ip addr show ens37
# 测试网络连通性
ping www.baidu.com -c 4
预期结果:bond0 消失,物理网卡恢复独立工作,网络连通正常;
原因:确认还原操作成功,系统网络状态恢复到绑定前。

