首页/云/云网络与负载均衡速查/SNAT 与 DNAT 的区别

SNAT 与 DNAT 的区别

SNAT 改源地址、解决「内网出公网」;DNAT 改目的地址、解决「公网进内网」。两者方向与用途完全不同:对提供服务查 DNAT,对外访问查 SNAT——方向判断对了,排障就快一半。

SNAT 与 DNAT 的区别

SNAT 改的是源地址,解决「内网主机怎么出公网」;DNAT 改的是目的地址,解决「公网请求怎么进到内网服务」。两者方向相反、用途完全不同:遇到对外提供服务不通就去查 DNAT 链条,遇到内网访问外网不通就去查 SNAT 链条。排障时先把「谁主动发起连接」这一个问题确定下来,方向判断对了,排查范围立刻缩小一半。

对比

维度SNATDNAT
转换对象源地址(内网到公网)目的地址(公网到内网)
典型用途实例访问外部 API、拉取依赖公网端口映射到内网服务
生效范围按源网段(子网)按公网端口映射
常见问题来源未覆盖、连接数上限端口冲突、安全组放行错位

基本信息

方向判断内网主动出访用 SNAT,公网主动入访用 DNAT
配置位置都在 NAT 网关上,按子网或端口分别定义
共用 EIP同一 EIP 可同时承载两个方向,需规划端口
排障顺序先定方向,再逐段核对映射、路由与安全组

典型使用场景

  • 容器集群拉取镜像与依赖,用 SNAT 统一出网并隐藏内部地址
  • 把内部管理后台通过 DNAT 映射到指定公网端口,配合来源白名单访问
  • 内网服务调用第三方 API 出现超时,排查 SNAT 的连接数与带宽
  • 公网用户访问服务异常,排查 DNAT 映射与私网端口放行

同一网关承载两个方向

同一网关承载两个方向
SNAT:10.10.1.0/24 → 经 eip-01 访问公网
DNAT:eip-01:443 → 10.10.1.20:8443(对外提供 API)
注意:同一 EIP 的同一端口不能既做映射又做其他用途
先明确「谁主动发起」,再决定排查 SNAT 还是 DNAT 链条。

两个方向共用的注意点

同一 NAT 网关同时承载 SNAT 与 DNAT 时,规划重点是端口与地址的复用关系:DNAT 占用的公网端口要和 SNAT 使用的源端口分开考虑,避免高并发时互相挤压;绑定多个 EIP 时还要明确哪些用于出访、哪些用于映射,不要出现同一个地址既承载入向映射又承担大流量出访。变更前把映射表与 SNAT 来源网段列成一张清单,任何调整都回到清单上核对,能避免绝大多数方向性错误。

易错点

  • 服务对外不通却一直在查 SNAT:方向一开始就判断错了
  • DNAT 与 SNAT 共用同一 EIP 时,端口与连接规划需要更细致
  • 只配了 DNAT 却没有放行私网端口,映射存在但流量进不去
  • SNAT 的来源网段漏掉新增子网,新实例无法出公网

数据来源与参考

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