阿里云VPC NAT网关配置完全指南:从零搭建公网访问架构

简介: 本文系统讲解阿里云VPC中NAT网关的配置方法与核心原理。首先介绍NAT网关的产品定位与两种类型(公网NAT网关与VPC NAT网关)的区别,然后逐步拆解创建公网NAT网关、绑定弹性公网IP、配置SNAT条目实现VPC内无公网IP的ECS访问互联网、配置DNAT条目将内网服务暴露到公网的完整操作流程。深入分析路由表与NAT网关的协同工作机制、SNAT与DNAT的地址转换原理、多可用区高可用部署方案。结合阿里云CLI和Terraform提供自动化配置代码示例,涵盖按量计费模式下的成本构成、配额限制、常见故障排查方法(如SNAT无法访问公网、DNAT无法被公网访问等),并给出企业级最佳实践建议,包

1. NAT网关概述与产品选型

在阿里云专有网络VPC中,云服务器ECS实例默认只有私网IP地址,无法直接访问公网,也无法被公网直接访问。为了实现VPC内资源与公网的互通,阿里云提供了NAT网关(NAT Gateway)这款全托管的网络地址转换服务。NAT网关通过转换和隐藏云服务的真实地址,既实现了公网访问能力,又避免了内网地址直接对外暴露,有效提升了网络安全性。

阿里云NAT网关分为两种类型:公网NAT网关和VPC NAT网关。公网NAT网关可以绑定弹性公网IP(EIP)实现公网访问,适用于VPC内ECS实例访问互联网或对外提供服务的场景。VPC NAT网关不支持绑定EIP,主要用于私网地址转换,解决VPC之间网段冲突时的互访问题,或满足金融等行业使用指定私网IP访问本地IDC的合规诉求。本文聚焦公网NAT网关的配置,帮助读者掌握VPC内资源通过NAT网关实现公网访问的核心技能。

需要先登录阿里云控制台,点击:阿里云控制台

2. 公网NAT网关的核心功能

公网NAT网关提供两个核心功能:SNAT(源网络地址转换)和DNAT(目的网络地址转换)。

SNAT功能让VPC内多个无公网IP的ECS实例共享一个或多个EIP访问公网。当ECS实例主动发起对外访问时,NAT网关将数据包的源IP地址(私网IP)转换为NAT网关绑定的EIP,公网目标服务器看到的请求来源是EIP而非ECS的私网IP。响应数据返回时,NAT网关根据会话映射表将目的IP还原为ECS的私网IP,完成整个通信过程。SNAT的核心价值在于节省公网IP资源——无需为每台ECS单独分配EIP,同时隐藏了内网拓扑结构,提升了安全性。

DNAT功能则相反,它允许公网用户通过NAT网关绑定的EIP和指定端口访问VPC内ECS实例提供的服务。DNAT支持端口映射和IP映射两种模式。端口映射将公网IP的特定端口映射到内网ECS的指定端口,适合多服务共用同一个EIP的场景;IP映射则将整个公网IP映射到一台ECS,适合需要完整IP级访问的场景。

3. 配置前的准备工作

在开始配置NAT网关之前,需要完成以下准备工作。

首先确认已创建VPC和交换机。如果尚未创建,需先在阿里云VPC控制台完成VPC及交换机的创建。建议VPC网段选择RFC 1918规定的私有地址段,如192.168.0.0/16、172.16.0.0/12或10.0.0.0/8,避免与本地数据中心或其他云环境网段冲突。交换机应部署在需要访问公网的ECS所在的可用区。

其次准备弹性公网IP(EIP)。NAT网关必须绑定至少一个EIP才能正常工作。如果尚未创建EIP,可以在创建NAT网关时选择\"新购弹性公网IP\",系统会自动完成EIP的创建和绑定。也可以提前在弹性公网IP控制台创建好EIP,再在创建NAT网关时选择已有EIP进行绑定。

还需了解NAT网关的计费方式。公网NAT网关仅支持按量付费(后付费),计费项包括实例费用和CU(容量单位)费用。实例费用按小时计费,CU费用根据实际使用的流量和连接数等指标计算。单可用区容灾模式的NAT网关仅支持按量计费,不支持包年包月,且暂不支持资源包抵扣。可购买NAT网关资源包来抵扣CU费用。

4. 创建公网NAT网关

完成准备工作后,进入NAT网关管理控制台开始创建。登录阿里云控制台后,在顶部菜单栏选择与VPC相同的地域,然后在产品列表中找到\"NAT网关\"并进入管理页面。

点击\"创建NAT网关\"按钮。首次使用NAT网关时,系统会提示创建服务关联角色,点击\"创建关联角色\"即可自动完成授权。创建页面需要配置以下关键参数:

  • 所属地域:必须与目标VPC所在的地域一致。
  • 所属专有网络:选择需要开通公网访问能力的VPC。
  • 关联交换机:选择NAT网关实例部署的交换机。注意从2022年9月19日起,新创建的公网NAT网关绑定EIP时会占用NAT网关所在交换机的一个私网IP地址。请确保该交换机有足够的空闲私网IP。
  • 访问模式:选择\"VPC全通模式(SNAT)\",系统会自动为整个VPC配置SNAT条目。如果选择手动模式,则需后续自行创建SNAT条目。
  • 弹性公网IP:选择\"新购弹性公网IP\"或\"使用已有弹性公网IP\"。如果新购,需配置带宽峰值,建议根据业务流量需求合理设置。
  • 容灾类型:选择\"跨可用区容灾\"或\"单可用区容灾\"。跨可用区容灾是默认选项,NAT网关在两个可用区冗余部署,单可用区故障时自动切换。单可用区容灾仅在单一可用区内部署,实例费用约为跨可用区的50%,CU费用约为80%,适合业务集中在一个可用区的场景。

填写完参数后点击\"立即购买\",完成创建。创建成功后,在NAT网关列表中可以查看新创建的实例。

5. 配置SNAT条目实现ECS访问公网

创建NAT网关并绑定EIP后,需要配置SNAT条目才能让VPC内的ECS实例通过NAT网关访问公网。

在NAT网关管理控制台,点击目标NAT网关实例ID进入详情页,切换到\"SNAT管理\"页签,点击\"创建SNAT条目\"。创建SNAT条目时需要配置以下参数:

  • SNAT条目粒度:支持VPC粒度、交换机粒度和ECS粒度。VPC粒度为整个VPC内的所有ECS配置SNAT,最常用。交换机粒度仅为指定交换机下的ECS提供SNAT。ECS粒度仅针对单台ECS实例,粒度最细,优先级最高。
  • 源网段:根据选择的粒度填写对应的网段。VPC粒度填写VPC的CIDR网段;交换机粒度填写交换机的CIDR网段;ECS粒度填写ECS的私网IP。
  • 选择公网IP:选择\"使用单IP\"或\"使用多IP\"。单个EIP可提供的SNAT端口数量有限,当大量会话访问同一目的地址时可能造成端口分配失败。建议根据并发会话数配置多个EIP。

点击\"确定\"完成创建。SNAT条目创建后,状态变为\"可用\"即表示配置成功。此时,源网段内的ECS实例即可通过NAT网关绑定的EIP访问公网。

以下是使用阿里云CLI创建SNAT条目的示例代码:

# 首先创建NAT网关
aliyun vpc CreateNatGateway \
  --RegionId cn-hangzhou \
  --VpcId vpc-xxxxx \
  --VSwitchId vsw-xxxxx \
  --NatType Enhanced \
  --NatGatewayName my-nat-gateway
# 绑定EIP到NAT网关
aliyun vpc AssociateEipAddress \
  --RegionId cn-hangzhou \
  --AllocationId eip-xxxxx \
  --InstanceId ngw-xxxxx \
  --InstanceType Nat
# 创建SNAT条目(VPC粒度)
aliyun vpc CreateSnatEntry \
  --RegionId cn-hangzhou \
  --NatGatewayId ngw-xxxxx \
  --SnatIp 47.96.xxx.xxx \
  --SourceVSwitchId vsw-xxxxx

6. 配置DNAT条目将内网服务暴露到公网

如果VPC内的ECS需要对外提供Web服务、数据库服务等,需要配置DNAT条目。

在NAT网关详情页切换到\"DNAT管理\"页签,点击\"创建DNAT条目\"。配置参数如下:

  • 公网IP地址:选择NAT网关绑定的EIP。
  • 公网端口:公网用户访问时使用的端口。范围1-65535。
  • 协议类型:TCP、UDP或任意。
  • 私网IP地址:目标ECS的私网IP。
  • 私网端口:ECS上服务监听的端口。

例如,将EIP的80端口映射到ECS私网IP 192.168.1.10的8080端口,公网用户访问http://EIP:80时,请求会被转发到ECS的8080端口。

需要注意的是,配置DNAT后,还需确保ECS的安全组规则允许公网访问对应的私网端口。可以在同VPC内的其他ECS执行telnet命令测试私网端口是否可达。

以下是使用Terraform创建DNAT条目的示例:

resource \"alicloud_nat_gateway\" \"default\" {
  vpc_id         = \"vpc-xxxxx\"
  vswitch_id     = \"vsw-xxxxx\"
  nat_gateway_name = \"my-nat-gateway\"
  nat_type       = \"Enhanced\"
}
resource \"alicloud_eip\" \"default\" {
  bandwidth = \"100\"
}
resource \"alicloud_eip_association\" \"default\" {
  allocation_id = alicloud_eip.default.id
  instance_id   = alicloud_nat_gateway.default.id
}
resource \"alicloud_snat_entry\" \"default\" {
  snat_table_id = alicloud_nat_gateway.default.snat_table_id
  source_vswitch_id = \"vsw-xxxxx\"
  snat_ip       = alicloud_eip.default.ip_address
}
resource \"alicloud_forward_entry\" \"default\" {
  forward_table_id = alicloud_nat_gateway.default.forward_table_id
  external_ip      = alicloud_eip.default.ip_address
  external_port    = \"80\"
  ip_protocol      = \"tcp\"
  internal_ip      = \"192.168.1.10\"
  internal_port    = \"8080\"
}

7. 路由表与NAT网关的协同机制

NAT网关本身只负责地址转换,不决定流量的走向。数据包是否被发送到NAT网关,以及地址转换后流向何处,由VPC的路由表控制。

当VPC内ECS访问公网时,数据包会匹配路由表中的路由条目。如果存在目标网段为0.0.0.0/0、下一跳指向NAT网关的路由条目,则该流量会被转发到NAT网关。如果VPC系统路由表中没有0.0.0.0/0路由,创建第一个公网NAT网关时系统会自动添加该路由。如果使用了自定义路由表,或系统路由表中已存在0.0.0.0/0路由,则需要手动添加或调整路由条目。

路由优先级方面,当多条路由的目标网段重叠时,遵循最长前缀匹配原则。例如,目标网段192.168.1.0/24的路由优先级高于0.0.0.0/0。出口IP的优先级顺序为:实例持有的固定公网IP/EIP高于DNAT IP映射(任意端口),高于SNAT条目绑定的EIP。

8. 多可用区高可用部署方案

对于生产环境,建议考虑NAT网关的高可用部署。阿里云NAT网关提供跨可用区容灾和单可用区容灾两种模式。

跨可用区容灾模式下,NAT网关在两个可用区各部署一套实例,主可用区由用户指定,备可用区由阿里云自动选择。单可用区故障时自动切换,适用于ECS等实例分布在多个可用区、需要共享同一NAT网关访问公网的场景。该模式的初始性能指标为:新建连接速率2万CPS、吞吐量5Gbps、并发连接数50万、包处理速率80万PPS,弹性上限可分别达到10万CPS、15Gbps、200万、250万PPS。

单可用区容灾模式下,NAT网关仅在用户指定的单个可用区内部署,可用区内设备级冗余。该模式的初始吞吐量为10Gbps,高于跨可用区模式的5Gbps。实例费用约为跨可用区的50%,CU费用约为80%。适用于业务集中在某一个可用区、使用独立NAT网关访问公网的场景。建议在不同可用区分别部署单可用区NAT网关,使每个可用区的流量独立转发,确保单个可用区故障时其他可用区的业务仍可对外提供服务。

当NAT网关的性能超过最大指标时,业务访问将面临丢包风险。建议结合实际业务特点提前进行压力测试评估实例性能,并合理配置监控项。

9. 配额限制与注意事项

使用NAT网关时需注意以下配额限制:

  • 单个VPC内可创建的NAT网关数量有配额限制,可在配额中心查看和申请提升。
  • 单个公网NAT网关最多可绑定20个EIP。如需更多可通过配额管理页面自助提升配额。
  • 单个NAT网关实例最多100条SNAT/DNAT规则,每条规则最多10个源CIDR。
  • 单个NAT网关实例最多可建立100条限速规则,单条限速规则最多支持10个源地址网段。

其他注意事项:

  • 单个EIP可提供的SNAT端口数量有限。当用户访问同一个目的地址的会话数量过多而EIP数量过少时,可能造成端口分配失败。建议增加SNAT规则中配置的EIP数量。
  • 如需开启IPv4网关进行统一的公网出入口管控,需将NAT交换机关联的默认路由表中配置默认路由并指向IPv4网关。
  • 如需NAT出站安全防护,可开启NAT边界防火墙。
  • 建议NAT网关与服务器在同一可用区部署,以便更好地应对可用区故障风险。

10. 常见故障排查

10.1 ECS配置DNAT后无法被公网访问

可能原因及排查方法:

  • 安全组规则不允许公网访问DNAT条目中配置的ECS私网端口。需检查并开放对应端口。
  • 路由表中没有目标网段0.0.0.0/0、下一跳为NAT网关的路由条目。DNAT条目中的ECS被访问后回复响应报文时也需要有去往NAT网关的路由。需手动添加该路由条目。

10.2 新创建交换机的ECS无法通过SNAT访问公网

可能原因及排查方法:

  • NAT网关的SNAT条目中不包含新创建交换机的网段。需手动为新建交换机创建SNAT条目。
  • 新建交换机绑定了自定义路由表,但自定义路由表中没有目标网段0.0.0.0/0、下一跳为NAT网关的路由条目。需手动添加。

10.3 VPC内存在多个NAT网关时某交换机ECS无法访问公网

如果VPC内使用系统路由表且只有一条0.0.0.0/0路由指向其中一个NAT网关,则该路由指向的NAT网关负责所有流量的转发。需确保SNAT条目覆盖了所有需要访问公网的交换机网段。

11. 最佳实践建议

基于以上内容,总结以下企业级最佳实践建议:

  • 网段规划先行:创建VPC前做好CIDR规划,避免与本地IDC或其他云环境网段冲突。
  • 按可用区部署NAT网关:在每个有业务服务器的可用区独立部署NAT网关,实现可用区级容灾。
  • 合理配置EIP数量:根据并发会话数评估所需EIP数量,避免单EIP端口耗尽。
  • 监控与告警:配置NAT网关的性能监控和告警,关注并发连接数、新建连接速率、吞吐量等指标。
  • 安全加固:结合安全组、NAT边界防火墙等产品构建多层安全防护体系。
  • 成本优化:根据业务流量特点选择合适的容灾类型(单可用区容灾费用更低),购买资源包抵扣CU费用。

12. 常见问题问答

问1:NAT网关和EIP有什么区别?可以只使用EIP实现公网访问吗?

EIP是公网IP地址资源,绑定到ECS后该ECS即可直接访问公网和被公网访问。NAT网关是网络地址转换服务,绑定EIP后可以为整个VPC内多台ECS提供共享公网出口。如果只有少量ECS需要公网访问,直接绑定EIP即可;如果有多台ECS需要共享公网出口或统一管理公网访问,应使用NAT网关。

问2:SNAT和DNAT可以同时配置吗?

可以。SNAT和DNAT解决的是不同方向的问题——SNAT让内网ECS主动访问公网,DNAT让公网用户访问内网ECS。两者可以同时配置在同一NAT网关上,互不冲突。

问3:配置SNAT后ECS仍然无法访问公网,可能是什么原因?

常见原因包括:SNAT条目未覆盖该ECS所在的交换机网段;VPC路由表中缺少0.0.0.0/0指向NAT网关的路由;ECS安全组出方向规则限制;NAT网关绑定的EIP欠费或被释放。可按顺序逐一排查。

问4:NAT网关支持IPv6吗?

公网NAT网关目前仅支持IPv4地址转换。如需IPv6公网访问,可使用IPv6网关产品。

问5:一个VPC可以创建多个NAT网关吗?

可以。一个VPC内可以创建多个公网NAT网关,用于实现不同业务系统的公网出口隔离,或在不同可用区分别部署以实现高可用。需注意VPC内NAT网关的数量有配额限制。

问6:NAT网关的费用包括哪些部分?

公网NAT网关的费用包括实例费用和CU(容量单位)费用两部分。实例费用按小时计费,CU费用根据实际使用的流量、新建连接数、并发连接数等指标综合计算。可购买NAT网关资源包抵扣CU费用。EIP本身也单独计费,包括保有费和信息流量费。

相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
相关文章
|
25天前
|
存储 Kubernetes 监控
阿里云容器服务Kubernetes版(ACK)对接使用完全指南
本文提供了一份完整的阿里云容器服务Kubernetes版(ACK)对接使用指南。首先解析ACK托管版、专有版与Serverless版的架构差异与选型策略,帮助用户根据业务场景做出合理决策。随后详细讲解通过控制台和Terraform创建ACK托管集群的完整流程,涵盖网络规划(Terway与Flannel对比、CIDR配置)、节点池管理等关键环节。在应用部署层面,深入介绍Deployment、StatefulSet等核心工作负载的YAML编排实践,并通过Service与ALB Ingress实现服务暴露与七层负载均衡。存储管理部分系统讲解基于CSI的云盘动态存储卷与ossfs 2.0的使用方法。可
|
3月前
|
人工智能 安全 机器人
OpenClaw“养龙虾”保姆级教程:从部署到进阶玩法,安全避坑指南
2026年爆火的开源AI智能体OpenClaw,因红色龙虾图标被网友爱称“龙虾”,“部署即养龙虾”。它突破AI只聊天的局限,可自主操作电脑完成文件整理、浏览器控制、写报告等真实任务,真正成为你的数字员工。本教程手把手教你云端/本地一键部署与安全配置。
8327 2
|
4月前
|
存储 消息中间件 关系型数据库
(二)走进阿里云实时计算Flink版-场景案例篇
阿里云实时计算Flink版产品负责人黄鹏程(马格)介绍:基于Apache Flink打造的企业级全托管实时计算平台,支持批流一体、湖仓融合、实时风控与AI推理等场景,助力满帮、车企等客户降本增效35%,SLA达99.9%。
1151 3
(二)走进阿里云实时计算Flink版-场景案例篇
|
2月前
|
运维 Java 开发者
[015][web模块]基于Spring Boot的HTTP客户端日志与默认配置实战
本文详解基于Spring Boot的HTTP客户端统一配置方案,支持RestTemplate、RestClient与WebClient三种客户端,实现无侵入的日志记录(请求/响应头、状态码)、默认请求头注入(如X-Request-Id)、非2xx异常自动转换及链路追踪支持,全部通过Customizer与Filter机制自动装配,开箱即用,提升微服务调用可观测性与开发效率。(239字)
248 5
[015][web模块]基于Spring Boot的HTTP客户端日志与默认配置实战
|
4月前
|
人工智能 安全 API
OpenClaw阿里云/本地部署保姆级教程及百炼Coding Plan配置+必装5大技能指南:让AI Agent真正落地干活
在2026年AI智能体竞争白热化的当下,多数用户仍将AI局限于“问答工具”的范畴,却忽略了其核心价值——接入真实世界工具与数据源,自主完成全流程任务。OpenClaw(原Clawdbot)的革命性意义,在于通过ClawHub技能生态,让AI具备可执行的“手”和“脚”,而真正拉开使用差距的,是能否选对、用好核心技能。
735 11
|
25天前
|
消息中间件 安全 Java
阿里云短信服务从入门到精通:完整对接使用指南
本文提供了一份完整的阿里云短信服务对接使用指南。首先需完成账号注册与企业实名认证,开通短信服务并购买资源包或确保账户余额充足。接着需依次申请短信资质、签名和模板,三者均审核通过后方可发送短信。发送方式支持控制台群发助手与API/SDK程序化调用,推荐使用RAM子账号AccessKey保障安全。文章详细介绍了Java和Python两种语言的SDK集成示例,涵盖SendSms接口调用、参数配置与异常处理。同时讲解了安全与限流配置、回执消息接收、常见错误码排查以及成本优化策略,帮助开发者快速、安全、低成本地完成短信服务对接。
|
25天前
|
人工智能 IDE API
阿里云Qoder对接使用完全指南:从安装配置到Agentic编码实战
本文提供了一份完整的阿里云Qoder对接使用指南。Qoder是阿里云推出的Agentic编码平台,支持桌面IDE、命令行CLI和JetBrains插件三种接入方式,可通过按量付费、Coding Plan或Token Plan团队版接入阿里云百炼大模型。文章系统讲解了Qoder IDE的安装配置与模型接入凭证设置、Qoder CLI的一键安装与自定义模型配置、JetBrains插件市场的安装与对接流程。深入剖析Qoder Cloud Agents的API对接方案,包括PAT令牌获取、环境创建、Agent定义、Session管理与SSE事件流接收,并附带完整的curl命令示例。此外还涵盖企业级知识
|
26天前
|
人工智能 IDE API
阿里云Qoder完全使用指南:从安装配置到Agentic编码实战
本文系统介绍阿里云Qoder这一Agentic编码平台的完整使用方法。Qoder是面向软件开发的AI智能编码助手,支持桌面IDE、命令行CLI和JetBrains插件三种接入方式,可通过按量付费、Coding Plan或Token Plan团队版接入阿里云百炼大模型。文章详细讲解Qoder IDE的安装配置、模型接入凭证设置、Editor与Quest双模式切换、智能代码补全与问答交互、Cloud Agent的API调用流程,以及企业级知识库增强、MCP扩展、Skills技能等高级特性。同时分享Quest模式下的Spec驱动开发、网站搭建、原型探索三种场景实践,并给出亚信科技等企业的真实落地案例
|
26天前
|
Java API 开发工具
阿里云号码隐私保护服务完全对接指南:从控制台配置到API深度集成
本文系统性地介绍了阿里云号码隐私保护服务的完整对接流程。首先阐述了号码隐私保护的产品定位与应用场景,详细解析了AXB、AXN、AXG、AXN分机号四种核心隐私号类型及其适用业务。随后从企业实名认证、开通服务、创建号码池、购买隐私号码等控制台前置操作入手,逐步引导读者完成服务初始化。在技术集成层面,深入讲解了OpenAPI的版本说明、全局接入点、认证鉴权机制,并以Python和Java两种主流语言为例,提供了BindAxb绑定接口的完整SDK调用代码。文章还涵盖了绑定关系管理、通话录音获取、呼叫状态查询等进阶操作,并详细梳理了按量付费与套餐包两种计费模式的成本构成。最后从企业资质要求、号码实名合
|
7月前
|
运维 Kubernetes 微服务
微服务上云:基于ACK Kubernetes集群的容器化部署全流程
本文详解基于阿里云容器服务ACK的微服务容器化全流程,涵盖架构设计、集群搭建、应用编排、安全部署与可观测性实践,提供从本地到云端的落地指南,助力企业构建高弹性、高可用的云原生生产环境。

热门文章

最新文章