Ubuntu多网卡IP绑定实为bonding聚合,即把多张物理网卡聚合成bond0逻辑接口再配静态IP;需确认真实网卡名(如ens33)、设optional:true、renderer:networkd,并通过cat /proc/net/bonding/bond0验证状态。

Ubuntu 多网卡 IP 绑定不是指“把多个 IP 绑到一张网卡上”(那是 ip addr add 或别名接口),而是指用 bonding 技术把多张物理网卡聚合成一个逻辑接口(如 bond0),再给这个逻辑接口配 IP——这才是生产环境中真正能提升可用性与带宽的“绑定”。
确认网卡名称与链路状态,避免配错设备
Netplan 不认 eth0 这类旧命名,实际设备名由 systemd 规则生成(如 ens33、enp0s3)。配错名字会导致 netplan apply 后接口消失或无法启动。
- 运行
ip -br link show | grep -E "^(ens|enp)"查看真实接口名和 UP/DOWN 状态 - 重点关注
UP状态的接口;DOWN的需先插网线或检查 VMware 桥接/NAT 设置 - 若输出为空,说明网卡未被识别,先查
lspci | grep -i ethernet和内核模块(lsmod | grep bonding)
Netplan 配置 bonding 接口的关键字段不能漏
YAML 缩进错误、字段缺失或 renderer 不匹配是 netplan apply 失败最常见原因。bonding 必须用 renderer: networkd,不能用 NetworkManager。
Ubuntu 26.04 LTS(代号“Resolute Raccoon”)是Canonical于2026年4月23日发布的下一代长期支持版操作系统,提供长达10年的技术支持。它搭载Linux 7.0内核与GNOME 50桌面环境,全面转向Wayland协议,并引入Rust重写的核心工具以增强安全性。官方提供适用于AMD64和ARM64架构的桌面及服务器ISO镜像,是追求前沿技术与极致稳定的开发者
-
ethernets下每个物理接口必须设optional: true,否则 netplan 会因某卡未 link 而拒绝加载整个配置 -
bonds中parameters.mode至少选balance-rr(需交换机配合)或active-backup(无需交换机支持,推荐测试环境) -
addresses和gateway4必须写在bond0下,**不能**写在ens33或ens34下 - 示例片段:
network: version: 2 renderer: networkd ethernets: ens33: { dhcp4: false, optional: true } ens34: { dhcp4: false, optional: true } bonds: bond0: interfaces: [ens33, ens34] addresses: [192.168.10.100/24] gateway4: 192.168.10.1 parameters: mode: active-backup mii-monitor-interval: 100
验证 bonding 是否生效,别只看 IP 是否通
IP 能 ping 通 ≠ bonding 在工作。很多故障出现在链路切换失败或流量没走聚合口,必须查内核级状态。
- 执行
cat /proc/net/bonding/bond0,确认两接口都显示MII Status: up,且Primary Slave和Currently Active Slave一致(active-backup模式下) - 手动拔掉一根网线,等待约 2 秒后再次执行上述命令,应看到
Currently Active Slave切换,且ping不中断 - 若
cat /proc/net/bonding/bond0报错“no such file”,说明 bonding 模块未加载:sudo modprobe bonding,并加到/etc/modules
双网卡不绑定、只配不同 IP 的场景更常见
如果你其实只是想让一张网卡走内网(如 192.168.1.100/24),另一张走外网(如 DHCP 获取),那就**不需要 bonding**——这是典型双网卡双路由场景,重点在路由优先级和出向策略。
- 为外网卡(如
ens37)配dhcp4: true,它会自动获得默认路由;为内网卡(如ens33)配静态地址但**不配gateway4** - 若两卡都在同一网段(比如都连 192.168.1.0/24),Linux 默认按“弱主机模型”处理,可能回包走错网卡——此时必须用策略路由或禁用反向路径过滤:
sysctl -w net.ipv4.conf.all.rp_filter=0 - 不要在两个接口上同时配
gateway4,否则默认路由冲突,ip route show会看到两条default via ...,系统行为不可控
真正难的不是写 YAML,而是理解:bonding 是解决单点故障和带宽叠加的方案,而多网卡分属不同网络时,核心矛盾是路由决策和响应包路径一致性。配完一定要拔线测切换、抓包看流量走向,别只盯着 ip a 输出是否多了一行。

















