Bond网卡IP+端口负载均衡配置指南

将 bond 网卡的负载均衡策略修改为基于 IP + 端口(IP+PORT) 的哈希方式,以实现发送和接收流量都能根据 IP + 端口均匀分布到不同从网卡,以下是完整的修改步骤和验证方法。

一、核心修改步骤(临时生效 + 永久生效)

1. 临时修改(立即生效,重启网络 / 服务器后失效)

bash 复制代码
# 1. 先查看当前的哈希策略(确认当前配置)
cat /sys/class/net/bond0/bonding/xmit_hash_policy

# 2. 修改为基于 IP+端口的哈希策略(值为2)
# 0=仅MAC | 1=仅IP | 2=IP+端口 | 3=自定义
echo 2 > /sys/class/net/bond0/bonding/xmit_hash_policy

# 3. 验证修改是否成功
cat /sys/class/net/bond0/bonding/xmit_hash_policy

说明:xmit_hash_policy 主要控制发送流量 的哈希策略;而接收流量的负载均衡,bond 会自动适配该策略(因为接收侧的哈希逻辑与发送侧同源,IP + 端口的哈希能让不同会话的流量分发到不同从网卡)。

2. 永久修改(重启后不失效,推荐)

不同 Linux 发行版的 bond 配置文件路径不同,以下是主流发行版的配置方法:

(1)CentOS/RHEL 7/8/9(nmcli 或 ifcfg 配置)

  • 方法 1:通过 ifcfg 配置文件(推荐)

    bash 复制代码
    # 编辑 bond0 的配置文件
    vi /etc/sysconfig/network-scripts/ifcfg-bond0

    在文件中添加 / 修改以下行:

    bash 复制代码
    # 新增哈希策略配置
    BONDING_OPTS="mode=balance-xor miimon=100 xmit_hash_policy=layer3+4"
    # 说明:
    # mode=balance-xor 是基础(必须是支持哈希的模式:0/2/4/5/6)
    # miimon=100 是链路检测间隔(根据你的环境调整)
    # layer3+4 等价于 xmit_hash_policy=2(IP+端口)

    保存后重启网络:

    bash 复制代码
    # CentOS 7
    systemctl restart network
    # CentOS 8/9
    nmcli connection reload && nmcli connection up bond0
  • 方法 2:通过 nmcli 命令配置

    bash 复制代码
    # 修改 bond0 的连接配置
    nmcli con mod bond0 bond.xmit-hash-policy layer3+4
    # 重启 bond0 连接
    nmcli con up bond0

(2)Debian/Ubuntu(netplan 配置)

bash 复制代码
# 编辑 netplan 配置文件(通常是 /etc/netplan/00-bond.yaml)
vi /etc/netplan/00-bond.yaml

修改配置内容(确保包含 xmit-hash-policy: layer3+4):

bash 复制代码
network:
  ethernets:
    eth0:
      dhcp4: no
    eth1:
      dhcp4: no
  bonds:
    bond0:
      interfaces: [eth0, eth1]
      dhcp4: no
      addresses: [192.168.1.100/24]  # 替换为你的 bond0 IP
      parameters:
        mode: balance-xor  # 基础模式(可选 balance-rr/802.3ad/balance-tlb/balance-alb)
        miimon: 100
        xmit-hash-policy: layer3+4  # 核心:IP+端口哈希

应用配置:

bash 复制代码
netplan apply

二、关键补充:确保接收流量也能负载均衡

接收流量的负载均衡依赖两个前提,需额外确认:

  1. bond 模式必须支持接收负载均衡

    • ✅ 支持的模式:balance-xor(2)、802.3ad(4)、balance-alb(6)

    • ❌ 不支持的模式:balance-rr(0,仅发送轮询)、active-backup(1)、broadcast(3)如果你当前是 mode 0(balance-rr),建议改为 mode 2(balance-xor)+ layer3+4 哈希,才能实现收发双向的 IP + 端口负载均衡。

  2. 交换机侧需匹配配置(仅 mode 4/802.3ad):如果用 mode 4(802.3ad),需在交换机上配置:

    • 端口聚合模式为 LACP

    • 哈希策略也设置为 "基于 IP + 端口"(而非仅 MAC)否则交换机侧仍会将所有流量发往单张从网卡,导致接收流量不均衡。

三、验证修改效果

修改完成后,通过以下命令验证收发流量是否均衡:

复制代码
# 1. 查看最终的哈希策略配置
cat /proc/net/bonding/bond0 | grep "Xmit Hash Policy"
# 预期输出:Xmit Hash Policy: layer3+4

# 2. 同时监控两张从网卡的流量(以 UDP 端口 5000 为例)
# 开两个终端,分别执行:
tcpdump -i eth0 -n udp port 5000  # 监控 eth0 流量
tcpdump -i eth1 -n udp port 5000  # 监控 eth1 流量

# 3. 用多会话压测(如多源端口/目的端口发送 UDP 包)
# 例如用 hping3 模拟多端口流量:
hping3 -2 -p 5000 -k --spoof 192.168.1.200-210 192.168.1.100  # 多源 IP
# 或
hping3 -2 -p 5000-5010 -k 192.168.1.100  # 多目的端口

如果两张网卡的 tcpdump 都能抓到数据包,说明 IP + 端口的负载均衡已生效。

四、总结

  1. 核心配置 :将 xmit_hash_policy 设为 layer3+4(值为 2),实现基于 IP + 端口的哈希负载均衡。
  2. 模式匹配:接收流量要均衡,需选用 balance-xor/802.3ad/balance-alb 模式(避免 balance-rr)。
  3. 永久生效:需修改 bond 配置文件(而非仅临时 echo),确保重启后配置不丢失。

如果修改后仍有单网卡流量集中,大概率是测试流量的会话单一(如仅一个源 IP + 端口 + 一个目的 IP + 端口),需用多会话压测验证。

相关推荐
金色光环1 小时前
FreeModbus释放底层的 TCP 监听端口
服务器·网络·tcp/ip
数智化精益手记局1 小时前
拆解物料管理erp系统的核心功能,看物料管理erp系统如何解决库存积压与缺料难题
大数据·网络·人工智能·安全·信息可视化·精益工程
灰子学技术3 小时前
Envoy HTTP 过滤器处理技术文档
网络·网络协议·http
Olivia051405144 小时前
Voohu:音频变压器的屏蔽接地技术对50Hz工频噪声抑制的影响
网络·机器人·信息与通信
byoass5 小时前
智巢AI知识库深度解析:企业文档管理从大海捞针到精准狙击的进化之路
开发语言·网络·人工智能·安全·c#·云计算
zhihuishuxia__5 小时前
Multiplex通讯(多路复用通讯)
网络·图像处理·数码相机·计算机视觉·自动化
勤劳的进取家5 小时前
数据链路层基础
网络·学习·算法
ZenosDoron5 小时前
虚拟机软件(如 VirtualBox、VMware)通常提供三种主要的网络模式
网络·智能路由器
乌托邦的逃亡者5 小时前
CentOS/Openeuler主机中,为一个网卡设置多个IP地址
linux·运维·网络·tcp/ip·centos
@insist1236 小时前
信息安全工程师核心考点:物理与环境安全(下篇)
网络·安全·软考·信息安全工程师·软件水平考试