NAT 网关基础概念

NAT 网关为 VPC 内多台实例提供共享公网出口:实例不绑公网 IP 也能通过 SNAT 主动访问公网;也可以配置 DNAT 把公网端口映射到内网实例,解决「多台机器都要出公网」的地址与成本问题。

NAT 网关是什么

NAT 网关是 VPC 级的公网网关,为内网实例提供共享公网出口:实例不绑公网 IP 也能通过 SNAT 主动访问公网,对外表现为 NAT 上绑定的 EIP 地址;也可以配置 DNAT 把公网端口映射到内网实例,实现隐藏源站的入向访问。它在指定交换机(可用区)内创建,由平台托管并自动处理节点故障切换。

基本信息

定位VPC 级公网网关:共享出口(SNAT)+ 端口映射(DNAT)
SNAT内网实例主动访问公网,自动完成源地址转换
DNAT公网访问内网:EIP 公网端口映射到实例私网端口
部署形态部署在指定交换机与可用区,规格决定可用带宽与连接数
计费按规格(含固定规格费)加公网带宽或流量费用
高可用平台托管,多可用区部署形态可提供更强容灾能力

典型使用场景

  • 多台应用服务器需要访问第三方接口、拉取依赖包或上报监控数据,统一走 NAT 出口
  • 给对端提供固定出口 IP 白名单:把 SNAT 绑定的 EIP 告知对方即可
  • 内网实例完全不绑公网 IP,减少暴露面同时保留出网能力
  • 用 DNAT 把公网端口映射到内网自建服务,避免实例直接暴露
  • 与负载均衡分工:入口用 SLB,出口用 NAT,两侧互不干扰

典型网络结构

典型网络结构
VPC 内实例(无公网 IP)
  → 路由表 0.0.0.0/0 指向 NAT 网关
  → NAT 网关(绑定 1~n 个 EIP)
  → 公网

实例内自检:curl -s https://ifconfig.me   # 显示 NAT 绑定的 EIP

SNAT 与 DNAT 对比

维度SNATDNAT
方向内网主动出公网公网访问内网
匹配依据来源网段(子网或自定义 CIDR)EIP 上的公网端口
是否必须出网必需,且需要路由配合仅需被外部访问时配置
典型问题新子网未纳入覆盖范围导致不能出网公网端口被占用导致创建失败
NAT 网关需要两处配置同时正确:所在子网的路由表把 0.0.0.0/0 指向 NAT 网关,以及 NAT 上存在覆盖该来源的 SNAT 条目。只做其中一项,实例都不会出网。
自建 NAT(用一台带公网 IP 的实例做转发)虽然成本低,但需要自行处理高可用、带宽上限与单点故障,生产环境更多使用托管型 NAT 网关。

规格与选型要点

  • 按峰值出网带宽选规格,打满后表现为丢包而不是排队等速
  • 按最大并发连接数与每秒新建连接数核对规格,长连接业务尤其要看连接数
  • 核心业务选择支持多可用区容灾的部署形态,单可用区形态本身是一个故障域
  • 需要给多个对端提供白名单时可绑定多个 EIP,出口地址来源更充裕
  • 跨可用区流量可能产生额外费用,部署前查清计费说明

查看 NAT 网关与 SNAT 条目

查看 NAT 网关与 SNAT 条目
aliyun vpc DescribeNatGateways --RegionId cn-hangzhou --VpcId vpc-xxxxxxxx
# 查看 SNAT 条目覆盖的网段与绑定的 EIP
aliyun vpc DescribeSnatTableEntries --RegionId cn-hangzhou \
  --NatGatewayId ngw-xxxxxxxx
NAT 网关是共享出口,任何一台实例的异常出网流量都会占用整体带宽;排查「网络整体变慢」时先看 NAT 的出方向带宽与连接数曲线。

常见现象与原因

现象更可能的原因
内网实例无法出公网子网路由未指向 NAT 网关,或 SNAT 未覆盖该来源网段
出网时快时慢、偶发丢包NAT 规格带宽被打满,超限表现为丢包而非排队
外部访问映射端口超时DNAT 条目缺失,或安全组未放行该端口
对端看到陌生来源地址NAT 绑定了多个 EIP,出口地址按条目分配

易错点

  • 只把实例放进子网就以为能出公网:缺少指向 NAT 网关的默认路由,流量根本不会经过 NAT
  • NAT 网关不等于完整双向公网通道:默认只解决出方向与显式配置的 DNAT 端口映射
  • 带宽规格与连接数是硬上限,超出后表现为丢包与新建连接失败,而不只是变慢
  • 多台实例共用出口时,业务出问题需要按 NAT 绑定的 EIP 与时间点反查,日志里看不到真实来源实例
  • 只按平均带宽选规格:业务高峰打满后表现为随机丢包与连接失败,且监控上带宽曲线看起来「没有明显异常」

数据来源与参考

  • 阿里云 NAT 网关文档
  • 腾讯云 NAT 网关文档
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌