linux本身不实现静态路由汇聚,需在服务器与交换机协同下分别配置链路聚合(如mode=0/2静态聚合)和静态路由(如ip route add 192.168.10.0/24 via 192.168.20.1 dev bond0),并确保两端参数一致、网关可达、vlan透传正确。

Linux 系统本身不直接“实现静态路由汇聚”,这个说法存在概念混淆。静态路由是三层转发行为,由具备路由功能的设备(如三层交换机、路由器或启用了 IP 转发的 Linux 主机)配置;而“汇聚”通常指链路层的带宽叠加与冗余,即链路聚合(Link Aggregation),分静态(手工聚合)和动态(LACP)两种。
你真正需要的是:在 Linux 服务器与交换机协同下,同时完成链路聚合(保障上行可靠性/带宽)和跨网段通信(依赖静态路由指向正确网关)。这两件事独立但常共存。下面分两块讲清楚怎么做、怎么配对。
一、先做链路聚合:让 Linux 和交换机端口“捆在一起”
前提是服务器网卡支持 bonding,且交换机支持静态聚合(如华三、华为多数型号默认支持)。
- Linux 侧配置 bond4(802.3ad)不适用静态场景——它必须配合 LACP 动态协商。若要静态聚合,服务器必须用 mode=0(balance-rr)或 mode=2(balance-xor),这两者才对应交换机上的“手工聚合组”。
-
交换机侧(以华三为例):
- 创建聚合接口:
interface Bridge-Aggregation 1 - 将物理口加入:
interface GigabitEthernet 1/0/1→port link-aggregation group 1;同理配第二个口 - 聚合口设为 trunk 并放行所需 VLAN:
port link-type trunk,port trunk permit vlan 10 20
- 创建聚合接口:
- 注意一致性:两端速率、双工、MTU、VLAN 允许列表必须一致,否则部分成员口可能无法选中(Selected)。
二、再配静态路由:让跨网段流量“走对门”
链路聚合解决的是“怎么连上去”,静态路由解决的是“连上去之后往哪发”。例如:
- Linux 服务器在 VLAN 20(192.168.20.10/24),网关是核心交换机的 VLANIF20(192.168.20.1)
- 用户终端在 VLAN 10(192.168.10.0/24),网关是汇聚交换机的 VLANIF10(192.168.10.1)
- 服务器要访问用户网段,就得告诉自己:“去 192.168.10.0/24 的包,下一跳是 192.168.20.1”
所以在 Linux 上执行:
ip route add 192.168.10.0/24 via 192.168.20.1 dev bond0
这条命令表示:所有发往用户网段的流量,通过 bond0 接口,交给网关 192.168.20.1 转发。同样,汇聚交换机上也要配一条静态路由指向服务器网段,下一跳是核心交换机 VLANIF20 的地址。
三、关键检查点:别让聚合和路由互相拖后腿
-
bond 接口必须 up 且获取到 IP(或作为纯三层转发口):用
ip link show bond0看状态,cat /proc/net/bonding/bond0确认 slave 口是否全为 “MII Status: up” 和 “State: 0x1”(Selected) - 静态路由不能指向不存在的下一跳:确保网关 IP(如 192.168.20.1)能从 bond0 ping 通,否则路由无效
- 交换机聚合口不能被当成普通 access 口使用:如果聚合口没配 trunk 或没放行对应 VLAN,即使链路通,三层流量也会被丢弃
- 不要在 bond 接口上重复配置子接口(如 bond0.10)再配 VLANIF:那是 Linux 做 Vlan 子接口的玩法,和交换机 VLANIF 是两套体系,混用易出错











