【运维✨】云服务器公网 IP 迷雾:为什么本机看不到那个地址?
适合第一次用云服务的新手,5 分钟看懂「弹性公网 EIP」和「端口映射」
故事开场
小 A 买了一台云服务器,厂商给他分配了公网 IP 203.0.113.47。
他登录机器,输入 ip a,却怎么也找不到这个地址——只有一张私有网卡 192.168.0.12。
更奇怪的是,浏览器访问 203.0.113.47:8080 能看到网页,访问 203.0.113.47:5000 却直接超时。
小 A 陷入迷茫:
「公网 IP 到底在哪?为什么有的端口能进,有的不能进?」
1 分钟原理:云厂商在幕后做了一次「搬家」
云服务厂商为了节省公网地址,会给每台云主机绑定一个 弹性公网 IP(Elastic IP,简称 EIP),然后在机房边缘做一次 1:1 NAT:
| 方向 | 地址变化 | 
|---|---|
| 公网→私网 | 203.0.113.47:端口 → 192.168.0.12:端口 | 
| 私网→公网 | 192.168.0.12 源地址 → 203.0.113.47 源地址 | 
结果:
- 本机永远看不到 203.0.113.47,只能看到私网 192.168.0.12
 - 公网 IP 像「影子」一样挂在云端,只负责「收包→转发」
 
2 分钟实验:把「影子」拆开看
① 在本机查地址
$ ip a | grep inet
inet 192.168.0.12/24 brd 192.168.0.255 scope global eth0
→ 确实只有私网地址
② 从公网来敲门
# 能通(云控制台放行了 8080)
curl http://203.0.113.47:8080# 超时(云控制台没放行 5000)
curl http://203.0.113.47:5000
→ 能否连通 取决于「安全组 / 防火墙」是否把对应端口映射进来
3 分钟选择:我要不要开放更多端口?
| 方案 | 怎么做 | 优点 | 缺点 | 
|---|---|---|---|
| A. 继续加端口映射 | 在云控制台再开 TCP 5000 入方向 | 最简单,公网直连 | 每开一个端口就多一个攻击面 | 
| B. 只用 Nginx 反向代理 | 只保留 80/443,/api/ 转发到 localhost:5000 | 端口少,易配 HTTPS、限流、WAF | 多一次转发,延迟略增 | 
生产环境推荐 方案 B;快速调试可用 方案 A
4 分钟命令:把 5000 映射进来(方案 A 示例)
- 登录云控制台 → 安全组 → 入方向规则
 - 添加 TCP 5000 允许源 0.0.0.0/0
 - 立即再测
 
curl http://203.0.113.47:5000
→ 通!
5 分钟总结:一句话背下来
“公网 EIP 是云端的‘影子’,背后 NAT 到私网;想从公网连新端口,要么去控制台放行,要么让 Nginx 代理,别指望本机能‘看到’那个公网地址!”
记住这张图,以后再也不会被「找不到公网 IP」困扰啦!
彩蛋小贴士
- 如果只想内网用,安全组直接禁止 0.0.0.0,只留公司/校园网段, Shadow 就彻底隐身。
 - 换区域 / 换云厂商,原理一模一样,只是菜单名字不同。
 
