teamd 是 linux 中替代 bonding 的现代用户态网卡聚合方案,依托 networkmanager 实现 lacp、负载均衡或主备模式的可热重载聚合,支持 json 配置、动态 runner 策略与细粒度端口控制。

teamd 是 Linux 中替代传统 bonding 的现代网卡聚合方案,它运行在用户态,通过 JSON 配置、动态 runner 策略和实时状态监控,提供更精细的流量分发与故障响应能力。在全新系统上部署 teamd,关键在于避开内核级绑定的老路径,转而依托 NetworkManager + teamd 守护进程实现可维护、可热重载、支持 LACP 协商的多路径聚合。
安装与基础环境准备
确保系统已启用 NetworkManager 且未禁用(teamd 依赖其管理接口)。执行以下操作:
- 安装 teamd 及配套组件:RHEL/CentOS 系统运行 yum install -y teamd NetworkManager-team;Debian/Ubuntu 系统运行 apt install -y teamd libteam-utils
- 确认 teamd 服务可用:systemctl list-unit-files | grep teamd,应显示 enabled 或 static
- 检查物理网卡名(如 enp3s0、enp4s2),避免使用已被 NetworkManager 自动管理的连接名,建议先 nmcli con show 清理残留配置
创建 team 接口并指定高级 runner 模式
teamd 的核心优势在于 runner 策略可编程。相比 bonding 固定 mode 参数,teamd 支持按需选择并动态调整:
-
LACP 动态协商(推荐对接支持 802.3ad 的交换机):
nmcli connection add type team ifname team0 config '{"runner": {"name": "lacp", "active": true, "fast_rate": true}, "link_watch": {"name": "ethtool"}}' -
哈希负载均衡(无需交换机配合,适合后端服务器):
nmcli connection add type team ifname team0 config '{"runner": {"name": "loadbalance", "tx_hash": ["eth", "ipv4", "ipv6", "tcp", "udp"]}, "link_watch": {"name": "ethtool"}}' -
主备高可用(强调可靠性而非带宽叠加):
nmcli connection add type team ifname team0 config '{"runner": {"name": "activebackup"}, "link_watch": {"name": "arp_ping", "target_host": "192.168.1.1"}}'
添加成员网卡并设置端口优先级与行为
每个 slave 网卡可独立定义优先级、sticky 属性及链路检测方式,这是 bonding 所不具备的细粒度控制:
- 添加第一块网卡(设为高优先级主用):
nmcli connection add type team-slave ifname enp3s0 master team0 con-name team0-enp3s0
再设置其端口参数:nmcli connection modify team0-enp3s0 team.port-config '{"prio": 100, "sticky": true}' - 添加第二块网卡(设为备用):
nmcli connection add type team-slave ifname enp4s2 master team0 con-name team0-enp4s2
设置低优先级:nmcli connection modify team0-enp4s2 team.port-config '{"prio": 50}' - 启用两个 slave 连接:nmcli con up team0-enp3s0 && nmcli con up team0-enp4s2
配置 IP 与持久化验证
IP 地址必须绑定到 team0 主接口,而非成员网卡。配置后立即生效且重启不丢失:
- 分配静态 IPv4:
nmcli connection modify team0 ipv4.method manual ipv4.addresses 192.168.20.100/24 ipv4.gateway 192.168.20.1 ipv4.dns 114.114.114.114 ipv6.method ignore - 启用 team0:nmcli con up team0
- 验证状态:teamdctl team0 state 查看当前 runner、活跃端口及链路状态;ip addr show team0 确认地址已生效;cat /sys/class/net/team0/lower_enp3s0/name 可确认绑定关系











