NAT 网关的 SNAT 与 DNAT
NAT 网关承担两件事:SNAT 让整个子网的实例共享一条出口访问公网,DNAT 把公网的某个端口映射到指定内网主机。前者是出网共享,后者是少量服务对外,两者组合起来就是多数不出门、少数开个口的常见架构。
基本信息
| SNAT | 规则为子网网段指向弹性公网 IP,同子网实例共享出网 |
|---|---|
| DNAT | 规则为公网 IP 与端口映射到内网 IP 与端口 |
| 路由前提 | 子网路由表要把默认路由指向 NAT 网关 |
| 限制 | DNAT 端口映射不做健康检查,多机对外应改负载均衡 |
| 排查顺序 | 出网不通查 SNAT 与路由,入向不通查 DNAT 与安全组 |
| 计费 | NAT 网关按规格计费,处理流量另计 |
出网与入向排查
| 现象 | 先查 | 再查 |
|---|---|---|
| 实例无法出网 | SNAT 是否覆盖该子网 | 子网默认路由是否指向 NAT |
| 出网慢或超时 | NAT 规格与并发连接数 | 是否有其他流量挤占出口 |
| 公网端口连不上 | DNAT 规则与端口号 | 安全组是否放行该端口 |
| 映射后时通时断 | 后端服务是否健康 | DNAT 无健康检查,需自查 |
配置示意
配置示意
SNAT 条目:子网 10.10.1.0/24 → 弹性公网 IP
DNAT 条目:弹性公网 IP:8080 → 10.10.1.5:80
路由:10.10.1.0/24 子网的默认路由指向 NAT 网关典型使用场景
- 大量内网实例需要访问外部 API 或拉取依赖,共享一条出口
- 少量内部服务需要临时对外暴露端口做联调
- 收拢公网出口,统一做流量审计与限速
- 从多公网 IP 架构收敛为 NAT 出口,降低暴露面
- 配合安全组实现只出不进的隔离网段
DNAT 端口映射不做健康检查,后端服务挂了公网端口依然通但业务报错;对外提供多机服务时应换成负载均衡。
SNAT 按子网粒度生效,新扩的子网如果没加条目就会静默无法出网,扩容流程里要把它列为必查项。
DNAT 映射的端口同样要过安全组,漏配会出现规则生效但连不上的情况,排查时容易误判为网关故障。