华为云NAT网关实操:SNAT让无公网IP的云主机共享上网,DNAT端口映射对外提供服务,结合共享带宽降本

举报
yd_244253482 发表于 2026/11/06 07:14:14 2026/11/06
【摘要】 在实际的云上网络规划里,我们通常不会给每一台云服务器都绑定弹性公网 IP(EIP):一方面 EIP 数量有限、管理分散,另一方面把所有主机直接暴露在公网也会增加攻击面。华为云的 NAT 网关(NAT Gateway)正好解决这个问题——它部署在 VPC 的边界,既能让私有子网里没有公网 IP 的主机通过共享的 EIP 主动访问互联网(SNAT),也能把公网请求按端口转发到内网主机(DNAT)...

在实际的云上网络规划里,我们通常不会给每一台云服务器都绑定弹性公网 IP(EIP):一方面 EIP 数量有限、管理分散,另一方面把所有主机直接暴露在公网也会增加攻击面。华为云的 NAT 网关(NAT Gateway)正好解决这个问题——它部署在 VPC 的边界,既能让私有子网里没有公网 IP 的主机通过共享的 EIP 主动访问互联网(SNAT),也能把公网请求按端口转发到内网主机(DNAT)。本文用一套完整的实操流程,记录公网 NAT 网关的创建、SNAT/DNAT 规则配置与验证方法。

一、先搞懂 NAT 网关的两个核心能力

NAT 是网络地址转换(Network Address Translation)的缩写,华为云公网 NAT 网关提供两类规则,方向和用途完全不同,动手前一定要分清楚:

  • SNAT(源地址转换):内网主机主动访问公网时,把数据包的源地址从私网 IP 转换成 NAT 网关绑定的 EIP。外部服务器看到的是 EIP,而不知道内网主机的真实地址,回程流量再由 NAT 网关转发回来。典型场景是私有子网的 ECS 访问外网下载依赖、调用外部 API、做系统更新。
  • DNAT(目的地址转换):公网客户端访问 EIP 的某个端口时,NAT 网关把目的地址转换成内网主机的私网 IP 和端口,相当于端口映射。典型场景是把 Web、SSH 等服务通过统一入口对外发布,而内网主机本身不绑定 EIP。

简单记忆:SNAT 解决「内网主动出网」,DNAT 解决「公网主动入内」。两者可以在同一个 NAT 网关上并存,配合路由表生效。

二、网络模型与准备工作

本次实操使用如下规划,建议先在虚拟私有云(VPC)控制台准备好对应资源:

  • VPC:例如 10.0.0.0/16,下面划分两个子网,public-subnet(10.0.1.0/24)和 private-subnet(10.0.2.0/24);
  • 私有子网内一台 ECS(10.0.2.10),不绑定 EIP,作为需要出网和被映射的对象;
  • 安全组:出方向默认放行,入方向按业务需要放行对应端口(如 22、80),DNAT 能否连通同时受安全组控制;
  • 一个弹性公网 IP 或共享带宽,用于 NAT 网关对外通信。

需要特别注意:NAT 网关本身不分配新的公网地址,它必须绑定 EIP(或加入共享带宽的 EIP)才能工作。如果有多台业务、出网和入站流量较大,推荐使用共享带宽,把多个 EIP 加入同一带宽包,相比单独按流量计费更省钱、也便于统一限速。

三、创建公网 NAT 网关

  1. 进入控制台「网络」→「NAT 网关」,点击「创建公网 NAT 网关」;
  2. 选择所在区域、所属 VPC,规格可按业务量选择小型/中型/大型,规格决定了 SNAT 连接数和吞吐量上限;
  3. 网络配置处选择「共享带宽」或「按需计费的弹性公网 IP」。若选共享带宽,可新建带宽包并指定带宽大小(如 5 Mbit/s),系统会自动为其分配 EIP;
  4. 确认名称后提交,等待网关状态由「创建中」变为「运行中」,记录网关绑定的 EIP,例如 121.36.x.x。

创建完成后,NAT 网关会作为一个逻辑设备挂在 VPC 上,但此时还不会自动生效,必须通过下面的路由表和规则把流量引过来。

四、配置 SNAT:私有子网共享上网

目标是让 private-subnet 里没有 EIP 的 ECS 能访问公网。分两步:加 SNAT 规则、改路由表。

  1. 在 NAT 网关详情页进入「SNAT 规则」,点击「添加 SNAT 规则」;
  2. 「网关类型」选择对应的子网,下拉选中 private-subnet(10.0.2.0/24),也可以用自定义网段做更细粒度控制;
  3. 选择用于转换的 EIP(即网关绑定的 121.36.x.x),一个 SNAT 规则可绑定一个或多个 EIP,EIP 越多可承载的并发连接越高;
  4. 确认创建,规则状态变为「运行中」。

接着配置路由:进入 VPC 的路由表,找到 private-subnet 关联的路由表,添加一条自定义路由——目的地址填 0.0.0.0/0,下一跳类型选「NAT 网关」,下一跳选刚创建的 NAT 网关。这样私有子网所有去往公网的流量都会被送到 NAT 网关做 SNAT。

验证方法:登录私有子网的 ECS(可通过同 VPC 内的跳板机 SSH 进入),执行 curl ifs.me 或 curl myip.ipip.net,返回的公网 IP 应当是 NAT 网关的 EIP 121.36.x.x,而不是主机私网地址;再执行 yum update 或 apt 拉取一次包,能正常下载即说明出网链路打通。

五、配置 DNAT:端口映射对外发布服务

现在希望公网用户通过 EIP 的 8080 端口访问内网 ECS(10.0.2.10)上的 80 端口服务,而主机依然不绑 EIP。

  1. 在 NAT 网关详情页进入「DNAT 规则」,点击「添加 DNAT 规则」;
  2. 选择转换用的 EIP(121.36.x.x),公网端口填 8080,协议选 TCP;
  3. 「私网 IP」填 10.0.2.10,私网端口填 80;如果选择按网卡/云服务器添加,控制台会自动带出私网地址;
  4. 确认创建,规则生效后,访问 http://121.36.x.x:8080 就会被转发到 10.0.2.10:80。

DNAT 同样依赖路由与安全组:确保 ECS 安全组入方向放行了 80 端口,且对应路由表存在到 NAT 网关的路由。若做 SSH 映射,建议把公网端口换成非 22 的高位端口,并配合密钥登录、限制来源 IP,减少暴力破解。

六、SNAT 与 DNAT 的常见坑

  • 只建规则不改路由:NAT 规则和路由表是两件事,缺了 0.0.0.0/0 指向 NAT 网关的路由,流量根本不会经过网关,这是最常见的「规则正常却不通」原因;
  • 安全组/网络 ACL 拦截:DNAT 入站要同时过 NAT 网关和目标主机安全组,出网也要确认子网网络 ACL 没有阻断;
  • 同一 EIP 端口冲突:一个 EIP 的同一协议端口在 DNAT 中只能映射到一个后端,多个服务需用不同公网端口或多个 EIP;
  • SNAT 连接数打满:单 EIP 的可用端口有限,高并发场景要多绑 EIP 或升级网关规格,否则会出现偶发出网失败;
  • 计费理解偏差:NAT 网关实例、EIP/带宽、公网流量分别计费,出网走 SNAT 仍会产生公网流量费,选型时用共享带宽统一规划更划算。

七、小结

通过公网 NAT 网关,我们用少量 EIP 就实现了整个私有子网的统一出网和受控入站:SNAT 让无公网 IP 的主机安全、集中地访问互联网,DNAT 用端口映射把服务按需对外发布,再结合共享带宽控制成本。落地时记住「建网关 → 配规则 → 改路由 → 查安全组 → 做连通性验证」这条主线,就能快速搭建出既安全又经济的云上边界网络。后续还可以在此基础上叠加 VPC 对等连接、企业路由器,构建多 VPC 统一出口的更复杂架构。

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0)

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。