阿里云的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 "代拨"上网
相关推荐
九皇叔叔11 小时前
Ubuntu 22.04 版本常用设置
linux·运维·ubuntu
杨凯凡12 小时前
【021】反射与注解:Spring 里背后的影子
java·后端·spring
Ares-Wang12 小时前
Flask》》 Flask-Bcrypt 哈希加密
后端·python·flask
小码哥_常12 小时前
Spring Boot项目大变身:为何要拆成这六大模块?
后端
杨云龙UP13 小时前
ODA登录ODA Web管理界面时提示Password Expired的处理方法_20260423
linux·运维·服务器·数据库·oracle
songx_9913 小时前
Linux基础2
linux·运维·服务器
码事漫谈14 小时前
兵临城下:DeepSeek-V4 的技术突围与算力“成人礼”
后端
陈皮糖..14 小时前
27 届运维实习笔记|第三、四周:从流程熟练到故障排查,企业运维实战深化
运维·笔记·sql·nginx·ci/cd·云计算·jenkins
三水不滴15 小时前
SpringAI + SpringDoc + Knife4j 构建企业级智能问卷系统
经验分享·spring boot·笔记·后端·spring
莫白媛15 小时前
Linux在限制敏感命令下的修改用户密码小白版
linux·运维·服务器