
你买了一台云服务器,控制台里看到好几个IP:公网IP、内网IP,有的还有弹性IP。你ssh连的是哪个?网站绑定的是哪个?两个服务器之间通信该用哪个?很多人分不清。今天把这些IP讲透。
先看一个数据
某云厂商统计,超过40%的网络配置问题,根源是IP地址用错了。两个服务器用公网IP通信,走了互联网,绕一大圈,速度慢还收流量费。本来可以用内网IP,又快又免费。
不是技术难,是你没搞清楚每种IP的用途。
内网IP:局域网里的门牌号
内网IP是云厂商内部网络分配的地址,只在同一个云账号、同一个地域、同一个VPC内有效。
特征:
- 常见网段:172.17.x.x、192.168.x.x、10.x.x.x
- 只能内网访问,不能直接从互联网连接
- 免费
- 速度快(不走公网)
用途:
- 同一账号下多台服务器之间通信(web服务器连数据库)
- 负载均衡后端挂载的服务器
- 内网文件传输(rsync、NFS)
例子:Web服务器内网IP 172.16.1.10,数据库服务器内网IP 172.16.1.20。Web服务器用172.16.1.20:3306连数据库,不经过公网,速度更快、更安全、不收费。
SSH不能用内网IP,除非你在同一个内网环境(比如公司VPN连入云VPC)。
公网IP:互联网上的门牌号
公网IP是全世界唯一、可以在互联网上访问的地址。
特征:
- 全球唯一
- 可以从互联网直接访问(SSH、HTTP、HTTPS)
- 收费(占用费+流量费)
- 普通公网IP绑定在服务器上,换了服务器IP会变
用途:
- 用户访问你的网站
- 你从本地SSH登录服务器
- API服务对外暴露
例子:你的网站https://example.com解析到这个公网IP,用户通过它访问。
弹性IP:可以“拔下来”的公网IP
弹性IP本质上也是公网IP,区别是可以解绑再绑定到其他服务器。
特征:
- 解绑后保留,不会释放
- 可以随时绑定到其他服务器
- 按占用时长收费,不使用时建议释放
用途:
- 服务器故障时,把弹性IP快速绑到备用机(IP不变,DNS不用改)
- 需要固定IP的场景(第三方API白名单)
- 主备切换
例子:你的主服务器挂了,把弹性IP从主服务器解绑,绑定到备用服务器。用户访问同一个IP,完全无感知。
三种IP对比
| 类型 | 可公网访问 | 收费 | 可解绑 | 适用场景 |
|---|---|---|---|---|
| 内网IP | 否 | 免费 | 否 | 同地域服务器间通信 |
| 公网IP | 是 | 流量费 | 否(随服务器释放) | 普通Web服务 |
| 弹性IP | 是 | 占用费+流量费 | 是 | 需要固定IP、主备切换 |
实战配置
内网通信:Web服务器配置里写数据库的内网IP,不走公网,安全省流量。
php
// 用内网IP连接数据库 $host = '172.16.1.20';
公网IP访问:域名解析到公网IP或弹性IP。
bash
# SSH用公网IP ssh root@你的公网IP
弹性IP主备切换:主服务器挂掉后,解绑弹性IP,绑定到备用服务器。
bash
# 阿里云CLI示例 aliyun ecs UnassociateEipAddress --AllocationId eip-xxx aliyun ecs AssociateEipAddress --AllocationId eip-xxx --InstanceId 备用服务器ID
切换时间1-2分钟。配合脚本自动化,能做到几分钟内恢复。
常见问题
Q:为什么我的服务器没有公网IP?
A:购买时没选。很多云厂商默认只分配内网IP,公网IP需要单独购买(按流量或按带宽)。没有公网IP的服务器,只能内网访问。
Q:弹性IP不使用时收费吗?
A:收费。即使没绑定服务器,也会收占用费。长期不用的弹性IP建议释放。
Q:弹性IP解绑后,原来的公网IP会保留吗?
A:弹性IP会保留。普通公网IP随服务器释放一起消失。如果你重启服务器,普通公网IP可能不变也可能变,取决于云厂商策略。弹性IP解绑后始终保留,直到你手动释放。
Q:换了公网IP,网站访问不了怎么办?
A:域名解析要改成新IP。云内资源依赖写死IP的场景,先采用内网域名或负载均衡,避免IP变更导致故障。
真实案例
一个创业公司,数据库服务器用的是普通公网IP。某天他们换了服务器,IP变了。所有应用代码里的数据库IP都要改,改了一下午,漏了几处,网站报错。
后来他们把数据库切到内网,应用服务器用内网IP连数据库。数据库不再需要公网IP,安全了,也不怕IP变了。
对外服务的应用服务器用了弹性IP。换服务器时,解绑弹性IP,重新绑定到新机器,用户无感知。
最后一句
三种IP各司其职。内网IP给服务器之间通信,又快又免费。公网IP给用户访问。弹性IP给需要固定地址的关键服务。
下次你配服务器,想清楚:这个IP是给谁用的?用户?还是另一台服务器?用户走公网,服务器之间走内网。
不是所有IP都要暴露在公网上。数据库、Redis、内部API,用内网IP就够了。少开一个公网端口,少一份风险。




