nat网关是云中专用于私有网络出站snat的托管服务,仅处理私网→公网地址转换,需部署在关联igw路由表的公有子网,私有子网路由指向其id;高可用靠多az独立部署实现,扩容依赖snat pool。

NAT网关本质是云环境中专用于私有网络出站流量地址转换的托管服务,不承担入站转发或状态检测功能,其高可用不是靠主备切换实现,而是依托云平台底层分布式数据面天然保障。真正需要人工干预的是架构设计层面的容灾收敛与流量调度。
理解 NAT 网关的核心工作模式
它只处理“私网→公网”的 SNAT 流程:当 VPC 内实例(如 10.0.1.5)访问互联网时,路由表将 0.0.0.0/0 流量导向 NAT 网关;网关用绑定的公网 IP(或 SNAT POOL 中的某个 IP)替换源地址,并维护连接跟踪表,确保响应包能正确回传。
关键点:
- 必须部署在公有子网中,且该子网需关联含 0.0.0.0/0 → Internet Gateway 的路由表(供其自身出向通信)
- 私有子网的路由表中,0.0.0.0/0 下一跳必须设为该 NAT 网关 ID,不能指向 EIP 或 IGW
- 不处理入站请求,也不做防火墙或深度包检测——这些应由 NVA 或安全组/WAF 承担
单可用区 vs 多可用区高可用策略
云厂商默认提供的 NAT 网关已是单可用区内多节点部署,控制面自动故障转移,无需用户配置主备。所谓“高可用配置”,实际是指如何应对整个可用区中断。
推荐做法是按可用区粒度独立部署:
- 每个可用区(如 AZ-A、AZ-B)各自创建一个 NAT 网关,分别绑定不同 EIP 或 SNAT POOL
- 各可用区内的私有子网,只指向本区 NAT 网关——避免跨区路由导致延迟升高或 AZ 故障时全盘失效
- 不使用“一个 NAT 网关跨多个子网/可用区”的懒人方案,那会把故障域扩大到整个地域
提升出站能力的 SNAT POOL 实践
当业务并发连接数接近单 IP 的 65535 端口上限,或某 EIP 被运营商临时封禁时,SNAT POOL 就成为刚需。
操作要点:
- 提前准备至少 3 个未绑定的弹性公网 IP(建议 BGP 多线类型)
- 创建 NAT 网关时选择“SNAT POOL 模式”,或在已有网关中添加多个 EIP 到 SNAT 条目
- 确认 SNAT 条目的子网范围覆盖所有需出网的私有子网 CIDR
- 连接新建后,源端口和出口 IP 由网关自动轮选,无需应用层感知
与中心辐射型网络协同的关键调整
在带 NVA 的 hub-spoke 架构中,传统做法是让 NVA 公网网卡直持 EIP 出网,存在暴露面大、IP 扩展难等问题。引入 NAT 网关后需重构路径:
- 将 NVA 部署在专用“NVA 子网”中,该子网路由表的 0.0.0.0/0 指向 NAT 网关(而非 IGW)
- NVA 自身不再分配公网 IP,仅保留内网地址,专注做流量镜像、DPI 或 WAF 等增值处理
- 分支子网的默认路由仍指向 NVA(保证东西向流量经检查),但 NVA 发往公网的流量再经一次 SNAT,统一从 NAT 网关出口
- 此举既收缩攻击面,又便于审计全部出站流量来源(都打上 NAT 网关的固定出口标签)










