在阿里云(以及大多数主流云厂商)的架构中,ECS 实例默认分配的是私网 IP(内网 IP),这是出于安全隔离和资源高效利用的考虑。如果业务场景不需要直接暴露公网入口,或者为了节省公网带宽成本,我们完全可以通过以下几种成熟、合规且稳定的方案实现 ECS 与互联网之间的双向通信。
以下从主动访问网络和被动接收网络请求两个维度,结合具体产品特性进行详细解析:
一、 主动访问网络(ECS -> Internet)
当你的 ECS 需要下载软件包、调用外部 API 或推送日志到云端服务时,它需要能够发起出站连接。由于没有公网 IP,直接路由是无法到达互联网的,必须通过“网关”或“XX”中转。
1. NAT 网关(推荐,最标准方案)
这是企业级应用中最常见的做法。NAT 网关是一个高性能的网络地址转换服务,支持高并发连接数。
- 原理:在 VPC 中创建一个 NAT 网关,绑定一个或多个弹性公网 IP(EIP)。然后配置路由表,将特定交换机(Subnet)的流量指向 NAT 网关。
- 配置步骤:
- 购买并开通 NAT 网关(建议选用高性能型以支撑大流量)。
- 为 NAT 网关绑定 EIP。
- 创建 SNAT 规则:指定源 CIDR 为你的 ECS 所在子网,目标 CIDR 为
0.0.0.0/0(所有互联网地址)。 - 在 VPC 路由表中添加一条静态路由:目的端为
0.0.0.0/0,下一跳选择刚才创建的 NAT 网关。
- 优势:
- 共享出口 IP:多台无公网 IP 的 ECS 可以共用同一个 EIP 出口,便于白名单管理。
- 高可用:NAT 网关是集群化部署,具备高可用性。
- 安全性:网络无法主动发起连接到内网 ECS,仅允许内网主动发起。
2. 堡垒机(Bastion Host / Jump Server)
主要用于运维管理和交互式 SSH/RDP 连接,而非程序间的自动通信。
- 适用场景:开发人员需要通过终端登录无公网 IP 的 ECS 进行调试、部署或维护。
- 原理:堡垒机拥有公网 IP,用户先登录堡垒机,再通过堡垒机跳转至内网 ECS。
- 注意:这不适用于应用程序自动调用外部接口,仅适用于人工运维操作。
3. 反向隧道 / 工具类方案(如 frp, ngrok, Cloudflare Tunnel)
- 适用场景:小规模测试、个人项目或临时需求。
- 原理:在内网 ECS 上运行客户端程序,主动建立一条加密隧道连接到公网服务器,从而穿透防火墙。
- 缺点:依赖第三方服务稳定性,性能受限,不适合生产环境核心业务,且可能存在安全风险(需严格管控密钥)。
二、 被动接收网络请求(Internet -> ECS)
当外部用户或服务需要访问你部署在无公网 IP ECS 上的 Web 应用、API 接口时,不能直接通过 IP 访问,必须借助负载均衡或反向XX。
1. SLB / ALB + 私网监听(最推荐,生产环境标配)
使用阿里云的负载均衡服务(SLB 或新一代 ALB/NLB),将公网流量转发到内网 ECS。
- 原理:
- 创建一个 公网负载均衡实例(拥有公网 IP)。
- 在后端服务器组中添加你的无公网 IP ECS 实例。
- 配置监听规则(如 HTTP 80/443 端口),将公网请求转发到后端 ECS 的内网 IP 和对应端口。
- 优势:
- 负载均衡:支持多 ECS 实例分摊流量。
- 健康检查:自动检测后端 ECS 状态,剔除故障节点。
- SSL 卸载:可在 LB 层终止 HTTPS,减轻 ECS CPU 负担。
- 隐藏架构:外部用户只能看到 LB 的 IP,无法感知后端 ECS 的存在。
2. 网关服务 / API Gateway
如果你的业务是微服务架构,对外提供 API,推荐使用 API 网关。
- 原理:API 网关作为统一入口,接收公网请求,鉴权后转发至内网 ECS 或 VPC 内的其他服务。
- 优势:自带限流、熔断、监控、身份认证等企业级功能,适合面向公众开放的 API 场景。
3. Nginx/Apache 反向XX(轻量级方案)
如果不想购买额外的 LB 服务,可以在一台有公网 IP 的 ECS 上部署 Nginx,作为反向XX服务器。
-
原理:
server { listen 80; server_name example.com; location / { proxy_pass http://<内网ECS_IP>:8080; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; } } - 优点:成本低,只需一台带公网 IP 的机器即可。
- 缺点:单点故障风险(除非配合 Keepalived 做高可用),扩展性较差,需自行维护 SSL 证书和负载均衡逻辑。
三、 特殊场景:VPC 对等连接与专线
如果你的 ECS 需要访问的不是公共互联网,而是其他公司的私有网络、本地数据中心或其他云账号的 VPC,可以使用:
- VPC 对等连接(Peering Connection):打通两个 VPC 的路由,使它们像在同一局域网内一样通信。
- 高速通道(Express Connect):用于连接本地 IDC 和阿里云 VPC,适合大型企业混合云架构。
四、 最佳实践总结与建议
| 场景 | 推荐方案 | 关键组件 | 备注 |
|---|---|---|---|
| ECS 需下载更新、调外部 API | NAT 网关 | NAT GW + EIP | 生产环境首选,稳定可靠 |
| 外部用户访问 Web 应用 | 公网 SLB/ALB | LB + 后端 ECS | 支持高并发、健康检查、SSL |
| 运维人员远程登录 | 堡垒机 | Bastion Host | 符合审计合规要求 |
| 小型项目/临时调试 | frp/ngrok | 隧道工具 | 仅限非核心业务,注意安全 |
| 微服务 API 对外发布 | API 网关 | API Gateway | 集成鉴权、限流、监控 |
五、 安全提醒
- 最小权限原则:即使没有公网 IP,也要确保 ECS 的安全组规则只开放必要的内网端口。例如,Web 服务器不应直接暴露数据库端口给其他 ECS。
- 避免硬编码 IP:在代码中不要写死内网 IP,建议使用域名或通过元数据服务(Metadata Service)动态获取信息,提高可移植性。
- 监控与日志:启用云监控和 SLS 日志服务,重点关注 NAT 网关的连接数和 SLB 的健康状态,及时发现异常流量。
综上所述,对于绝大多数生产环境,“NAT 网关解决出站 + 公网 SLB 解决入站” 是最标准、最安全、最具可扩展性的组合方案。
云技术博客