在阿里云NAT网关场景下,内网服务器的出口IP和公网入口IP通常是不一样的。这是由NAT网关的核心工作原理决定的。
核心结论
- 出口IP(出方向):是您购买的NAT网关绑定的弹性公网IP。
- 入口IP(入方向):是您为内网服务器单独配置的公网IP(如绑定到ECS实例或SLB实例的EIP),或者通过端口转发/DNAT规则映射到内网服务器的NAT网关的EIP。
简单来说:出和入是两条独立的路径,默认情况下IP不同。
详细解释与场景分析
1. 默认典型场景(最常见)
- 配置:
- 内网服务器(如ECS)没有分配任何公网IP。
- 创建了NAT网关,并为其绑定了一个或多个弹性公网IP(例如
123.123.123.123)。 - 在VPC的路由表中,将指向互联网(
0.0.0.0/0)的默认路由指向该NAT网关。
- 流量走向:
- 出方向(服务器访问公网):ECS发起对外请求 → 根据路由表走到NAT网关 → NAT网关将源IP(私网IP)转换为自己的公网IP(
123.123.123.123)发出。此时,公网服务看到的来源IP就是NAT网关的EIP。 - 入方向(公网访问服务器):公网用户无法直接通过
123.123.123.123访问到您的ECS,因为NAT网关默认只做源地址转换(SNAT),没有做目的地址转换(DNAT)。公网流量无法主动进入。
- 出方向(服务器访问公网):ECS发起对外请求 → 根据路由表走到NAT网关 → NAT网关将源IP(私网IP)转换为自己的公网IP(
- 结论:此场景下,服务器只有出口IP(即NAT网关的EIP),没有直接的公网入口IP。入方向流量不通。
2. 需要公网入访问的场景(使用DNAT)
- 配置:在以上基础上,您在NAT网关中添加了 DNAT规则。例如,将NAT网关的EIP(
123.123.123.123)的某个端口(如TCP 3389)映射到内网某台ECS的私网IP和端口。 - 流量走向:
- 出方向:同上,出口IP仍是NAT网关的EIP
123.123.123.123。 - 入方向:公网用户访问
123.123.123.123:3389→ NAT网关根据DNAT规则,将目的IP和端口转换为ECS的私网IP和端口 → 流量转发到ECS。此时,公网入口IP也是NAT网关的EIP123.123.123.123。
- 出方向:同上,出口IP仍是NAT网关的EIP
- 结论:在这个特定的端口上,出口IP和公网入口IP变得一样了(都是NAT网关的EIP)。但这仅限于您配置了DNAT规则的端口。
3. 混合场景(服务器同时拥有EIP和走NAT出网)
- 配置:
- 内网服务器自己绑定了一个弹性公网IP(例如
456.456.456.456)。 - 同时,VPC的路由表也配置了通过NAT网关出网。
- 内网服务器自己绑定了一个弹性公网IP(例如
- 流量走向:
- 出方向:
- 如果流量从服务器的私网网卡发出,会遵循路由表走到NAT网关,出口IP为NAT网关的EIP(
123.123.123.123)。 - 如果流量从服务器的公网网卡(绑定EIP的网卡)发出,出口IP就是服务器自己的EIP(
456.456.456.456)。这通常需要在服务器内部进行路由策略配置。
- 如果流量从服务器的私网网卡发出,会遵循路由表走到NAT网关,出口IP为NAT网关的EIP(
- 入方向:公网用户可以直接通过服务器自己的EIP(
456.456.456.456)访问该服务器。
- 出方向:
- 结论:此场景下,服务器拥有两个不同的公网IP。出口IP可能是NAT网关的EIP或自己的EIP(取决于路由),而公网入口IP通常是它自己的EIP。两者不一致。
总结对比表
| 场景 | 出口IP (SNAT) | 公网入口IP (DNAT/直接绑定) | 是否一致 |
|---|---|---|---|
| 默认仅出网 | NAT网关的EIP | 无(无法直接入站) | 不适用 |
| NAT网关DNAT入站 | NAT网关的EIP | NAT网关的EIP(仅映射端口) | 一致 |
| 服务器自带EIP | NAT网关的EIP 或 服务器自有EIP | 服务器自有EIP | 通常不一致 |
如何查看和确认?
- 出口IP:在内网服务器上执行
curl ifconfig.me或curl cip.cc,显示的IP就是当前出方向使用的公网IP(即NAT网关的EIP,除非你配置了特殊路由)。 - 入口IP:
- 如果配置了DNAT,入口IP就是DNAT规则中配置的NAT网关EIP。
- 如果服务器绑定了EIP,入口IP就是该EIP。
- 可以在服务器上查看Web访问日志,其中记录的客户端“源IP”是访客的IP,而服务器“被访问的IP”就是入口IP。
最终建议:在阿里云架构设计中,通常将无公网IP的服务器通过NAT网关统一出网(出口IP一致,便于管理),同时将需要对外服务的服务器前端部署负载均衡SLB,或将特定端口通过NAT网关的DNAT规则暴露。这样能清晰地区分入口和出口流量,并提升安全性。
CLOUD技术笔记