大数跨境

双出口不对称路由排障复盘:回包进错防火墙,会话为什么会丢?

双出口不对称路由排障复盘:回包进错防火墙,会话为什么会丢? 网络工程师俱乐部
2026-10-12
3
导读:双出口最怕的不是链路断,而是请求从 A 出口出去,回包从 B 出口回来。本文从会话表、NAT 映射、BGP 回程和双防火墙架构,拆一次典型不对称路由排障。

双出口网络里,最怕的不是链路断了。

链路断了,反而好排。

接口 Down、BGP 邻居断、健康检查失败,告警一出来,方向很清楚。

真正麻烦的是:

链路都在,路由也有,策略也放了,业务却偶发失败。

用户反馈通常是:

  • 有时能打开,有时打不开;

  • 刷新几次又好了;

  • 强制走单出口就正常;

  • 双出口同时启用就异常;

  • 防火墙策略日志看不到明显拒绝;

  • 抓包只看到单方向流量。

这类问题,别只盯着“出口有没有断”。

更应该先问一句:

请求从哪出去?回包又从哪回来?

01

PART


不对称路由本身不一定错,状态设备才怕它

先说一个容易误解的点:

不对称路由本身不是原罪。

如果中间全是普通三层设备,正向路径和回程路径不一样,不一定有问题。路由器只看目的地址转发,不关心这条流量是不是“有来有回”。

但企业网络很少这么简单。

中间往往有:

  • 防火墙;

  • NAT;

  • VPN 网关;

  • WAF;

  • 负载均衡;

  • SD-WAN;

  • 上网行为管理;

  • 安全审计设备。

这些设备很多都是有状态设备。

它们不是简单转发包,而是要维护会话表。

比如一条访问:

text

10.10.30.25:52341 → 203.0.113.80:443

防火墙会记录:

  • 源地址、目的地址;

  • 源端口、目的端口;

  • 入口、出口;

  • 命中的策略;

  • NAT 后的地址和端口;

  • TCP 状态到了哪一步。

如果 SYN 从 FW-A 出去,SYN/ACK 却从 FW-B 回来,FW-B 没看到前面的 SYN,也没有这条流对应的 NAT 映射条目。

它很可能直接判断:

这不是一条合法会话。

然后丢掉。

注意,这里不是说 FW-B 没有 NAT 配置。

它可能有同样的 NAT 地址池配置,但它没有这条具体流的动态 NAT 映射条目。

这是很多双出口故障的关键。

02

PART


一个典型现场:单出口正常,双出口异常

看一个典型场景。

企业有两条互联网出口:

text

内网用户

  ↓

核心交换机

  ↓

FW-A / FW-B

  ↓

ISP-A / ISP-B

  ↓

公网云服务

客户有自有公网段,通过两条运营商线路做多线接入。平时两条出口都启用。

现象是:

  • 单独走 ISP-A,业务正常;

  • 单独走 ISP-B,业务也基本正常;

  • 两条出口同时启用,某个 SaaS 业务偶发超时;

  • 出口带宽不高;

  • 防火墙策略看起来都放了;

  • 用户说“刷新几次,有时候又好了”。

一开始很容易怀疑:

是不是运营商丢包?
是不是云服务不稳定?
是不是防火墙策略没放全?

但如果盯住一条具体流之后,问题就清楚了。

在 FW-A 上看到:

text

Client 10.10.30.25 → Cloud 203.0.113.80:443

状态:SYN_SENT

已做源 NAT

看不到返回的 SYN/ACK

在 FW-B 上看到:

text

收到返回方向 SYN/ACK

无匹配会话

无对应 NAT 映射条目

日志:out-of-state / no session matched / reverse path check failed

这说明什么?

说明请求从 FW-A 出去了,回包却从 FW-B 回来了。

FW-B 没见过这条连接的开始,也不知道怎么还原 NAT,于是把回包丢了。

链路没断。

路由也不是完全没有。

真正的问题是:

同一条业务流没有经过同一台状态设备。

03

PART


为什么路由表“看起来都对”,业务还是错?

排这种问题,很多人会说:

路由表里不是都有默认路由吗?

但双出口排障不能只看“有没有路由”。

要看的是:

text

正向路径:请求怎么出去?

回程路径:响应怎么回来?

举个例子。

正向路径:

text

Client → Core → FW-A → ISP-A → Cloud

回程路径:

text

Cloud → ISP-B → FW-B → Core → Client

对路由来说,两边都可能“可达”。

但对防火墙和 NAT 来说,这是一条被拆开的会话。

这里还要补一个细节:

TCP 本身并不要求路径必须对称。
只要包能到,序列号正确,TCP 可以工作。
真正拦住它的,通常是中间的状态检测、NAT 映射、反欺骗检查或会话一致性问题。

所以,不对称路径的核心不是“TCP 不喜欢”,而是:

状态设备没有看到完整会话。

04

PART


哪些场景最容易出现回程走错?

1

自有公网段多线 BGP 宣告

如果企业有自己的公网地址段,同时通过 ISP-A、ISP-B 做 BGP 宣告,那么回程路径就不完全由你决定。

你从 ISP-A 出去,不代表对端一定从 ISP-A 回来。

公网回程可能受这些因素影响:

  • 上游运营商选路;

  • AS Path;

  • Local Preference;

  • MED;

  • Community;

  • 对端网络策略;

  • CDN 或云厂商边界调度。

这里有个常见误区:

不是把公网段切更细宣告出去,就一定能控制回程。

很多运营商对 IPv4 小于 /24 的明细路由会过滤。

所以 BGP 控制回程,只能“影响”,不能保证全网都按你想的走。

2

NAT 地址没有和出口绑定

双出口最常见的坑,就是 NAT、出口、路由没有绑定清楚。

稳妥做法应该是:

text

走 ISP-A → 使用 ISP-A 对应 NAT 地址

走 ISP-B → 使用 ISP-B 对应 NAT 地址

如果一条流从 A 出去,却用了可能从 B 回来的地址,故障就会变成随机的。

尤其是双防火墙、共享地址池、自有公网段、多线 BGP 场景,更要注意这个问题。

3

双防火墙 Active-Active 设计不完整

很多人喜欢双防火墙 Active-Active,觉得带宽利用率高。

但这里要分清两件事:

会话同步解决的是:

FW-A 建的会话,FW-B 能不能看到。

路由一致性解决的是:

回包到底会不会进到正确设备。

这两个问题不是一回事。

即使会话同步正常,如果两台设备的:

  • 路由表不一致;

  • PBR 不一致;

  • NAT 策略不一致;

  • 安全策略不一致;

  • 上下行路径不一致;

仍然可能出问题。

Active-Active 不是不能做,但一定要确认:

text

会话同步 + NAT同步 + 路由一致 + 策略一致 + 回程可控

少一个都可能埋雷。

4

ECMP / SD-WAN 路径发生变化

这里也要说严谨一点。

大多数现代 ECMP 默认不是逐包负载,而是基于五元组做哈希,尽量保证同一条流走同一路径。

真正危险的是:

  • 链路抖动;

  • BFD/健康检查频繁切换;

  • 下一跳集合变化;

  • SD-WAN SLA 判断频繁漂移;

  • 策略路由动态调整;

  • 某些设备启用了逐包负载。

这些都会导致会话中途路径发生变化。

对普通路由来说,这可能只是换条路。

但对经过 NAT、防火墙、审计设备的 TCP 会话来说,就可能直接断。

05

PART


排这种问题,别看整网,要盯一条流

不对称路径排障,最忌讳泛泛地看。

不要一上来就问:

网络通不通?
出口有没有丢包?
默认路由有没有?

这些都太粗。

正确做法是锁定一条具体五元组:

text

源IP:10.10.30.25

源端口:52341

目的IP:203.0.113.80

目的端口:443

协议:TCP

然后看它的完整路径。

可以按这 4 个问题查。

第一,SYN 从哪台设备出去?

看防火墙会话表、策略日志、NAT 表、抓包。

不同设备命令不同,但检查方向类似。

示例:

text

查看会话表:session table / connection table

查看NAT表:xlate / nat session

查看策略命中:policy hit / security log

查看出接口:egress interface

常见命令方向:

text

Cisco ASA:show conn / show xlate

FortiGate:diagnose sys session list

华为/深信服/H3C:查看防火墙会话表、NAT会话表、策略命中日志

不要死背命令,重点是看:

  • 入接口;

  • 出接口;

  • NAT 后地址;

  • 会话状态;

  • 命中的策略。

第二,NAT 映射建在哪台设备上?

如果 FW-A 做了源 NAT,那么回包最好也回到 FW-A。

因为 NAT 映射条目在 FW-A 上。

FW-B 即使有相同的 NAT 规则,也不代表它有这条流的动态映射。

这是很多人容易混淆的点。

第三,SYN/ACK 从哪回来?

这一步最关键。

如果 FW-A 只看到:

text

SYN 出去

看不到 SYN/ACK 回来

而 FW-B 看到:

text

收到 SYN/ACK

但无匹配会话

那基本就坐实了:回程走错了。

抓包时可以用类似过滤条件:

text

ip.addr == 10.10.30.25 && ip.addr == 203.0.113.80

tcp.flags.syn == 1

tcp.analysis.retransmission

重点不是抓很多包,而是看同一条流有没有完整三次握手:

text

SYN →

← SYN/ACK

ACK →

第四,有没有 RPF / 反欺骗丢包?

很多防火墙或路由设备会做反向路径检查。

如果一个包从某个接口进来,但设备查路由后发现:

到这个源地址的回程不应该走这个接口

就可能触发:

text

reverse path check failed

anti-spoofing drop

invalid packet

out-of-state

这种日志非常有价值。

看到它,不要只改策略,要回头查路径。

06

PART


一张决策表:怎么判断是哪类问题?

现象 优先判断 下一步
单出口正常,双出口异常 回程不一致 固定出口对比测试
FW-A 会话停在 SYN_SENT 回包没回到 FW-A 查 FW-B 是否收到 SYN/ACK
FW-B 有 out-of-state 日志 回包进错设备 查 BGP / NAT / PBR
NAT 表只在 FW-A 有 NAT 映射未同步 查 NAT 与出口绑定
HA 切换后部分业务异常 会话同步问题 查 session sync / NAT sync
SD-WAN 切换后业务中断 会话路径漂移 查 SLA 策略和按流粘滞
出口 IP 变化后业务异常 回程路径变化 查 CDN / 云侧 / BGP 回程

排双出口故障时,先把现象做个归类,别一上来全网乱查。

07

PART


怎么修?不要只想着“再放一条策略”

这类问题的解决方式,一般有 5 类。

1

NAT 和出口绑定

最基础,也最有效。

text

走 ISP-A → 用 ISP-A 地址池 NAT

走 ISP-B → 用 ISP-B 地址池 NAT

不要让出口、NAT 地址、路由策略三者各管各的。

2

关键业务固定出口

不是所有业务都适合负载均衡。

像这些业务,稳定性往往比带宽利用率更重要:

  • ERP;

  • OA;

  • 银行接口;

  • 视频会议;

  • 云数据库;

  • 专线互联;

  • 重要 SaaS 系统。

可以用 PBR、SD-WAN 应用策略、路由策略固定出口。

3

用 BGP 影响回程

如果是自有公网段多线接入,就要设计 BGP 回程策略。

常见手段包括:

  • AS Path Prepend;

  • MED;Community;

  • 更优路由宣告;

  • 主备宣告;

  • 分运营商策略。

但要记住:

BGP 可以影响回程,不等于完全控制回程。

公网里的最终路径选择,不只由你决定。

4

双防火墙要么主备,要么把同步做完整

如果业务稳定性要求高,很多时候主备比双活更简单可靠。

如果必须双活,就要确认:

  • 会话是否同步;

  • NAT 是否同步;

  • 路由是否一致;

  • PBR 是否一致;

  • 策略是否一致;

  • 回程是否可能打到另一台设备。

有些设备可以开启 asymmetric routing 或放宽 TCP 状态检查。

但这更像临时止血,不建议当长期设计。

因为它可能降低安全检测、会话审计和日志准确性。

5

SD-WAN / ECMP 要保证按流粘滞

多路径负载时,要确保同一条 TCP 流尽量走同一条路径。

尤其不要在有状态安全设备前后做不可控的逐包负载。

如果健康检查频繁抖动,要先解决链路质量和策略阈值,不要让业务会话在不同出口之间来回漂。

08

PART


写在最后

双出口网络里,最怕的不是断链。

断了,告警会告诉你。

真正麻烦的是:

链路没断,路径走偏;
路由都有,会话不完整;
策略放了,回包进错门。

排这种问题,要先画两条线:

text

正向路径:请求怎么出去?

回程路径:响应怎么回来?

然后盯住同一条五元组,看它有没有经过同一台状态设备。

这才是不对称路由排障的关键。

你现场遇到过这种“双出口偶发失败”的问题吗?


【声明】内容源于网络
0
0
网络工程师俱乐部
这里是「全国网络工程师聚集地」。提供最新的网工技术经验、最前沿的行业资讯以及大佬心路历程,欢迎关注。
内容 5836
粉丝 0
网络工程师俱乐部 这里是「全国网络工程师聚集地」。提供最新的网工技术经验、最前沿的行业资讯以及大佬心路历程,欢迎关注。
总阅读35.0k
粉丝0
内容5.8k