在服务器网络中,入口 IP(Ingress IP) 和 出口 IP(Egress IP) 是两个非常常见但容易混淆的概念。可以简单理解为:
- 入口 IP:别人访问你服务器时看到的 IP
- 出口 IP:你的服务器访问外部时使用的 IP
我用一个简单的网络流程帮你理解。
一、入口 IP(Ingress IP)
定义:
外部客户端访问服务器时,请求进入服务器所使用的 IP 地址。
场景举例:
用户在浏览器访问:
1 | https://example.com |
DNS 解析得到:
1 | 1.2.3.4 |
浏览器访问的就是 1.2.3.4,这个 IP 就是服务器的 入口 IP。
数据流向:
1 | 用户浏览器 ---> 服务器入口IP |
常见情况
入口 IP 可能是:
- 服务器公网 IP
- 负载均衡 IP
- CDN 节点 IP
- 反向代理 IP
例如:
1 | 用户 -> CDN -> 负载均衡 -> 服务器 |
入口 IP 对服务器来说可能是:
- CDN IP
- LB IP
- Nginx IP
二、出口 IP(Egress IP)
定义:
服务器主动访问外部网络时,对外表现出来的 IP 地址。
场景举例:
你的服务器调用第三方 API:
1 | https://api.weixin.qq.com |
微信服务器看到的请求来源 IP 就是:
1 | 你的服务器出口IP |
数据流向:
1 | 服务器出口IP ---> 第三方服务 |
三、最常见的真实架构
很多云服务器都会出现:
1 | 公网IP:1.2.3.4 |
例如在:
- Alibaba Cloud
- Huawei Cloud
- Amazon Web Services
架构通常是:
1 | 用户 |
因此:
| 类型 | 含义 | 示例 |
|---|---|---|
| 入口 IP | 外部访问服务器的 IP | 用户访问网站 |
| 出口 IP | 服务器访问外部的 IP | 调用第三方 API |
四、入口 IP 和出口 IP 可能不同
例如:
服务器没有公网 IP,只能走 NAT 网关:
1 | 服务器内网IP:10.0.0.5 |
情况:
访问服务器
1 | 用户 -> 47.100.10.10 (负载均衡) |
服务器访问外部
1 | 服务器 -> NAT -> 47.100.10.20 |
所以:
| 类型 | IP |
|---|---|
| 入口IP | 47.100.10.10 |
| 出口IP | 47.100.10.20 |
五、为什么要区分入口 / 出口 IP
主要用于:
1 IP 白名单
很多第三方 API 要求:
1 | 只允许指定 IP 调用 |
你就要提供:
服务器出口 IP
2 防火墙策略
例如:
1 | 允许来源 IP |
这个就是:
入口 IP 来源
3 安全审计
例如日志:
1 | client_ip |
分析访问来源。
六、最简单的一句话理解
入口 IP:别人访问你用的 IP
出口 IP:你访问别人用的 IP