在AnyRouter上配置多WAN负载均衡时,一个常见问题是:**启用ECMP(等价多路径)后流量仍单边走主WAN口,未实现预期的带宽叠加与会话级分担**。这通常源于未正确配置“出站策略路由(Policy-Based Routing)”或忽略“连接跟踪(Conntrack)模式”设置——AnyRouter默认启用会话保持(Session Stickiness),导致同一TCP/UDP流始终绑定至首个选中的WAN接口,无法动态分散;同时,若未在“负载均衡策略”中启用“按源IP哈希”或“轮询+权重”算法,并关联对应WAN接口的健康检测(如ICMP或HTTP探测),系统将降级为仅故障切换(Failover)模式。此外,NAT规则未针对各WAN口独立配置或SNAT地址池未映射,也会引发回程路径不对称、连接中断等问题。需结合CLI验证`show load-balance status`与`show firewall session`确认实际分流效果。
1条回答 默认 最新
桃子胖 2026-03-14 16:20关注```html一、现象层:ECMP启用后流量仍单边走主WAN口
这是最直观的故障表征:尽管在AnyRouter WebUI中已勾选“启用ECMP”并添加多条WAN接口(如WAN1/WAN2),但实际业务流量(如HTTP下载、视频流)持续经由WAN1出站,
show interface statistics显示WAN2长期空载(RX/TX < 50 Kbps),而WAN1带宽占用率持续>90%。此现象常被误判为“ECMP未生效”,实则暴露底层策略协同缺失。二、机制层:会话保持(Session Stickiness)与Conntrack模式的隐性约束
- AnyRouter默认启用
conntrack mode=strict,强制同一五元组(源IP:端口+目的IP:端口+协议)的所有数据包复用首次建立的连接跟踪条目(show firewall session | grep ESTABLISHED可验证); - ECMP仅作用于新连接建立阶段,而TCP长连接(如HTTPS、SSH)或UDP会话(如DNS/VOIP)一旦绑定WAN1,将永久锁定该路径;
- 若未显式配置
set system conntrack hash-mode src-ip-dst-ip-protocol或禁用sticky(set load-balance policy sticky disable),负载均衡退化为“首次选择即终局”。
三、策略层:出站策略路由(PBR)与负载均衡算法的耦合失效
ECMP本身不决定路径选择逻辑——它仅提供多下一跳能力。真正分流需依赖PBR规则链与负载均衡策略的精准绑定:
配置项 错误配置示例 正确实践 负载均衡算法 仅启用“优先级模式”(Priority) 必须启用 source-ip-hash(会话级分散)或round-robin-weighted(按带宽权重轮询)健康检测 未为WAN2配置ICMP探测或探测间隔>30s 启用 health-check icmp interval 5 fail-count 2,确保WAN2状态实时同步四、NAT层:SNAT地址池映射与回程路径对称性破缺
若仅配置全局SNAT规则(如
set nat source rule 10 outbound-interface 'any'),所有流量将统一使用WAN1公网IP做源地址转换,导致回程包被运营商路由器丢弃(因目的IP非原出口IP)。正确做法是:- 为每个WAN口定义独立SNAT规则:
set nat source rule 20 outbound-interface 'wan2' translation address '203.0.113.2'; - 在负载均衡策略中启用
use-snat-pool,确保出向流量自动匹配对应WAN口的SNAT地址; - 验证回程:从外网用
tcpdump -i eth0 host 203.0.113.1 or 203.0.113.2抓包,确认双向流量IP一致性。
五、验证层:CLI诊断黄金组合与典型输出解读
graph LR A[show load-balance status] -->|显示WAN1/WAN2状态| B[Active: Yes/No] A -->|显示当前算法| C[Algorithm: source-ip-hash] D[show firewall session count] -->|总数| E[Total: 12482] D -->|按out-if统计| F[WAN1: 11920, WAN2: 562] G[show load-balance distribution] -->|会话分布热力图| H[WAN1: ▇▇▇▇▇▇▇▇▇▇ 95%
WAN2: ▇ 5%]六、进阶调优:会话级动态重均衡与连接老化控制
针对高并发短连接场景(如API网关),需突破传统ECMP静态哈希局限:
- 启用连接老化动态调整:
set system conntrack tcp-established-timeout 300(缩短ESTABLISHED超时); - 配置会话重均衡触发器:
set load-balance policy rebalance-on-link-change enable; - 结合应用层标识(如HTTP Host头)做七层分流:
set load-balance policy match application http-host 'api.example.com'。
七、避坑指南:企业级部署必检清单
- ✅ 检查WAN接口MTU是否一致(避免分片导致健康检测失败);
- ✅ 验证BGP/OSPF邻居未向AnyRouter通告默认路由(防止PBR被动态路由覆盖);
- ✅ 确认防火墙全局策略未启用
drop-invalid且conntrack表未满(show system conntrack table-size); - ✅ 测试工具需模拟多源IP(如ab -n 10000 -c 200 http://test.com)而非单IP压测;
- ✅ 升级固件至v7.4.3+(修复v7.2.x中source-ip-hash对IPv6流哈希偏差问题)。
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报- AnyRouter默认启用