BGP 和 NAT 不工作

网络工程 纳特 bgp
2021-07-22 05:32:43

我对 BGP+NAT 有一个奇怪的问题。我有 2 个独立的路由器和 2 个不同的 ISP。

拓扑如下所示:

ISP1--BGP--> RTR1 \
                     \--OSPF-- Palo Alto Firewall-- Internal Network
ISP2 ---BGP--> RTR2 /

希望这是有道理的。

所以我目前有 BGP 和 NAT 与 RTR1 上的 ISP1 一起工作。但是,当我打开 ISP2、通告我们的 /24 并在 RTR2 上发出 NAT 命令时,NAT 停止工作。我在这里错过了什么吗?

谢谢

3个回答

如果我理解正确,您正在为通过 RTR1 和 RTR2 进入 Internet 的流量执行 NAT。

如果这两个路由器之间的 NAT 表没有同步,那么如果在 RTR1 上执行了 NAT 转换,但答案是通过 ISP2 到 RTR2,那么 RTR2 没有此流量的 NAT 条目,因此无法将其转发到始发主机。

解决方案是在 2 个路由器之间同步 NAT 表(取决于路由器型号),或者在另一台设备上执行 NAT 并仅在 BGP 路由器上路由。

如果到达同一目的地的路由最终在 PA 上的成本相同,它将使用 ECMP 在两个 RTR 之间分配流量(取决于配置),可能使用不同的公共 IP 进行 NAT。虽然这可能适用于某些协议(如 UDP),但绝对不适用于其他协议(如 TCP)。TCP 的 SYN 可能会走一种方式,而数据分段则另一种方式——这是行不通的。就像 JFL 指出的那样,它只能与跨 RTR1&2 的同步 NAT 表一起使用。

正如 Jesse 所建议的那样,将 NAT 移至 PA 解决了这个问题,理想情况下使用 PA 和 RTRx 之间的公共 IP 路由(您也可以使用没有 NAT 的私有 IP 链接)。

另一种选择是使用策略路由而不是 ECMP,使每个会话“坚持”到 RTR1 或 RTR2(除非上行链路失败)。

如果您将 NAT 移至 Palo Alto 单元,则 ISR 上的 NAT 不会有任何问题,您只需通过访问段相应地路由流量,无论您选择何种路由方法和任何路由偏好或在您选择之前,更喜欢一条路径而不是另一条路径。