多网卡绑定链路聚合提升服务器出口带宽实操教程
服务器网卡跑满 1Gbps 后还想提升出口带宽,多网卡绑定(也叫链路聚合、Bonding)是最常见的软件方案。
核心原理是让内核把多张物理网卡聚合成一张逻辑网卡,由驱动根据负载均衡策略分配流量。
本文会讲清楚适用条件、CentOS 与 Ubuntu 下的配置步骤、验证方法,以及绑定后带宽没提升的常见原因。
绑定前先确认这三件事
不是所有服务器都适合做多网卡绑定,提前确认环境能少走弯路:
- 物理网卡至少两张:推荐使用同型号、同速率网卡,比如均为千兆或均为万兆,混插容易出现兼容和协商问题。
- 交换机支持链路聚合:静态捆绑需要交换机手动配置手工链路聚合;LACP 动态聚合则需要交换机启用 802.3ad。如果交换机不支持,绑定后大概率丢包或不通。
- 运营商带宽大于单网卡速率:如果服务器出口流量被限制在 100Mbps,绑定两张千兆网卡也无法突破 100Mbps。先确认运营商给的上行带宽是否有余量。
另外,服务器 CPU 和 PCIe 通道数量也要够用。
多张万兆网卡同时跑满带宽,对 CPU 中断处理能力要求较高。
CentOS / RHEL 系统双网卡绑定配置步骤
以 CentOS 7/8 为例,假设两张物理网卡分别为 eth0 和 eth1,绑定后逻辑口叫 bond0,IP 为 192.168.1.10。
先备份并修改两块物理网卡的配置文件。
eth0 配置(/etc/sysconfig/network-scripts/ifcfg-eth0):
DEVICE=eth0
NAME=eth0
TYPE=Ethernet
BOOTPROTO=none
ONBOOT=yes
MASTER=bond0
SLAVE=yes
eth1 配置(/etc/sysconfig/network-scripts/ifcfg-eth1)只需把 DEVICE 和 NAME 改成 eth1,其余相同。
创建 bond0 配置文件 /etc/sysconfig/network-scripts/ifcfg-bond0:
DEVICE=bond0
NAME=bond0
TYPE=Bond
BONDING_MASTER=yes
BOOTPROTO=static
IPADDR=192.168.1.10
NETMASK=255.255.255.0
GATEWAY=192.168.1.1
ONBOOT=yes
BONDING_OPTS="mode=4 miimon=100 xmit_hash_policy=layer3+4"
写入后重启网络服务:
systemctl restart network
如果你的服务器使用 NetworkManager 管理网络,也可以用 nmcli 快速配置,但网卡配置文件方式更适合无图形界面的服务器场景。
Ubuntu 系统用 netplan 配置绑定
Ubuntu 18.04 以上系统默认使用 netplan。
编辑 /etc/netplan/01-netcfg.yaml:
network:
version: 2
ethernets:
eth0:
dhcp4: false
eth1:
dhcp4: false
bonds:
bond0:
interfaces: [eth0, eth1]
addresses: [192.168.1.10/24]
gateway4: 192.168.1.1
parameters:
mode: 802.3ad
mii-monitor-interval: 100
lacp-rate: fast
然后执行:
sudo netplan apply
不同 Ubuntu 版本对 gateway4 的写法可能不同,建议以系统自带的 netplan 文档为准。
验证多网卡绑定是否生效
配置完成后,先用以下命令确认 bond0 已建立并拿到 IP:
ip addr show bond0
再查看聚合模式和网卡状态:
cat /proc/net/bonding/bond0
重点看 MII Status 是否为 up,Bonding Mode 是否为你配置的模式。
如果出现 link failure,说明其中一块网卡没有正常加入。
想验证带宽提升,可以用 iperf3 在服务器和对端机器之间测速:
# 对端机器启动服务端
iperf3 -s
# 当前服务器作为客户端,多线程跑带宽
iperf3 -c 对端IP -P 4
这里 -P 4 表示并发 4 个连接,这样才能让流量分散到多块物理网卡。
单连接通常很难打满聚合后的总带宽。
绑定后带宽没提升的常见原因
很多用户做完绑定,发现出口带宽还是只有单网卡水平,问题通常出在下面几处:
- 哈希策略不合适:mode 4 下默认按
layer2(MAC 地址)做哈希,如果只是单台对端机器测试,流量会始终走同一块网卡。建议改成layer3+4策略,让不同连接按 IP 和端口分布。 - 交换机聚合模式不匹配:Linux bond mode 4 对应 802.3ad(LACP),如果交换机上配置的是静态手工聚合,两边模式不一致自然无法生效。
- 运营商或上层带宽限制:服务器出口带宽被限速到 1Gbps 以内,即使绑了 4 张千兆网卡也突破不了限制。这种情况需要联系 IDC 服务商或运营商调整带宽上限。
- 网卡速率协商不一致:两张网卡一块跑到 1Gbps,另一块协商成了 100Mbps,聚合带宽会明显偏低。用
ethtool eth0和ethtool eth1检查实际速率。
另外,多网卡绑定主要用于提升“多连接并发”下的总吞吐,单线程下载文件通常还是只能走一个连接。
如果你的业务是单线程大流量传输,绑定不一定有用,可能需要考虑升级物理线路带宽。
如果你正在处理多网卡绑定链路聚合提升服务器出口带宽的问题,建议先按本文步骤完整执行,再根据自己的业务流量模型调整模式或哈希策略。
遇到异常时优先回看上面的避坑部分,多数情况下都是聚合模式或交换机配置不匹配造成的。