在很多场景下,我们希望部署在单机服务器上的服务能够被公网用户访问。实现这一目标需要 两个条件同时满足:
- 服务器可以访问公网(至少能够主动访问穿透服务或外网)
- 服务端口能够被公网访问(要么服务器拥有公网 IP,要么通过内网穿透)
只有同时满足这两个条件,公网用户才能访问到服务器提供的服务。
一、为什么服务器需要能访问公网?
直觉上,你可能会想"服务器被访问,不是应该只被动接收请求吗?为什么还需要能访问公网?"
这其实涉及 网络通信的双向性 和 内网穿透原理。
1️⃣ 公网访问本质是双向通信
-
当公网客户端访问服务器时,数据流是双向的:
公网客户端 → 请求 → 服务器端口
服务器 → 响应 → 公网客户端 -
如果服务器有公网 IP 或端口映射,客户端可以直接访问,服务器响应也直接返回,无需主动访问公网。
2️⃣ 内网服务器(没有公网 IP)的情况
- 如果服务器在 NAT 内网或 Portal 网络,公网客户端无法直接找到服务器。
- 需要 内网穿透(frp、natapp、ngrok 等)来建立访问通道。
内网穿透原理:
- 服务器主动向一个公网中转服务器建立长连接。
- 中转服务器分配公网地址(域名+端口),公网客户端访问这个地址。
- 中转服务器把客户端请求通过穿透通道转发给服务器,服务器再响应。
⚠️ 核心:如果服务器不能主动访问公网,中转穿透服务就无法建立,公网访问就无法实现。
3️⃣ 总结
| 条件 | 作用 |
|---|---|
| 服务器能访问公网 | 用于建立内网穿透通道 |
| 服务端口能被公网访问 | 公网客户端才能找到服务 |
- 有公网 IP 的服务器 → 不需要穿透,客户端直接访问即可
- 没有公网 IP 的服务器 → 必须主动连接穿透服务,否则公网无法访问
二、方案分类逻辑
根据服务器上网方式和公网访问能力,可以将方案分为五类:
| 方案编号 | 服务器上网方式 | 公网访问方式 | 是否需要内网穿透 | 可行性 | 备注 |
|---|---|---|---|---|---|
| 1 | 服务器在内网 | 通过公网服务器做内网穿透(frp/natapp) | ✅ | ✅ | 需要管理员允许在公网服务器上部署穿透 |
| 2 | 服务器连接 CPE(4G/5G 路由) | 服务器直接有公网 IP 或端口映射 | ❌(如果有公网 IP 可直接访问) | ✅ | 公网 IP 取决于运营商是否分配 |
| 3 | 服务器接 Portal WiFi | Portal 网络不允许外网直接访问,需要配合穿透(frp/natapp) | ✅ | ✅ | Portal 只提供联网,不自动暴露端口 |
| 4 | 服务器通过手机热点联网 | 需要配合穿透(frp/natapp) | ✅ | ✅ | 手机一般是 NAT,没有公网 IP,必须穿透 |
| 5 | 电脑接 WiFi + 服务器网线互联 | 电脑运行穿透服务(frp/natapp / ssh -R) | ✅ | ✅ | 电脑必须开机,转发到服务器端口 |
三、方案核心总结
-
内网 + 公网服务器穿透
- 核心:公网服务器作为穿透中转
- 优点:稳定、可长期使用
- 缺点:需要管理员同意
-
服务器连接 CPE(公网 IP 或端口映射)
- 核心:服务器直接拥有公网访问能力
- 优点:不需要内网穿透
- 缺点:依赖运营商分配公网 IP
-
服务器 Portal WiFi + 内网穿透
- 核心:Portal 网络只提供联网,需要穿透服务暴露端口
- 优点:不需要管理员
- 缺点:Portal 登录需手动或脚本化
-
服务器手机热点 + 内网穿透
- 核心:手机 NAT,不可直接访问公网,需要穿透
- 优点:临时可用,简单
- 缺点:不稳定,手机要一直开着
-
电脑网关 + 内网穿透
- 核心:电脑作为中转,暴露服务器端口
- 优点:不需要管理员
- 缺点:电脑必须开机,适合测试和开发
四、按可行性和稳定性排序
| 排序 | 方案 | 稳定性 | 可操作性 | 备注 |
|---|---|---|---|---|
| 1 | 内网 + 公网服务器穿透 | ⭐⭐⭐⭐⭐ | 中 | 适合长期部署,需要管理员 |
| 2 | CPE 公网 IP 或端口映射 | ⭐⭐⭐⭐ | 中 | 适合长期部署,但公网 IP 依赖运营商 |
| 3 | Portal WiFi + 内网穿透 | ⭐⭐⭐ | 高 | 不依赖管理员,适合现有环境,但需要 Portal 登录 |
| 4 | 手机热点 + 内网穿透 | ⭐⭐ | 高 | 临时方案,可做测试,不适合长期部署 |
| 5 | 电脑网关 + 内网穿透 | ⭐⭐ | 中 | 开发或临时调试方案,电脑必须开机 |
五、关键总结
- 公网访问核心:要么服务器有公网 IP,要么使用内网穿透服务。
- Portal / 手机热点 / 内网服务器 只是"让服务器能上网",还需要穿透服务才能暴露端口。
- 长期稳定方案:内网 + 公网服务器穿透、CPE 公网 IP 或端口映射
- 临时测试方案:Portal WiFi / 手机热点 / 电脑网关