路由器开启NAT和防火墙功能后性能能下降多少?

1. 场景设定

假设一个常见的中小企业出口架构:

内网 → 防火墙(NAT) → 路由器(NAT) → 运营商 → 互联网

  • 内网地址:192.168.0.0/24
  • 防火墙外网口地址:10.10.10.2(私网)
  • 路由器内网口地址:10.10.10.1
  • 路由器外网口地址:203.1.1.2(公网)

在这个架构下:

  • 防火墙把内网 192.168.0.x 转成 10.10.10.2
  • 路由器再把 10.10.10.2 转成 203.1.1.2

2. NAT 基本原理回顾

2.1 源地址转换(SNAT

将数据包的源地址转换为另一个地址,常用于内网访问外网。

2.2 目的地址转换(DNAT

将数据包的目的地址转换为另一个地址,常用于外网访问内网服务器。

2.3 NAT 表的匹配

  • NAT 设备会维护一个转换表(会话表),记录 内网 IP:端口 ↔ 外网 IP:端口 的对应关系。
  • 会话一旦超时或重置,映射关系就消失。

3. 双 NAT 常见坑

3.1 回包路径不一致(Asymmetric Routing

当外网设备回包时,如果绕过了其中一个 NAT 设备(例如有另一条链路),会导致 NAT 表找不到映射,包直接被丢弃。

典型场景

  • 路由器多出口策略路由
  • 防火墙多条上行链路

3.2 端口映射冲突

如果防火墙和路由器都做了 DNAT:

  • 防火墙:203.1.1.2:80 → 192.168.0.100:80
  • 路由器:也有端口映射规则 这可能导致路由器和防火墙的 NAT 规则冲突,外部请求根本到不了内网主机。

3.3 会话超时不同步

防火墙 NAT 会话表超时时间可能比路由器短(或长)。

  • 如果防火墙 NAT 会话先消失,而路由器 NAT 还保留,回包就无法匹配,连接断开。
  • 反之亦然。

3.4 抓包定位困难

双 NAT 后抓包时看到的 IP 并不是真实源 IP,需要倒推两层才能还原真实通信双方。

  • 内网抓到是 内网 IP → 防火墙外网 IP
  • 路由器外网抓到是 路由器外网 IP → 互联网 IP排障时会让运维迷路。

3.5 应用层协议问题

某些应用协议(如 FTP、SIP、H.323、IPSec)会在数据包里嵌入 IP 地址。

如果经过两层 NAT,没有正确开启 ALG(Application Layer Gateway)功能,协议会解析失败。

4. 案例分析

案例 1:双 NAT 导致 VPN 频繁断线

某公司部署了 SSL VPN,服务器在内网,公网用户通过防火墙映射访问。

  • 架构:
    内网 VPN Server (192.168.0.10)
    → 防火墙(SNAT/DNAT)
    → 路由器(SNAT)
    → 互联网
  • 现象: 公网用户可以连接 VPN,但每隔 10 分钟就断一次,需要重新连接。
  • 排查过程:
  1. VPN 日志显示“Peer disconnected”。
  2. 防火墙 NAT 表超时时间 600 秒,而路由器 NAT 表超时时间是 1800 秒。
  3. 当防火墙 NAT 映射消失后,VPN 数据包回到防火墙时无法匹配 NAT 表,被直接丢弃。
  • 解决方案:
    调整防火墙 NAT 会话超时时间 ≥ 路由器超时时间,保持同步,或将 VPN 端口直接透传到路由器,减少一层 NAT。

案例 2:双 NAT 导致公网访问 Web 服务失败

客户内部有一台 Web 服务器,需要公网访问。

  • 架构:
    Web Server (192.168.0.20:80)
    → 防火墙(DNAT: 203.1.1.2:80 → 192.168.0.20:80)
    → 路由器(SNAT 10.10.10.2 → 203.1.1.2)
  • 现象: 内网访问正常,公网访问不通。
  • 排查过程:
  1. 外部抓包发现能到路由器,但回包丢失。
  2. 路由器没有做 DNAT,只是将 203.1.1.2 转成 10.10.10.2,但回包没有正确返回外网。
  3. 由于两层 NAT 对应关系不一致,回包路径中断。
  • 解决方案:
    让路由器直接做 DNAT(公网→内网服务器),防火墙仅做安全策略,不做 NAT。

5. 规避方案

  1. 减少 NAT 层数
  • 能在一台设备完成的 NAT,就不要两台设备重复做。
  • 如果防火墙和路由器同时存在,建议只保留一处 NAT 功能。
  • 统一 NAT 会话超时时间
  • 如果不得不双 NAT,确保两台设备的 NAT 超时时间一致或路由器 ≥ 防火墙。
  • 端口映射集中管理
  • 所有 DNAT 规则最好集中在出口设备管理,减少配置冲突。
  • 为特殊协议启用 ALG
  • FTP、SIP、H.323、IPSec 等需确保两台设备的 ALG 功能配置正确,否则会话建立失败。
  • 抓包时定位 NAT 位置
  • 分别在内网、防火墙外网口、路由器外网口抓包对比,找出丢包的 NAT 节点。

6. 总结

防火墙和路由器同时做 NAT,看似只是多一步地址转换,实际上会引入会话不同步、路径不一致、端口冲突等问题,尤其在公网访问、VPN、语音视频等业务中风险更高。

在设计网络时,应优先考虑:

  • 最少 NAT 原则:减少不必要的地址转换环节。
  • 出口一致性:确保回包路径与 NAT 会话匹配。
  • 配置集中化:统一管理 NAT 策略,降低出错概率。

否则,即使网络表面 Ping 得通,业务依然可能“断断续续”甚至完全不可用。

阅读剩余
THE END