两个分公司用专线连起来,总部能 ping 通分公司的服务器,反过来却不通。抓包发现请求过去了,回包不知道往哪走。折腾半天,是回程没路由,这就是回指路由要解决的事。

去程有路,回程没路

去是 A 到 B 的路由,回是 B 到 A 的路由,两条是独立的。NAT 和策略路由经常只配了去程方向,回包就被丢在半路。能 ping 通一半,基本就是这种不对称路由。

怎么配

  • 静态回指:在对端设备上加一条到源网段的静态路由,下一跳指向这边的出口。
  • 配合 NAT:做了源地址转换的,回指路由要指向转换后的地址段,而不是原始私网段。
  • 下一跳写准:下一跳是相邻设备的接口地址,不是自己的,写反了最常见。

排查看这两条命令

先在两边分别看路由表,确认去程和回程各有一条。华为设备 display ip routing-table,看目的网段有没有命中;思科 show ip route 同理。再用 tracert 看回包走到哪一跳断掉,断点处大概率缺路由。

什么时候该改方案

静态回指适合拓扑固定的小网。如果两边网段多、还经常变,用 OSPF 这类动态路由协议自动学路由,比人工维护几十条静态回指靠谱得多。

实际操作里还有个坑,做了端口映射的场景。内网服务器通过防火墙映射出去,外网能进来,内网机器却访问不了映射后的公网地址。这种要在防火墙上配回流,或者内网直接用私网地址访问,别绕公网一圈。

改完路由别忘了保存配置,重启设备丢配置的教训太多了。改之前先备份一份当前配置,改完双向 ping 验证,再让业务方确认一遍。

网络通不通,看的是来回两条路。记住回指路由这根筋,以后遇到单向通,先查回程,能省好几个小时。