阿里云的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 "代拨"上网
相关推荐
RNEA ESIO2 小时前
Spring Boot应用关闭分析
java·spring boot·后端
神奇小汤圆2 小时前
MySQL复制延迟很头疼?从AI诊断到内核优化,AliSQL为您保驾护航。
后端
johnrui2 小时前
springboot接口限流操作
java·spring boot·后端
用户962377954482 小时前
代码审计 | CC1 LazyMap 链 —— 动态代理
后端
kaoa0002 小时前
Linux入门攻坚——73、运维OS Provisioning阶段工具之PXE、Cobbler
linux·运维
笑笑先生2 小时前
Proxy 与 Namespace:终结环境与鉴权的噩梦
后端·微服务·架构
JoshRen2 小时前
springboot之集成Elasticsearch
spring boot·后端·elasticsearch
东北甜妹2 小时前
MYSQL
运维
用户497932309632 小时前
大模型篇章(1):初识大模型——开启 AI 新时代的钥匙
后端