Ubuntu 24.04 双网卡 bond0 绑定

Ubuntu 24.04 双网卡 bond0 绑定

一、前期准备:添加双网卡(VMware 虚拟机+物理机)

(一)VMware 虚拟机添加双网卡(详细步骤+原理)

步骤1:关闭虚拟机

操作 :选中目标 Ubuntu 24.04 虚拟机 → 右键 → 电源 → 关闭客户机
原因:VMware 硬件变更(添加/修改网卡)需虚拟机完全关机,挂起或开机状态下无法生效,且可能导致系统识别异常。

步骤2:添加第一块物理网卡(若已有可跳过)
  1. 选中虚拟机 → 点击「编辑虚拟机设置」;
  2. 硬件列表中点击「添加」→ 选择「网络适配器」→ 点击「下一步」;
  3. 网络连接选择(2块网卡需一致):
    • 桥接模式:直接连接物理网络,可与宿主机/外网通信(推荐测试用);
    • 仅主机模式:仅与宿主机及同网络虚拟机通信;
  4. 勾选「启动时连接」→ 点击「完成」→ 「确定」。
    原因
  • 网络适配器是虚拟机与外部通信的硬件基础,需先创建第一块网卡作为绑定的基础设备;
  • 勾选「启动时连接」确保开机后网卡自动启用,无需手动激活;
  • 2块网卡必须同网络模式,否则属于不同网络域,无法实现绑定(绑定要求从设备在同一网络环境)。
步骤3:添加第二块物理网卡

操作 :重复步骤2的所有操作,确保网络连接模式与第一块网卡完全一致(如均为桥接),最后点击「确定」。
原因:双网卡绑定需至少2块物理网卡,一块承担主流量,一块备用或分担流量(负载均衡模式),缺少第二块网卡无法实现高可用/带宽叠加功能。

步骤4:开机验证网卡识别(关键)

启动Ubuntu虚拟机,执行以下命令确认2块网卡已被系统识别:

bash 复制代码
ip addr  # 查看所有网络设备信息

命令解析

  • ip:Ubuntu 内置的网络配置工具,功能覆盖 ifconfig
  • addraddress 的缩写,用于查看网卡IP、设备名等信息;
    预期输出
  • 显示2块以太网网卡(类型为 ether),设备名通常为 ens33ens37(或 eth0eth1),记录这两个网卡名(后续配置需用到);
  • 网卡状态可能为 DOWNUP,无需手动激活,后续配置会自动处理。

(二)物理机添加双网卡(简要说明)

  1. 关闭物理机电源,打开机箱,将第二块网卡插入空闲PCIe插槽;
  2. 开机后执行 ip addr 命令,确认系统已识别新增网卡(识别逻辑与虚拟机一致);
  3. 若未识别,需安装网卡驱动(通常Ubuntu会自动适配主流网卡)。

二、配置 bond0 绑定(balance-rr 轮询模式+命令解析)

步骤1:安装辅助工具(可选但推荐)

bash 复制代码
sudo apt update && sudo apt install -y ifenslave

命令解析

  • sudo:以管理员权限执行(网络配置需root权限);
  • apt update:更新软件包索引,确保获取最新的工具版本;
  • apt install -y ifenslave:安装网卡绑定辅助工具,-y 自动确认安装(无需手动输入y);
    原因ifenslave 可辅助管理bond从设备,增强绑定稳定性,虽非必需,但能减少配置异常概率。

步骤2:备份原有网络配置(避免冲突)

bash 复制代码
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 专属配置文件

bash 复制代码
sudo vim /etc/netplan/bond0.yaml

命令解析

  • vim:Ubuntu 内置文本编辑器(若不习惯,可替换为 nano);
  • /etc/netplan/bond0.yaml:新建 bond0 配置文件(Netplan 会自动加载该目录下的所有 .yaml 文件);
    写入配置 (替换 ens37ens38 为实际网卡名):
yaml 复制代码
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:应用配置并生效

bash 复制代码
sudo netplan apply

命令解析

  • netplan apply:Netplan 核心命令,用于加载并应用新的网络配置;
  • 无需重启系统,配置即时生效;
    原因:触发系统创建 bond0 虚拟网卡,将2块物理网卡绑定为从设备,并加载IP、网关等配置。

三、验证 bond0 绑定效果(步骤+命令解析)

测试1:查看 bond0 基本状态

bash 复制代码
ip addr show bond0

命令解析

  • ip addr show 设备名:查看指定设备的详细网络信息;
    预期输出
  • 显示 inet 192.168.8.124/24(bond0 已配置静态IP);
  • 状态为 UP,LOWER_UP(网卡已启用且链路正常);
    原因:确认 bond0 虚拟网卡创建成功且IP配置正确。

测试2:查看绑定详细参数

bash 复制代码
cat /proc/net/bonding/bond0

命令解析

  • cat:读取文件内容并输出;
  • /proc/net/bonding/bond0:系统内核维护的 bond0 状态文件,记录绑定模式、从设备状态等关键信息;
    关键输出解析
  • Bonding Mode: load balancing (round-robin):确认绑定模式为轮询负载均衡;
  • Slave Interface: ens37ens38:均显示 MII Status: up(2块物理网卡均正常工作);
  • MII Polling Interval (ms): 100:验证心跳检测间隔配置生效;
    原因:确认绑定参数与配置一致,从设备正常挂载。

测试3:验证网络连通性

bash 复制代码
# 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 模式)
  1. 打开第一个终端,持续ping目标IP(产生稳定流量):
bash 复制代码
ping 192.168.8.200 -f  # -f 快速ping,产生大量流量
  1. 打开第二个终端,查看2块网卡的流量统计:
bash 复制代码
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)故障切换测试
  1. 保持ping命令持续运行(ping 192.168.8.1);
  2. 禁用其中一块网卡(模拟故障):
bash 复制代码
sudo ip link set ens37 down

命令解析

  • ip link set 网卡名 down:禁用指定网卡(链路断开);
  1. 观察结果:
    • ping 终端:仅丢1-2个包(切换时间),随后恢复正常;
    • 查看 bond0 状态:
bash 复制代码
cat /proc/net/bonding/bond0 | grep "MII Status"

预期输出 :ens37 显示 down,ens38 显示 up,流量自动切换到 ens38;

  1. 恢复网卡:
bash 复制代码
sudo ip link set ens37 up

原因:验证 bond0 的高可用能力,单网卡故障时业务不中断。

四、环境还原:取消 bond0 绑定(步骤+命令解析)

若需恢复单网卡模式,按以下步骤操作:

步骤1:删除 bond0 配置文件

bash 复制代码
sudo rm -f /etc/netplan/bond0.yaml

命令解析

  • rm -f:强制删除文件(忽略不存在的文件,无提示);
    原因 :Netplan 仅加载 /etc/netplan/ 下的 .yaml 文件,删除后 bond0 配置失效。

步骤2:恢复原始网络配置

bash 复制代码
sudo mv /etc/netplan/01-network-manager-all.yaml.bak /etc/netplan/01-network-manager-all.yaml

命令解析

  • mv:移动/重命名文件,将备份文件恢复为原始配置文件;
    原因:恢复到绑定前的网络配置状态。

步骤3:应用还原配置

bash 复制代码
sudo netplan apply

命令解析 :加载恢复后的原始配置,删除 bond0 虚拟网卡,物理网卡恢复独立状态;
原因:使还原配置生效,系统恢复单网卡工作模式。

步骤4:验证还原结果

bash 复制代码
# 查看bond0是否存在(应提示"未找到设备")
ip addr show bond0
# 查看物理网卡状态(应恢复独立IP或DHCP状态)
ip addr show ens37
# 测试网络连通性
ping www.baidu.com -c 4

预期结果 :bond0 消失,物理网卡恢复独立工作,网络连通正常;
原因:确认还原操作成功,系统网络状态恢复到绑定前。

相关推荐
飞梦工作室29 分钟前
PHP 中 php://input 的全面使用指南
android·开发语言·php
摸鱼仙人~1 小时前
VMware虚拟机(以Ubuntu为例)的共享文件夹挂载操作
linux·chrome·ubuntu
Evan芙1 小时前
ifconfig 命令详解
linux·网络·ubuntu
2401_865854881 小时前
云服务器的IP是干嘛的?有什么作用?
服务器·tcp/ip·php
摸鱼仙人~2 小时前
Ubuntu系统安装VMware Tools 完整流程(解压→安装)
linux·运维·ubuntu
ZRT00012 小时前
Ubuntu 22.04安装ESP-IDF
linux·ubuntu·esp32·esp-idf
Dillon Dong3 小时前
【超详细】Ubuntu 上 MySQL 5.7 升级 MySQL 8 完整指南
linux·mysql·ubuntu
郑州光合科技余经理3 小时前
PHP技术栈:上门系统海外版开发与源码解析
java·开发语言·javascript·git·uni-app·php·uniapp
2501_915921433 小时前
Fiddler抓包工具详解,HTTPHTTPS调试、代理配置与接口分析实战教程
服务器·ios·小程序·fiddler·uni-app·php·webview