在AWS VPC网络架构中,NAT网关是极易踩坑的核心组件,绝大多数新手的认知偏差,都集中在流量方向这个关键点上。很多人会误以为:私有子网配置了NAT网关,就可以实现公私网双向互通。实则完全相反,NAT网关的流量规则是单向锁定的,这也是网络架构搭建、线上服务部署的高频出错点。本文结合网络链路图解,清晰厘清NAT网关的通行规则、部署逻辑与核心禁忌。
一、基础认知:NAT网关的部署位置与底层作用
首先明确核心基础知识点,纠正初始认知偏差:
1. 部署位置:NAT网关必须部署在公有子网
2. 核心目的:只为私有子网内的资源提供出站公网访问能力,而非接收公网入站连接
公有子网的核心特性是绑定公网IP、可对接IGW(互联网网关),NAT网关部署在此,唯一的使命是打通「私有子网→公网」的出站链路,让无公网IP的私有EC2、数据库等资源,能够主动访问互联网下载资源、请求接口,而非让互联网主动访问内网。
NAT Gateway到底是什么
把它想成酒店前台:
外部世界只知道酒店总机号码(NAT的公网IP)
不知道里面每个房间的内部号码(私有EC2的10.0.x.x 地址)
场景1:房间里的人打电话出去(私有EC2访问公网)
320房间 → 拨外线→ 前台帮你接通,并记录:"320房间打出去了一个电话"
对方回电→ 前台查记录 → 知道要转给320房间 → 转接成功 ✅ 这条通——因为前台有记录。
场景2:陌生人从外面打进来找320房间
陌生人拨总机 → "我要找320房间"
前台:?没有任何记录显示有人在等这个电话 → 挂断 ❌ 这条不通——前台没有记录,不知道转给谁。
技术层面就是这一张表
NAT Gateway内部维护一张连接跟踪表:
私有EC2发出请求 → 写入这张表
外部响应回来 → 查表→ 找到对应EC2 → 转发 ✅
外部主动发起连接 → 查表 → 没有记录 → 直接丢弃 ❌
核心规则只有一条:NAT只转发"有出站记录"的流量,没有记录就不转。
二、核心流量逻辑:单向通行,坚决禁止主动入站
这是90%学习者会混淆的关键:NAT网关只响应内网主动发起的请求响应,不接受外网主动发起的任何连接。我们通过ASCII链路图直观看懂双向流量的通断区别。

✅ 允许通行:私有EC2主动出站(正常业务)
内网资源主动发起请求,公网返回响应,链路完整通畅,这是NAT网关的本职工作。
私有子网EC2(私网IP) → 主动发起公网请求
→ NAT网关(公有子网,IP地址翻译)
→ IGW互联网网关
→ 外部公网服务器
外部公网服务器 → 返回请求响应数据
→ IGW
→ NAT网关(匹配内网请求映射记录)
→ 私有子网EC2
简单来说:内网主动问外网,外网可以正常答。NAT网关会临时记录内网的请求映射关系,让外网的响应数据精准回流到发起请求的私有EC2。

❌ 完全禁止:外网主动入站连接(核心误区)
外部互联网任何设备主动发起的连接请求,经过NAT网关时会被直接拦截,无法穿透到私有子网,这也是最容易出错的核心点。
外部互联网设备(任意公网IP) → 主动发起访问请求
→ IGW
→ NAT网关(无任何匹配的内网主动请求映射)
→ 【拦截拒绝】无法到达私有子网EC2坚决记住结论:有NAT网关,绝不等于外网可以访问私有子网。NAT网关不会持久维护入站端口映射,没有内网主动请求的前提下,所有外网主动连接全部无效。
三、误区深度复盘:为什么会理解出错?
新手最常见的两个错误认知,在此彻底纠正:
1. 错误:NAT网关放在公有子网,是为了让外网能访问进来
正确:部署在公有子网,是为了对接IGW,转发内网出站流量,全程服务于内网主动访问外网的需求,和外网入站无关。
2. 错误:私有子网配置NAT后,外网可以主动连接内网服务
正确:NAT仅解决内网出站,不解决外网入站。如果私有子网部署了网站、接口服务,仅靠NAT网关,外网用户永远无法访问。
四、实战解决方案:如何让外网访问私有子网资源?
如果需要对外提供服务,让公网用户主动访问部署在私有子网的EC2服务,绝对不能依赖NAT网关,标准架构方案为:
在公有子网部署ALB/NLB负载均衡器,负载均衡器绑定公网IP、接收外网所有主动入站请求,再通过后端转发规则,将流量分发到私有子网的EC2实例。
完整可访问架构:外网用户 → IGW → 公有子网ALB/NLB → 私有子网业务EC2
五、终极极简总结(牢记避坑)
1. NAT网关位置:公有子网,服务于内网出站流量转发;
2. 唯一允许的流量:私有子网主动发起请求 + 公网对应响应回流;
3. 绝对禁止的流量:外网主动发起的所有入站连接;
4. 核心定位:NAT是内网出网的通道,不是外网入网的入口;
5. 入网需求解决方案:必须搭配负载均衡器,与NAT网关无关。