阿里云的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 "代拨"上网
相关推荐
Larcher1 天前
React Router 不只是页面跳转:从 SPA 路由到权限守卫的完整实践
javascript·后端
Larcher1 天前
大模型为什么每次回答都不一样?一文搞懂 Temperature、Top K 与 Top P
javascript·后端
LucianaiB1 天前
毕业老学长给我留的最后一句话是:“AI 写的,别挂我名。” 我直接 神(Seed Evolving) 来!助我!
后端
IvanCodes1 天前
RAG 实战教程(一):RAG 工作原理与完整流程——分片、索引、召回、重排和生成
人工智能·后端·agent
·薯条大王1 天前
经济实惠玩云服务器|一台云服务器多人共用,子账号配置教程
java·linux·运维·服务器·汇编·c++·python
CodeSheep1 天前
稚晖君公司人事大变动,来了!
前端·后端·程序员
小满zs1 天前
Go语言第八章(函数)
后端·go
caimouse1 天前
TDI (传输驱动接口 Transport Driver Interface) 详细分析
网络协议
stark张宇1 天前
实战Go高级特性:Context超时控制、defer资源回收与Channel通信的关键避坑点
后端·go
小小、码农1 天前
Linux进程控制:从fork到exec,手写一个简易Shell
linux·运维·服务器