非对称路由故障本质是请求与响应路径不一致,导致状态设备丢包;排查需三步:确认现象(如syn-ack客户端收不到)、双向traceroute比对路径、验证内核路由表/rp_filter/策略规则。

多网卡环境下非对称路由问题,本质是请求包和响应包走了不同路径,导致中间设备(如防火墙、NAT网关、安全策略系统)因状态不匹配或反向路径校验失败而丢弃回包。排查不是靠猜,而是分三步:确认现象、定位路径、验证内核行为。
看现象:先判断是不是非对称路由导致的故障
典型表现包括:
- 从外部能 ping 通服务器 IP,但 telnet 或 curl 端口失败;
- 服务器主动访问外网正常,但外部主动连入时连接超时或间歇性中断;
- 同一网段访问正常,跨网段访问失败;
- tcpdump 抓包看到客户端发了 SYN,服务器回复了 SYN-ACK,但客户端收不到。
查路径:用 traceroute 双向比对去程与回程
单向 traceroute 只能看到请求路径,必须双向执行才能发现分裂:
- 在客户端运行:traceroute -n [服务器IP];
- 在服务器运行:traceroute -n [客户端公网IP](确保反向可达且未被防火墙拦截);
- 对比两条路径中跳数、AS号、关键网关是否一致——若第3跳开始明显不同,基本可确认非对称。
注意:加 -n 避免 DNS 查询干扰;对 TCP 服务,用 sudo traceroute -T -p 443 更贴近真实流量。
验内核:检查路由表、策略规则与反向路径校验
非对称常由三层配置叠加引发,需逐层排查:
- 查主路由表:运行 ip route show,确认是否存在多个 default via 条目,且 metric 值未区分优先级;
- 查策略路由:运行 ip rule show,看是否有 from / to 规则把流量导向非主表;再用 ip route show table [编号] 查对应表内容;
- 查 rp_filter 设置:运行 cat /proc/sys/net/ipv4/conf/all/rp_filter,值为 1 表示严格反向路径检查,易丢回包;推荐临时设为 2(宽松模式)验证:echo 2 > /proc/sys/net/ipv4/conf/all/rp_filter;
- 查 ARP 表状态:运行 ip neigh show,确认网关条目是否为 REACHABLE,若为 FAILED 或缺失,说明二层不通,需先解决物理或交换层面问题。
补验证:用 ip route get 模拟真实报文走向
当怀疑某目标地址走错出口时,别翻路由表,直接问内核:
- ip route get 8.8.8.8 —— 看默认出口是否符合预期;
- ip route get 192.168.1.100 from 10.0.0.50 iif eth1 —— 模拟从 eth1 收到、源为 10.0.0.50 的包,会走哪条路;
- 输出中明确显示 dev 和 via,比静态分析更可靠。











