阿里云的NAT和弹性公网IP,解决ECS机器访问外网的实现方案

一、背景

刚申请的ECS机器可以访问内网,却无法访问外网。

bash 复制代码
curl: (7) Failed to connect to xx.xxx.com port 443: Connection timed out

经测试,ping 百度也不通。

因为新创建的阿里云 ECS 实例默认没有开启公网访问能力导致的。

本文涉及到的阿里云几个组件:

  • NAT网关
  • 弹性公网IP
  • 资源组
  • ECS

二、总体架构

目标:

资源组B是新建的一套环境,需要与原资源组A进行隔离并区分。

所以,我们将新建NAT和弹性公网IP,然后指向资源组B。

但是,我们第一次新建NAT的时候,误选择了资源组A,而非资源组B。

需要注意的是,在创建弹性公网IP的时候,别选错了资源组。

三、NAT网关

NAT网关起什么作用?

多台内网服务器只需主动访问外网,不想每台都买 EIP。

为整个 VPC/交换机内的多台内网 ECS 提供公网访问。

一般地,它会绑定 EIP 才能上网。

属性 说明
本质 阿里云托管的网关设备,有公网出口
需要 EIP 必须绑定 EIP 才能上网(或共享带宽包)
作用 为整个 VPC/交换机内的多台内网 ECS 提供公网访问
使用场景 多台内网服务器只需主动访问外网,不想每台都买 EIP

NAT 网关不是 VPN:它只解决"内网访问外网",不解决"外网访问内网"。

1、新建NAT

选择对应的资源组和弹性公网IP。

前文也说了,因为我们初期新建NAT的时候,误选择了资源组,所以需要额外配置SANT。

而弹性公网IP,见本文的第三部分。

NAT 网关本身不能独立上网,它必须绑定 EIP 或共享带宽包,然后通过 SNAT 规则把内网 ECS 的流量"代理"出去。

下面看一看SNAT是如何配置的。

2、SNAT

通过SNAT为专有网络内无公网IP的ECS实例提供访问互联网的代理服务。

  • SNAT = 内网出站的"护照",没有它,内网 ECS 的出网包在互联网上是"黑户",会被丢弃。

把内网 ECS 的私网 IP 转换为 NAT 网关的公网 IP(EIP)。

SNAT依赖 NAT 网关存在,本身不是独立产品。

属性 说明
本质 NAT 网关内部的一种转换规则/功能
依赖关系 依赖 NAT 网关存在,本身不是独立产品
作用 把内网 ECS 的私网 IP 转换为 NAT 网关的公网 IP(EIP)
配置位置 在 NAT 网关控制台创建 SNAT 条目
功能 全称 方向 作用 是否必须
SNAT Source NAT 内网 → 外网 让内网实例主动访问互联网 必须(要上网的话)
DNAT Destination NAT 外网 → 内网 让外网访问内网特定端口(如 SSH、Web) ❌ 可选

四、弹性公网IP

属性 说明
本质 独立的公网 IP 资源,可绑定/解绑
绑定对象 单个 ECS、SLB、NAT 网关、ENI 网卡
特点 灵活漂移,ECS 挂了可以绑到另一台
使用场景 需要被外网直接访问,或单台服务器上网



五、资源组

六、ECS

七、 总结

概念 一句话定位
EIP 公网地址的"手机号",谁绑定谁就能上网/被访问
NAT 网关 内网 ECS 的"共享路由器",必须插一张 EIP 的"SIM 卡"才能工作
SNAT NAT 网关内部的"拨号规则",告诉它怎么帮内网 ECS "代拨"上网
相关推荐
泡海椒2 小时前
Lambda 极简调用:不定义接口直接执行 curl 命令,JQuick-Curl 让 Java HTTP 调用更短更快
后端
步行cgn2 小时前
Maven 中:作为父项目和作为依赖的本质区别
后端
65岁退休Coder3 小时前
LangGraph v1.2.9 节点容错策略 & 流式输出 & 持久化记忆管理
后端·python·langchain
元界metalite5 小时前
SpringBoot整合RocketMQ-毒丸消息还要无限重试吗
后端
SimonKing5 小时前
升级Spring Boot 4后,从 Jackson 2 到 3,到底有哪些变化
java·后端·程序员
YIAN6 小时前
Docker + Nginx 核心原理扫盲:从环境隔离到反向代理,运维面试必考点
后端·docker·面试
万物智能6 小时前
启动链路与分区—【万物智能之开源鸿蒙OpenHarmony系统实战开发系列教程】
后端·架构
寒蝉1286 小时前
一个简单操作是怎么在分布式环境下变复杂的
后端
苏三的开发日记6 小时前
Windows宿主机+VMware CentOS虚拟机 + 同一个Wi-Fi下的其他实体电脑,三者可以互相访问
后端
boooooooom6 小时前
手把手做一个图 RAG 烹饪问答系统:Neo4j + Milvus + LLM 的工程实践
前端·javascript·后端