DNAT 端口映射怎么用
DNAT 把公网 EIP 上的端口映射到内网实例的私网端口:外部访问这个公网端口时,NAT 网关会把请求转发到指定内网目标,实例本身不需要公网 IP。这样既能对内提供服务,又隐藏了真实源站;域名与证书按对外使用的服务域名准备即可,目标实例的私网地址对用户不可见。
基本信息
| 映射粒度 | 端口级:公网端口 → 私网 IP : 私网端口 |
|---|---|
| 协议 | TCP / UDP,按需选择 |
| 排他性 | 同一 EIP 的同一端口只能映射到一个内网目标 |
| 方向 | 只解决入方向;实例主动出网仍需 SNAT 或直接绑 EIP |
| 前置条件 | 安全组需放行该私网端口,来源可为公网地址 |
| 适用场景 | 隐藏源站、复用少量公网 IP 提供服务 |
典型使用场景
- 自建服务对外提供访问,但不想给实例直接绑公网 IP
- 多个内部服务复用少量公网 IP,用不同端口区分
- 临时对外开放在用端口做联调,用完即删映射
- 非 HTTP 协议服务(如自建 TCP 服务)对外暴露
- 迁移期间把公网端口指向新实例,实现无感切换
创建 DNAT 条目
创建 DNAT 条目
NAT 网关 → DNAT 管理 → 创建 DNAT 条目
公网端口:443
私网端口:8443
私网 IP:10.10.1.20
EIP:选择承载该映射的弹性公网 IP
验证:nc -zv -w 3 <EIP> 443 或 curl -I https://<域名>/排查与对照
| 现象 | 常见原因 |
|---|---|
| 外部访问超时 | 删除了映射条目,或安全组未放行私网端口 |
| 创建条目失败 | 该 EIP 的这个公网端口已被其他映射占用 |
| 映射后访问到错误服务 | 私网 IP 或端口填错,命中了别的实例 |
| 实例能出网但外部进不来 | DNAT 只解决入向,需另行确认映射是否存在 |
DNAT 与负载均衡的选择:只需要把自己维护的单个实例暴露出去用 DNAT 就够;需要多台后端分摊流量与健康检查,应优先选用负载均衡。
对外暴露的端口应尽量少而明确,映射到管理端口(如 22、3389)时务必把安全组来源收窄到固定网段,否则等于把主机管理入口直接放到公网。