-
24 分钟
云网络核心概念:一文搞懂NAT网关,彻底分清SNAT与DNAT

大家好,我是知秋一叶!刚接触云上网络的技术人,几乎都会被NAT、SNAT、DNAT这几个概念绕晕:

  • 为什么给云主机绑了弹性IP,还要用NAT网关?
  • 内网实例能上网、外网能访问内网服务,明明是两件事,为什么都和NAT有关?
  • SNAT和DNAT一字之差,到底本质区别是什么?

很多人踩过的坑、配错的路由、排查不通的网络,追根溯源都是对NAT的核心逻辑理解不到位。今天我们就从底层原理到业务场景,把NAT网关这件事讲透,帮你建立清晰的认知框架。

一、NAT网关到底是什么?#

NAT的全称是Network Address Translation,翻译过来就是网络地址转换。它本质上是一种IP地址复用技术:在数据包经过网关设备时,对数据包的源IP地址或目的IP地址进行重写,从而实现“用少量公网IP承载大量内网设备上网”的能力。

落到云环境里,NAT网关就是云厂商托管的一项网络服务,专门用来解决VPC(虚拟私有云)内的地址转换需求。以天翼云CT-NAT Gateway为例,它主要分为两大类:

  • 公网NAT网关:定位是VPC的公网出入口,解决内网实例与互联网之间的地址转换问题,也是我们日常接触最多的类型。
  • 私网NAT网关:定位是内网互访的中转器,主要用于VPC之间、VPC与线下IDC之间的地址转换,多用于解决网段冲突、网络隔离互访等复杂组网场景。

简单来说,NAT网关就是VPC网络的“总前台”——所有进出的流量,都由它统一做地址翻译,内网地址和公网地址不需要一一对应。

下面这张架构图可以直观理解NAT网关在整个VPC网络中的位置:

互联网(公网) 公网NAT网关 绑定弹性公网IP VPC(虚拟私有云) 业务子网 192.168.1.0/24 云主机实例 数据库子网 192.168.2.0/24 MySQL实例 SNAT 出站流量 DNAT 入站流量

二、为什么我们一定要用NAT?#

很多人会有疑问:直接给每台云主机绑定一个弹性IP,不就能上网了吗?NAT存在的价值,远不止“能上网”这么简单。

1. 节约稀缺的公网IPv4资源#

IPv4地址总量有限,采购和持有成本逐年上涨。如果VPC内有几十上百台服务器、容器节点、数据库实例,每台都分配独立公网IP,不仅成本高昂,也是对公网地址资源的极大浪费。 通过NAT网关,几十上百台内网实例可以共享1个或少量几个公网IP访问互联网,性价比提升非常明显。

2. 天然的网络安全屏障#

公网IP直接绑定云主机,意味着这台机器完全暴露在公网上,会持续受到全网扫描、暴力破解等攻击威胁。 使用NAT网关后,内网实例本身没有公网IP,外部网络无法直接主动访问到内网主机。所有公网流量都必须经过网关转发和管控,相当于给整个内网加了一层天然防护,大幅缩小了攻击面。

3. 解决网络地址冲突#

在业务合并、跨VPC互通、混合云组网等场景下,经常会遇到两端内网网段完全重叠的问题。如果直接打通,路由会彻底混乱。 此时私网NAT就可以发挥作用:在不修改两端原有地址规划的前提下,通过中转IP做地址映射,快速实现网络互通,避免了大规模改地址的运维成本。

4. 统一出口,便于管理#

所有内网实例的公网访问,都从NAT网关的固定公网IP出去。 一方面,对接外部合作方时,可以很方便地提供固定出口IP给对方加白名单;另一方面,也便于企业统一做流量审计、访问控制和带宽管控,运维管理效率更高。

三、SNAT:解决“内网主动访问外网”的问题#

什么是SNAT?#

SNAT(Source Network Address Translation) ,即源地址转换。核心是修改数据包的源IP地址,作用方向是内网 → 公网(出站流量)

我们可以用一个通俗的例子理解: 内网的云主机就像公司里的员工,源IP就是员工的工号,只在公司内部有效。当员工要向外网(外部公司)寄快递时,如果直接写工号作为寄件地址,对方根本没法回寄。 SNAT就相当于公司的前台,会把快递上的寄件地址(源IP)从“员工工号”替换成“公司对公地址”(公网IP)。对方收到快递后,回信自然会寄到公司地址,再由前台转交给对应的员工。

这就是SNAT的完整流程:内网实例主动发起公网请求 → NAT网关替换源私网IP为公网IP → 公网服务响应数据回到网关 → 网关再转回私网IP送达内部实例。

下面这张流程图完整展示了SNAT的工作全过程:

SNAT 工作流程示意图 内网实例 192.168.1.10 NAT网关 公网IP: 123.56.xx.xx 公网服务 180.10.xx.xx ① 发起请求 源IP:192.168.1.10 ② 替换源IP 源IP:123.56.xx.xx ③ 响应返回 目的IP:123.56.xx.xx ④ 替换目的IP 目的IP:192.168.1.10 核心:修改数据包源地址,解决「内网主动访问外网」问题

SNAT的典型应用场景#

  • 大批量无公网IP的云主机、容器节点,需要访问公网下载软件包、拉取镜像、调用外部API。
  • 业务需要固定公网出口IP,用于对接第三方接口的白名单校验。
  • 内网服务器统一管控公网访问权限,避免服务器直接暴露在公网。

四、DNAT:解决“外网访问内网服务”的问题#

什么是DNAT?#

DNAT(Destination Network Address Translation) ,即目的地址转换。核心是修改数据包的目的IP地址(通常附带端口) ,作用方向是公网 → 内网(入站流量)

同样用通俗的例子解释: 公司有一个对外的客服热线(公网IP+端口),外部客户打这个热线,前台(NAT网关)接到之后,会根据来电的业务类型,转接到内部对应的分机号码(内网IP+端口)。客户全程只知道对外的热线号码,并不知道具体的内部分机号。

DNAT做的就是这件事:将NAT网关上的公网IP+指定端口,映射到内网某台实例的私网IP+服务端口。外部用户只需要访问公网地址,流量就会被网关转发到对应的内网服务上。

下面这张流程图完整展示了DNAT的工作全过程:

DNAT 工作流程示意图 公网用户 110.80.xx.xx NAT网关 公网IP: 123.56.xx.xx:80 内网服务 192.168.1.10:8080 ① 发起访问 目的IP:123.56.xx.xx:80 ② 替换目的IP 目的IP:192.168.1.10:8080 ③ 服务响应 源IP:192.168.1.10:8080 ④ 替换源IP 源IP:123.56.xx.xx:80 核心:修改数据包目的地址,解决「外网访问内网服务」问题

DNAT的典型应用场景#

  • 将内网部署的Web网站、接口服务发布到互联网,对外提供访问。
  • 同一个公网IP的不同端口,映射到不同内网实例的不同服务,最大化利用公网IP资源。
  • 灵活管控服务暴露范围:需要对外提供服务时配置映射,不需要时直接收回,无需改动服务器本身的网络配置。

五、一张表理清SNAT与DNAT的核心区别#

很多人记混,本质是没抓住“转换谁、管哪个方向”这个核心。我们用一张表做个清晰对比:

对比维度SNAT(源地址转换)DNAT(目的地址转换)
转换对象数据包的源IP地址数据包的目的IP地址+端口
流量方向内网 → 公网(出站流量)公网 → 内网(入站流量)
核心作用让内网实例能访问互联网让互联网能访问内网服务
连接发起方内网实例主动发起外部用户主动发起
映射特点多对一共享,多个内网地址共用公网出口端口级映射,一个公网端口对应一个内网服务
典型用途统一上网出口、节约公网IP发布内网服务、端口复用

一句话总结:SNAT管“出”,解决内网能上网的问题;DNAT管“入”,解决外网能访问内网的问题。在实际业务中,一个NAT网关往往会同时配置SNAT和DNAT规则,同时承担内网上网和对外发布服务的职责。

六、NAT网关3种经典落地组网场景#

理解了原理,我们来看真实生产环境中,NAT网关最常用的3种组网方案,几乎覆盖了80%以上的业务场景。

场景一:统一公网出口组网(SNAT为主)#

这是最基础也最常用的组网:VPC内划分多个业务子网、数据库子网、中间件子网,所有子网都不直接绑定公网IP,全部通过一台公网NAT网关统一访问互联网。

适用场景:中大型业务集群、K8s容器集群、多子网分层架构。 核心优势

  • 所有内网实例共享公网出口,大幅节约IP成本;
  • 出口IP固定,便于第三方合作方配置白名单;
  • 内网资源完全不暴露,安全边界清晰。

场景二:分层对外服务组网(DNAT+安全防护)#

在统一出口的基础上,通过DNAT规则将特定业务端口发布到公网,同时配合安全组、网络ACL做多层访问控制。比如Web服务的80/443端口通过DNAT对外发布,而数据库、管理端口则完全不对外暴露,仅内网可访问。

适用场景:中小企业官网、业务系统对外提供API服务。 核心优势

  • 最小化暴露面,只对外开放必要的服务端口;
  • 同一个公网IP可承载多个不同业务的对外发布;
  • 规则增删灵活,业务发布和下线无需改动服务器网络。

场景三:混合云地址冲突组网(私网NAT)#

当企业需要将云上VPC与线下IDC、或者两个历史遗留的VPC打通时,经常会遇到两端内网网段完全重叠(比如都是192.168.1.0/24)的问题。此时直接对等连接会导致路由混乱,而私网NAT网关就是最优解。

通过中转IP池,对两端地址做双向转换,在完全不修改两端原有地址规划的前提下,实现网络互通。

私网NAT解决网段冲突组网示意图 VPC A(业务侧) 业务网段 192.168.1.0/24 地址重叠 VPC B / 线下IDC 业务网段 192.168.1.0/24 地址重叠 私网NAT网关 中转IP池 10.0.0.0/24 源地址转换 目的地址转换 无需修改两端原有网段,通过中转IP实现地址隔离互访

适用场景:混合云组网、业务合并、跨地域VPC互通且网段冲突。 核心优势

  • 无需改造两端现有网络架构,上线快、风险低;
  • 地址隔离,双方仅能看到中转IP,互不暴露内部网段;
  • 可精细化控制互访的地址范围,满足等保合规要求。

七、写在最后#

NAT网关是云网络架构中最基础也最核心的组件之一。理解了SNAT和DNAT的逻辑,你就搞懂了VPC公网出入口的80%核心原理。 很多网络问题排查到最后,本质都是方向搞反了、规则配错了——比如想用SNAT解决外网访问内网的问题,或者用DNAT去做内网上网,自然怎么调都不通。

🔥 动手实践:深入理解 NAT 网关#

之前我在 《VLAN 和 VPC 到底有什么区别?》 一文中,带大家从隔间和办公楼的比喻理解了 VPC 的本质。如果你已经对 VPC 有了整体认知,那 NAT 网关就是 VPC 网络中最核心的”交通枢纽”——搞懂它,才算真正理解了云网络的公网出入口是怎么工作的。

很多技术人在学习云网络时,对 NAT 的理解停留在”地址转换”这个表面概念上,导致:

  • 配错方向:想用 SNAT 解决外网访问内网的问题,或者用 DNAT 做内网上网
  • 排查困难:网络不通时不知道从哪里入手,不理解数据包的完整路径
  • 架构混乱:不清楚什么时候该用 NAT 网关,什么时候该用弹性 IP

为了让大家真正从底层搞懂 NAT,我写了一个《深入理解 NAT 网关》系列教程,通过 代码实现 + 交互式演示 + 原理图解 三位一体的方式,带你深入理解 NAT 的每一个细节。

整个系列共 4 篇 + 1 个交互式沙盒,从最基础的 SNAT 原理开始,一步步带你实现:

  1. 第一篇:NAT 基础原理与 SNAT 实现 — NAT 原理、SNAT 工作流程、连接跟踪、Python 代码实现,附带原理图解 + 交互式 CLI Shell + 浏览器演示
  2. 第二篇:DNAT 原理与端口映射实现 — DNAT 工作流程、端口映射原理、安全防护,附带原理图解 + Python 代码实现 + 浏览器演示
  3. 第三篇:NAT 网关完整实现与高级特性 — 完整 NAT 网关架构、连接跟踪、NAT 穿透、生产环境最佳实践
  4. 第四篇:NAT 实战场景与故障排查 — 企业上网、服务发布、混合云组网、容器网络、故障排查

此外还有一个 NAT 交互式沙盒 ⭐⭐⭐,可以在浏览器中实时观察 SNAT/DNAT 转换过程、连接跟踪表、端口映射,不用装任何环境。

适合谁看?#

  • 云网络初学者,想从底层理解 NAT 的工作原理
  • 运维工程师,想掌握 NAT 网关的配置和故障排查
  • 开发者,想了解云网络的底层实现机制
  • 对网络技术感兴趣的任何人

所有教程和完整代码都已经开源,我也整理了在线文档站方便大家阅读:

👉 《深入理解 NAT 网关》完整在线文档站

看完这个系列,你再也不会觉得云网络是个神秘的黑盒子了!

云网络核心概念:一文搞懂NAT网关,彻底分清SNAT与DNAT
https://www.zhiqiuyiye.com/posts/nat-gateway-snat-dnat-explained/
作者
知秋一叶
发布于
2026-06-25
许可协议
CC BY-NC-SA 4.0