帮助中心 >
  关于云服务器 >
  服务器设置双网卡故障切换:Linux Bonding 配置完整教程
服务器设置双网卡故障切换:Linux Bonding 配置完整教程
时间 : 2026-09-18 11:36:32
编辑 : Jtti

生产环境的服务器最怕什么?不是CPU跑满,不是内存告急——而是网络断了。

一块网卡故障、一根网线松动、一个交换机端口异常,都可能让整台服务器从互联网上“消失”。对于承载业务的生产环境来说,网络中断几分钟造成的损失,可能远超一台服务器本身的成本。

解决这个问题的标准方案是双网卡故障切换——用两块物理网卡组成一个逻辑接口,主网卡工作时备网卡待命,主网卡故障时备网卡在毫秒级内自动接管。本文将手把手教你用 Linux Bonding 实现这一方案,覆盖 UbuntuNetplan)和 RHEL 系(nmcli)两大主流配置方式。

双网卡故障切换的原理:Bonding 主备模式

Linux 内核自带的 bonding 驱动可以将多块物理网卡聚合成一个逻辑接口(通常命名为 `bond0`)。在多种工作模式中,`active-backup`mode 1) 是专门为故障切换设计的模式:只有一块网卡处于活动状态,负责收发所有流量;其余网卡处于备用状态,持续监测主网卡的链路健康。主网卡故障时,备用网卡在毫秒级内接管,交换机通过 Gratuitous ARP 更新 MAC 地址表,流量自动切换到新路径。

关键参数:`miimon=100` 表示每100毫秒检测一次物理链路状态。这个值不能设置过大(超过300毫秒可能导致业务超时),也不能过小(容易产生误判)。另一个容易被忽略的参数是 `fail_over_mac=1`——它让备用网卡在接管时主动同步主网卡的 MAC 地址,避免交换机因 MAC 地址变化而丢弃数据包。

方式一:Ubuntu / Debian 使用 Netplan 配置

Ubuntu 20.04 及以上版本默认使用 Netplan 管理网络。配置前先确认网卡名称:执行 `ip link show` 查看物理接口,通常为 `enp0s3``enp0s8` `eth0``eth1`

第一步:备份现有配置

sudo cp /etc/netplan/*.yaml /etc/netplan/backup/

第二步:编写 Netplan 配置

编辑 `/etc/netplan/01-netcfg.yaml`

yaml

network:

version: 2

renderer: networkd

ethernets:

enp0s3:

dhcp4: false

enp0s8:

dhcp4: false

bonds:

bond0:

interfaces:

- enp0s3

- enp0s8

addresses:

- 192.168.1.100/24

routes:

- to: default

via: 192.168.1.1

nameservers:

addresses:

- 8.8.8.8

- 8.8.4.4

parameters:

mode: active-backup

primary: enp0s3

mii-monitor-interval: 100

fail-over-mac: 1

物理接口 `enp0s3` `enp0s8` 中不配置 IP 地址,所有地址、路由和 DNS 全部由 `bond0` 接管。`primary: enp0s3` 指定主网卡,故障恢复后系统会优先切回这块卡。

第三步:应用配置并验证

sudo netplan apply

cat /proc/net/bonding/bond0

输出中应显示 `Bonding Mode: fault-tolerance (active-backup)``Currently Active Slave` `enp0s3`,两块网卡的 `MII Status` 均为 `up`

第四步:模拟故障测试

拔掉 `enp0s3` 的网线(或在虚拟机中断开该接口),等待23秒后再次查看 `/proc/net/bonding/bond0`,应显示 `Currently Active Slave` 已切换为 `enp0s8`。同时持续执行 `ping 192.168.1.1`,正常情况下应该只有一两个包的延迟波动,不会完全中断。

方式二:RHEL / CentOS / Rocky Linux 使用 nmcli 配置

RHEL 8 及以上版本推荐使用 NetworkManager `nmcli` 命令进行配置,比传统 ifcfg 文件更简洁、可管理性更强。

第一步:创建 Bond 主接口

nmcli connection add type bond \

con-name bond0 ifname bond0 \

bond.options "mode=active-backup,miimon=100,fail_over_mac=1,primary=eth0"

这一条命令创建了名为 `bond0` Bond 连接,指定了主备模式、100毫秒链路检测、MAC 同步策略,以及 `eth0` 为主网卡。

第二步:添加从属网卡

nmcli connection add type ethernet port-type bond \

con-name bond0-port1 ifname eth0 controller bond0

nmcli connection add type ethernet port-type bond \

con-name bond0-port2 ifname eth1 controller bond0

RHEL 9 中使用 `port-type bond` `controller bond0` 参数来建立从属关系;RHEL 8 及更早版本可以使用 `type bond-slave` `master bond0`

第三步:配置 IP 地址

nmcli connection modify bond0 \

ipv4.addresses "192.168.1.100/24" \

ipv4.gateway "192.168.1.1" \

ipv4.dns "8.8.8.8,114.114.114.114" \

ipv4.method manual

如果使用 DHCP,则执行 `nmcli connection modify bond0 ipv4.method auto`

第四步:启用连接

nmcli connection up bond0-port1

nmcli connection up bond0-port2

nmcli connection up bond0

第五步:验证切换效果

cat /proc/net/bonding/bond0

在另一终端持续 Ping 网关,然后执行 `nmcli device disconnect eth0` 模拟主网卡故障。观察 `Currently Active Slave` 是否切换为 `eth1`Ping 是否保持连续(最多丢一两个包)。

配置完成后必须检查的四件事

第一,物理网卡上不能有残留 IP。 如果 `eth0` `eth1` 上仍然有独立的 IP 地址配置,系统会出现多条默认路由,导致选路混乱。执行 `ip addr show eth0` 确认其没有分配 IP

第二,路由表中只能有一条默认路由。 执行 `ip route show default`,输出中应只有一条 `default via ... dev bond0`。如果出现 `eth0` `eth1` 作为出口的默认路由,说明从属网卡上仍有残留配置。

第三,在服务器上配置业务时绑定 bond0 而非物理网卡。 Nginx、数据库、应用服务的监听地址和出站连接都应使用 `bond0` 接口的 IP,而不是 `eth0` `eth1` 的地址。这样故障切换对业务是完全透明的。

第四,交换机端口不需要特殊配置。 与 LACPmode 4)不同,active-backup 模式不需要交换机端的任何配合配置。两块网卡可以连接同一台交换机的不同端口,也可以连接两台不同的交换机——后者能同时防范网卡故障和交换机故障。

双网卡故障切换的适用场景与底层保障

双网卡故障切换的价值在于消除单点故障。只要服务器主板上有两个网卡插槽,或者云服务商支持为实例绑定多块虚拟网卡,这套方案就适用。

但需要明确一点:bonding 解决的是服务器侧网卡和线路的冗余,解决不了上游网络本身的问题。如果机房的出口带宽被跑满、上游线路出现拥堵,bonding 无法提供额外的带宽或绕过上游故障。

因此,故障切换方案的有效性,最终取决于服务器本身的网络基础设施质量。一台接入优质线路的服务器,bonding 是“锦上添花”的可靠性加成;而一台线路本身就不稳定的服务器,bonding 只能解决网卡层面的问题,无法弥补上游网络的质量缺陷。

Jtti 的云服务器方案在这一点上提供了匹配的基础设施保障。香港及美国节点接入 CN2 GIA 精品线路,三网直连优化,晚高峰丢包率稳定在 0.1% 以下。全系标配独享带宽,不存在“邻居抢带宽”导致上游链路拥塞的问题。对于需要部署双网卡故障切换的高可用架构,一台线路稳定、资源独享的底层服务器,能让 bonding 的切换逻辑更加可靠——不会因为上游抖动而触发不必要的“假故障”切换。续费同价政策确保长期运行的成本可预期。

双网卡故障切换是服务器高可用的基础配置,配置本身并不复杂,但细节决定成败。 miimon 的间隔、fail_over_mac 的参数、从属网卡的 IP 清理——每一个细节都影响着切换是否真正“无感”。访问 Jtti 官网,查看香港 CN2 及美国 CN2 云服务器的完整配置与当前优惠,为你的高可用架构选一台底子扎实的服务器。

售前客服
JTTI-Eom
JTTI-Coco
JTTI-Amano
JTTI-Benoit
JTTI-Luca
JTTI-Defl
JTTI-Ellis
JTTI-Selina
技术支持
JTTI-Noc
标题
电子邮件地址
类型
销售问题
销售问题
系统问题
售后问题
投诉与建议
市场合作
信息
验证码
提交