阿里云 NAT 网关教程:公网访问、SNAT 与 DNAT 配置与计费说明

阿里云 NAT 网关

阿里云 NAT 网关(NAT Gateway)是部署在 VPC 边界的网络地址转换服务,负责在私网 IP 地址和公网 IP 地址之间完成转换。
VPC 内的 ECS 实例默认没有公网 IP,无法主动访问互联网,也无法直接对外提供服务。通过 NAT 网关,私网实例可以共享少量公网 IP 访问互联网,也可以通过端口映射将内部服务暴露给外部访问,整个过程不需要为每台 ECS 单独配置弹性公网 IP。

两种 NAT 网关类型

阿里云提供公网 NAT 网关和 VPC NAT 网关两种类型,两者解决的问题不同,不能混用。

公网 NAT 网关处理的是 VPC 内网和公网互联网之间的地址转换。VPC 内的 ECS 实例通过公网 NAT 网关绑定的弹性公网 IP(EIP)访问互联网,外部互联网也可以通过 EIP 经由 NAT 网关访问到 VPC 内的指定 ECS 实例。公网 NAT 网关需要绑定至少一个 EIP 才能工作,EIP 独立计费。这是大多数团队使用 NAT 网关的场景。

VPC NAT 网关处理的是 VPC 内网和其他私网之间的地址转换,不涉及公网互联网。典型使用场景是云上 VPC 和本地 IDC(数据中心)通过 VPN 或专线互通时,两端的私网网段出现 IP 冲突,VPC NAT 网关负责在流量进出时将冲突地址转换成不冲突的地址,让双方都能正确识别和路由。VPC NAT 网关不绑定 EIP,不提供互联网访问能力。

本文以公网 NAT 网关为主,这也是出海业务和企业生产环境最常用的配置方式。

两种容灾模式

公网 NAT 网关在创建时需要选择容灾模式,这个选择决定了 NAT 网关的高可用能力和计费规模。

跨可用区容灾是推荐的生产环境选择。NAT 网关在多个可用区同时部署节点,任何单一可用区发生故障时,流量自动切换到其他可用区的节点,业务不受影响。适合 ECS 实例分布在多个可用区、需要统一出公网入口的场景。

单可用区容灾只在一个可用区部署,通过设备级冗余保障本可用区内的高可用,跨可用区故障时不能自动切换。实例费约为跨可用区模式的 50%,CU 费约为 80%,成本更低,适合业务集中在单一可用区且对跨区容灾没有要求的场景。单可用区容灾模式只支持按量计费,不支持包年包月,也不支持资源包抵扣。

创建公网 NAT 网关

在阿里云控制台搜索「NAT 网关」,进入后点击「创建公网 NAT 网关」。关键配置项:

VPC 和交换机: NAT 网关创建在指定的 VPC 内,所有该 VPC 内的 ECS 实例都可以通过 NAT 网关转换地址。交换机的选择影响 NAT 网关所在的可用区,建议选择业务 ECS 实例最集中的可用区,或者选择跨可用区容灾模式时选多个可用区的交换机。

容灾类型: 根据业务需求选择跨可用区或单可用区,创建后不能修改,需要变更只能删除重建。

创建完成后,需要为 NAT 网关绑定 EIP,才能开始配置 SNAT 或 DNAT 规则。EIP 可以在创建 NAT 网关时同步购买,也可以在控制台的弹性公网 IP 页面单独创建后再绑定到 NAT 网关。

绑定 EIP 注意事项:每绑定一个 EIP,会占用 NAT 网关所在交换机的一个私网 IP,交换机的私网 IP 数量有限,绑定多个 EIP 时需要确认交换机剩余私网 IP 充足。

SNAT 配置:私网 ECS 访问公网

SNAT(Source NAT,源地址转换)让 VPC 内没有公网 IP 的 ECS 实例通过 NAT 网关共享 EIP 访问互联网。ECS 发出的数据包到达 NAT 网关时,源 IP 地址从 ECS 的私网 IP 替换为 NAT 网关绑定的 EIP,对端看到的请求来源是 EIP,而不是 ECS 的私网地址。

SNAT 条目的粒度分为两级:

专有网络粒度:VPC 内所有 ECS 实例,无论属于哪个交换机,都通过这条 SNAT 规则访问公网。配置最简单,适合所有 ECS 统一出口的场景。

交换机粒度:只有指定交换机下的 ECS 实例使用这条 SNAT 规则,其他交换机的 ECS 不受影响。适合需要对不同子网的出公网流量做精细管控的场景,例如数据层子网(RDS、Redis)不需要出公网,只让应用层子网的 ECS 通过 SNAT 访问互联网。

在控制台 NAT 网关实例详情页的「SNAT 管理」页签,点击「创建 SNAT 条目」,选择粒度、指定 EIP,保存后规则立即生效。

多 EIP 的 SNAT 地址池: 可以在同一条 SNAT 规则中配置多个 EIP,流量通过哈希算法分配到多个 EIP。这样做的好处是当某个 EIP 被攻击导致流量中断时,ECS 实例可以自动切换到其他 EIP 继续访问公网,降低单 EIP 故障的影响。但由于哈希分配不是均等的,各 EIP 的流量可能不均衡,建议将所有 EIP 加入同一共享带宽包,避免单个 EIP 带宽打满影响整体出口。

重要注意事项: NAT 网关不会自动为 VPC 内新建的交换机添加 SNAT 条目。如果 VPC 内后续创建了新的交换机,新交换机下的 ECS 实例默认没有出公网能力,必须手动在 NAT 网关的 SNAT 管理页签中为新交换机添加 SNAT 条目。这是最常见的 NAT 网关配置遗漏,新实例上线后发现无法访问公网,往往是因为对应交换机没有 SNAT 条目。

用 CLI 创建 SNAT 条目(交换机粒度):

aliyun vpc CreateSnatEntry \

  –RegionId ap-southeast-1 \

  –SnatTableId stb-xxxx \

  –SourceVSwitchId vsw-xxxx \

  –SnatIp 47.x.x.x

关于 VPC 和交换机的规划和配置,可以参考 阿里云 VPC 网络配置教程的详细说明。

DNAT 配置:ECS 对外提供服务

DNAT(Destination NAT,目标地址转换)将 EIP 的特定端口映射到 VPC 内 ECS 实例的私网端口,外部互联网通过访问 EIP 的端口,请求被 NAT 网关转发到对应的 ECS 实例。ECS 实例本身不需要有公网 IP,所有进入流量通过 EIP 集中进入后由 DNAT 规则分发。

DNAT 支持两种映射模式:

端口映射:将 EIP 的某个端口映射到 ECS 实例的某个端口,其余端口不受影响。例如将 EIP 的 8080 端口映射到 ECS 实例私网 IP 的 80 端口,外部访问 EIP:8080 的请求会被转发到该 ECS 的 80 端口。这是最常用的映射方式,精确控制暴露的端口范围。

IP 映射:将整个 EIP 映射到一台 ECS 实例,所有访问该 EIP 任意端口的流量都转发到这台 ECS 实例,相当于 ECS 实例拥有了一个专用的公网 IP。这台 ECS 实例也可以通过该 EIP 主动访问公网,SNAT 和 DNAT 功能同时具备。

在控制台 NAT 网关详情页的「DNAT 管理」页签,点击「创建 DNAT 条目」,选择 EIP、配置协议(TCP/UDP)、外部端口、内网 ECS 实例和内网端口。

创建完成后,验证 DNAT 映射是否生效:

# 从外部网络测试 DNAT 映射是否可达(将 EIP 和端口替换为实际值)

curl -v http://47.x.x.x:8080

# 或使用 telnet 测试端口可达性

telnet 47.x.x.x 8080

如果连接超时,需要检查两个层面:NAT 网关的 DNAT 条目是否正确配置,以及目标 ECS 实例的安全组是否开放了对应端口的入站规则。安全组规则和 DNAT 条目是独立的两道访问控制,两者都需要正确配置才能建立连接。关于 ECS 安全组的配置方式,可以参考 阿里云 ECS 完整教程的安全组部分。

NAT 网关与 EIP 的生命周期管理

一个容易产生费用的误区是:将 EIP 从 NAT 网关解绑,以为这样就停止了 EIP 的计费。实际上,EIP 和 NAT 网关是两个独立计费的产品,将 EIP 从 NAT 网关解绑只是解除了关联关系,EIP 本身仍然继续计费(按量付费 EIP 按保有时长收费)。要彻底停止 EIP 的计费,必须在控制台的弹性公网 IP 页面将其释放。

NAT 网关实例本身同样持续计费,即使没有任何流量通过。如果一段时间内不使用 NAT 网关,需要删除实例才能停止计费,而不是停止或暂停(NAT 网关没有停止操作)。删除 NAT 网关前,需要先删除该网关下的所有 SNAT 条目和 DNAT 条目,以及解绑所有 EIP,否则强制删除会同时删除这些关联资源。

计费方式

公网 NAT 网关和 VPC NAT 网关的计费构成相同:实例费 + CU(容量单位)费。绑定的 EIP 按 EIP 的独立计费规则单独计算,不包含在 NAT 网关的账单中。

实例费按 NAT 网关实例的存在时长计费,不管是否有流量通过,实例存在就产生实例费。跨可用区容灾模式和单可用区容灾模式的实例费不同,单可用区约为跨可用区的 50%。

CU(容量单位)费按实际处理的流量特征计费,综合考量新建连接数、并发连接数、处理的数据量等维度,取各维度中折算 CU 最大的值作为实际计费 CU。流量越大、连接数越多,CU 消耗越多。

NAT 网关只支持按量后付费,不支持包年包月。如果长期使用、用量稳定,可以购买 NAT 网关资源包预先抵扣实例费和 CU 费,资源包相比按量计费有一定折扣。资源包规格分 1000 CU、10000 CU 和 100000 CU,可叠加购买,实际消耗超出资源包部分自动转为按量计费。

单可用区容灾模式不支持资源包抵扣,只能按量计费。需要资源包降本的场景,必须使用跨可用区容灾模式的实例。

常见配置问题

新建交换机下的 ECS 无法访问公网: NAT 网关不自动覆盖新交换机,需要手动在 SNAT 管理页签中为新交换机添加 SNAT 条目。检查方法是进入 NAT 网关详情的 SNAT 管理页签,确认所有需要出公网的交换机网段都已有对应的 SNAT 条目。

DNAT 映射配置正确但外部无法访问: 首先确认 ECS 实例安全组是否允许对应端口的入站规则,DNAT 流量到达 ECS 时同样受安全组规则控制。其次确认 ECS 实例上的应用是否在目标端口正常监听。

多 ECS 共用 SNAT 时偶发连接失败: 多台 Linux ECS 通过同一 NAT 网关并发访问同一 Linux 服务端时,可能因为内核 TCP 连接处理机制导致部分 SYN 报文被丢弃。可以通过调整 ECS 实例的内核参数(net.ipv4.tcp_syn_retries 和 net.ipv4.tcp_tw_reuse)缓解,或者增加 NAT 网关绑定的 EIP 数量分散端口压力。

账号开通与代理充值

使用阿里云 NAT 网关需要有效的阿里云国际版账号,NAT 网关在控制台直接创建,不需要额外审批。通过 阿里云账号出售 渠道获取的高权重账号,可以直接用于生产环境的 VPC 和 NAT 网关配置,1 分钟交付,免实名免绑卡。

对于同时使用 ECS、NAT 网关、EIP 的团队,月均网络产品费用通常在 $100 以上,通过 阿里云国际合作伙伴 充值可以获得赠金返点($100 到账 $110,$500 到账 $600,$1000 到账 $1250),赠金适用于 NAT 网关实例费、CU 费和 EIP 费用,年度实际成本明显低于官网直充,付款支持 USDT 和对公转账。

滚动至顶部