后端服务器放在私有网络里、没有公网IP,外部用户或第三方系统却要访问其中某个端口,这种情况在阿里云上很常见。需要的时候,通常就是配阿里云映射。先弄清楚它做了什么,后面排查会省不少时间。

阿里云映射到底做了什么
说白了,映射就是把“公网地址加端口”转发给“内网地址加端口”。请求先到公网入口,网络设备再按规则转给后端实例。网络层一般把这种做法叫DNAT(目标地址转换)。
阿里云上实现这件事,常见有两个组件。NAT网关挂在专有网络VPC里,绑定公网IP后可以配置DNAT端口转发规则,适合端口级的简单转发。负载均衡SLB通过监听端口把请求分给后端服务器组,支持健康检查和多机分流。如果只是把一个端口开给一台机器,NAT网关更直接;要做高可用,就该看SLB。
哪些场景适合用
- 后端服务器不直接暴露公网IP,统一从一个入口对外,便于集中管理,也更容易收紧安全策略。
- 内网里有好几台服务,想用少量公网IP对外提供不同端口的服务。
- 支付通知、第三方回调这类需要固定公网地址的场景。
- 开发测试时临时对外调试,不想为每台机器单独购买公网IP。
用NAT网关配置映射
下面用一个例子说明。内网ECS上跑着一个Web管理后台,监听8080端口,希望通过NAT网关的公网IP的80端口访问。控制台的菜单名称可能随版本调整,但思路不变。
第一步,确认网络基础
- ECS和NAT网关要在同一个VPC里,并且ECS所在交换机的路由配置正确。
- 给NAT网关绑定一个弹性公网IP(EIP),外部访问就靠它。
- 确认ECS的内网IP是固定的。IP一变,规则就指向了错误的地址。
第二步,添加DNAT规则
- 进入NAT网关的DNAT管理页面,新建一条端口转发规则。
- 公网端口填80,内网IP填ECS的私网地址,内网端口填8080,协议选TCP。
- 保存后等规则生效,一般很快就能用上。
第三步,检查安全组
映射规则只负责转发,能不能真正访问,要看安全组。需要在ECS所属的安全组里放行8080端口的入站流量。更稳妥的做法是只允许特定源IP段访问,不要直接对0.0.0.0/0开放。很多人规则配对了还是连不上,问题往往就出在这一步。
第四步,验证连通性
在本地用telnet或curl,指向NAT网关的公网IP和80端口测试。拿到预期的页面或响应头,说明链路通了。失败的话,按顺序查:规则的方向和端口、目标IP是否还是现在的私网地址、安全组有没有放行。大多数问题都能这样定位。
一个设想中的例子
设想一个小型电商团队,订单系统部署在VPC内的两台ECS上,用Java编写,监听8080端口。支付平台要求回调地址是固定公网地址,但团队不想给每台服务器都配公网IP,以免扩大暴露面。
一种可行做法是:创建NAT网关,绑定EIP,再添加DNAT规则,把公网443端口转到其中一台ECS的8080端口。这里有个细节要注意。NAT网关做的是端口转发,不卸载TLS,证书需要放在后端服务上,或者前面另有能处理证书的组件。安全组则只允许支付平台的回调IP段进入。
业务量上来以后,这类方案可以换成SLB加两台后端ECS。SLB带健康检查,某台机器出问题时会被自动摘除,不会因为单点故障拖垮回调。映射方案随业务规模逐步演进就好,一开始没必要设计得很复杂。
容易踩的坑
- 端口按需开放:只映射业务必需的端口。数据库、远程桌面这类高危端口,没有明确需要就不要映射出去。
- 安全组限定来源:尽量指定源IP,别图省事用0.0.0.0/0放行所有来源。
- 内网地址固定:实例IP变化后映射规则会失效,提前规划地址比事后排查划算。
- 协议别选错:TCP和UDP按业务实际选,混用时容易出现连接异常。
- 开启日志和监控:出问题时能回溯请求记录,排查会快很多。
- 提前算成本:NAT网关和公网带宽都会计费,上线前按预估流量核算一遍。
如果只是端口级的简单需求,NAT网关的DNAT规则够用;要做高可用和负载分担,再考虑SLB。正式上线前,建议在测试环境把整条链路完整走一遍。控制台的具体操作路径以阿里云官方文档为准,界面改动比较常见。