當單張 100Mbps 網卡頻寬不足,且暫無千兆/萬兆設備預算時,利用 Linux 核心 bonding 模組將兩張實體網卡聚合為一張邏輯介面,可提升吞吐量與提供冗餘。本文以 Red Hat/CentOS 系列為例,示範 mode=0 (balance-rr) 與 mode=1 (active-backup) 兩種最常用模式的完整配置流程。
eth0、eth1(皆為 100Mbps)bond0,靜態 IP 192.168.1.2/24vi /etc/sysconfig/network-scripts/ifcfg-bond0
DEVICE=bond0
TYPE=Bond
BONDING_MASTER=yes
BOOTPROTO=none
IPADDR=192.168.1.2
PREFIX=24
GATEWAY=192.168.1.1
DNS1=192.168.1.1
ONBOOT=yes
BONDING_OPTS="mode=1 miimon=100"
# mode=0 (balance-rr) 輪詢負載均衡,需交換器支援靜態聚合
# mode=1 (active-backup) 主備容錯,無需交換器支援,最穩健
# miimon=100 每 100ms 檢測鏈路狀態
vi /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
TYPE=Ethernet
BOOTPROTO=none
ONBOOT=yes
MASTER=bond0
SLAVE=yes
# 可選:HWADDR=xx:xx:xx:xx:xx:xx # 指定 MAC 避免介面名漂移
vi /etc/sysconfig/network-scripts/ifcfg-eth1
DEVICE=eth1
TYPE=Ethernet
BOOTPROTO=none
ONBOOT=yes
MASTER=bond0
SLAVE=yes
vi /etc/modprobe.d/bonding.conf
alias bond0 bonding
options bonding mode=1 miimon=100
# 若需多組 bond,請依序 alias bond1 bonding 等
systemctl restart network
# 或
nmcli con reload && nmcli con up bond0 && nmcli con up eth0 && nmcli con up eth1
驗證指令:
cat /proc/net/bonding/bond0
ip addr show bond0
ping -c 3 192.168.1.1
輸出應顯示 Bonding Mode: fault-tolerance (active-backup) 或 load balancing (balance-rr),且 Active Slave 顯示正常介面。
| Mode | 名稱 | 需交換器支援 | 頻寬疊加 | 容錯 | 適用場景 |
|---|---|---|---|---|---|
| 0 | balance-rr | 靜態聚合 | 是(理論 2x) | 有 | 單一交換器、追求最大吞吐、封包亂序可接受 |
| 1 | active-backup | 不需要 | 否 | 最強 | 雙上游交換器、高可用優先、設備不支援 LACP |
| 4 | 802.3ad (LACP) | 動態 LACP | 是 | 有 | 標準化、支援 LACP 的企業級交換器、需頻寬疊加 |
| 5 | balance-tlb | 不需要 | 僅送出 | 有 | 無法控制上游交換器、需送出負載分散 |
| 6 | balance-alb | 不需要 | 收發皆有 | 有 | ARP 協商環境、無交換器支援時的折衷方案 |
HWADDR 或 udev 規則固定 ethX 對應實體 MAC。arp_validate、arp_interval。nmcli 或 teamd(Team 驅動為 bonding 繼任者,語法相似但更現代)。# 安裝
dnf install teamd NetworkManager-team
# 建立 team0 (runner=activebackup)
nmcli con add type team con-name team0 ifname team0 config '{"runner":{"name":"activebackup"}}'
nmcli con add type team-slave con-name team0-port1 ifname eth0 master team0
nmcli con add type team-slave con-name team0-port2 ifname eth1 master team0
nmcli con mod team0 ipv4.addresses 192.168.1.2/24 ipv4.method manual
nmcli con up team0