NAT 网关怎么用:让私网 ECS 共享一个出口的实践笔记
最近搭业务环境时遇到一个典型问题:应用和数据库都放在私网子网,没有公网 IP,但又要拉镜像、打补丁、调第三方接口。给每台 ECS 都绑 EIP 不仅贵,还把内网机器直接暴露在公网。最后加了一个 NAT 网关,私网 ECS 共用一个 EIP 出网,发布服务再用 DNAT 单独放行。
一、为什么私网 ECS 需要 NAT
私网 ECS 只有内网 IP,默认访问不了公网。但“不出网”几乎不可能:打补丁要联网,拉镜像要联网,调短信、支付接口也要联网。与其每台都绑 EIP,不如在出口放一个 NAT 网关:私网里的机器共用一个 EIP 出去,机器本身不暴露在公网。
二、SNAT 与 DNAT 的分工
出方向看 SNAT。私网 ECS 访问公网时,源地址被替换成网关绑定的 EIP,多台 ECS 共用这一个公网地址出网。
入方向看 DNAT。公网访问私网服务时,目标地址替换成内网 ECS 的私网地址,按端口转发,比如 EIP 的 8080 映射到某台 ECS 的 80 端口。
SNAT 管出,DNAT 管进。
三、配置顺序:子网路由指向 NAT
踩过的一个坑:SNAT 配了、EIP 绑了,ECS 还是上不了网,问题出在路由上:子网流量根本没走到 NAT 网关。正确顺序是:
1、先建 NAT 网关,放在公网子网里,绑定一个弹性公网 IP。
2、建 SNAT 规则:整个子网出网选“子网”,个别 ECS 出网选“ECS”。
3、关键一步:去私网子网关联的路由表里,加默认路由 0.0.0.0/0,下一跳指向 NAT 网关。
4、需要对外发布服务时,再建 DNAT 规则,写清协议、公网端口和内网目标端口。
5、最后检查安全组:出方向放通要访问的目标,入方向只放通 DNAT 用到的端口。
第三步最容易漏:网关配好不等于流量会过去,没有指向 NAT 网关的默认路由,包走到子网网关就不知道往哪送。
四、上线前检查清单
按这份清单逐项过一遍再交差:
1、私网子网的路由表里有没有 0.0.0.0/0 指向 NAT 网关。
2、SNAT 规则覆盖的范围是不是要上网的机器,别多也别少。
3、网关上 EIP 的带宽够不够:多台机器共享一个出口,带宽大家一起用。
4、DNAT 的每个公网端口只映射一台内网机器,别出现端口冲突。
5、安全组两边都查:出方向允许 ECS 访问目标,入方向只对 DNAT 端口放行。
6、用域名验证一次 DNS 和连通性,业务实际调一次接口、拉一次镜像确认走得通。
NAT 网关本身不复杂,也不用改业务代码,就是把出口收敛到一个点上。按这个顺序做对了,私网 ECS 共享出口上网就是一件稳定省心的事。
- 点赞
- 收藏
- 关注作者
评论(0)