公众号旧文
为什么阿里云 ECS 公网 IP 不在网卡上,却可以直接 SSH 连接?
很多人第一次登录 Alibaba Cloud 的 ECS 时都会有一个疑问:
明明
ip addr里只有 172.22.x.x 内网地址, 为什么我可以直接 ssh 公网 IP,还不用写端口号?
这篇文章带你彻底搞懂云服务器的公网实现原理。
一、现象
在 ECS 里执行:
ip
addr
你看到的是:
172
.
22
.
184
.
73
而不是:
39
.
96
.
187
.
9
但是你却可以:
ssh
root@
39.96.187.9
直接登录。
二、传统公网服务器是怎样的?
如果是传统物理服务器或者早期 VPS:
eth0
:
1.2.3.4
公网 IP 就直接绑定在网卡上。
数据路径是:
你的电脑 → 服务器公网 IP → 服务器
简单直接。
三、家用路由器 NAT 是怎样的?
家里常见情况:
内网机器:192.168.1.10
公网 IP:1.2.3.4
路由器做端口转发:
1
.
2
.
3
.
4
:
2222
→
192.168.1.10:22
你必须:
ssh
1.2.3.4
-p
2222
这是端口级 NAT。
四、阿里云 ECS 用的是什么?
阿里云 ECS 使用的是:
1:1 全端口 NAT 映射
结构类似:
公网 39.96.187.9
↓
云边界 NAT 网关
↓
私网 172.22.184.73
并且是:
39
.
96
.
187
.
9
:任意端口 →
172.22.184.73
:相同端口
所以:
39
.
96
.
187
.
9
:
22
→
172.22.184.73:22
39
.
96
.
187
.
9
:
80
→
172.22.184.73:80
39
.
96
.
187
.
9
:
443
→
172.22.184.73:443
这就是为什么你可以:
ssh
root@
39.96.187.9
五、真实流量路径
当你 SSH 时,真实路径是:
你的电脑
↓
阿里云公网路由
↓
NAT 网关
↓
ECS 内网 IP (172.22.x.x)
返回时:
172.22.x.x
↓
NAT 网关
↓
39.96.x.x (公网 IP)
↓
你的电脑
公网 IP 实际上存在于云厂商的网络设备上,而不是你的虚拟机里。
六、为什么云厂商要这样设计?
原因有几个:
1️⃣ 安全隔离
实例只暴露私网 IP 公网统一由边界设备管理
2️⃣ 支持热迁移
如果你的实例迁移到另一台物理机:
- 私网 IP 不变
- 公网 IP 仍然绑定在边界设备
迁移对外完全无感。
3️⃣ 公网 IP 可以随时解绑
在控制台解绑公网 IP,本质上只是:
- 取消 1:1 NAT 规则
- 实例网络不需要重启
七、怎么判断自己是不是 NAT 模式?
在 ECS 里运行:
ip
addr
如果看不到公网 IP 基本就是 NAT 模式。
再看路由:
ip
route
通常会看到:
default
via
172
.
22
.x.
1
说明默认网关是内网地址。
八、那阿里云ECS的公网算是“真公网”吗?
这是一个常见争论。
技术上讲:
- 你的实例没有公网 IP
- 但你拥有一个 1:1 公网映射
从使用效果上:
✔ 等同真公网 ✔ 不存在端口限制 ✔ 不需要端口转发
只是实现方式不同。
九、总结
当你在阿里云 ECS 上:
- 看到只有内网 IP
- 却能直接 SSH 公网 IP
不要困惑。
因为云厂商做的是:
1:1 全端口 NAT 映射
公网 IP 在云边界设备上,你的 ECS 只在私网中运行。
但对外表现为一台拥有公网 IP 的服务器。