FRP(Fast Reverse Proxy)并不能直接实现像 Zerotier 那样的虚拟局域网(即自动分配虚拟 IP 给客户端),它的原理与 Zerotier 是完全不同的。下面详细对比并解释它们的工作原理和是否能实现类似的效果。
🧠 一、FRP 的原理和工作过程
📌 工作模式:端口映射 + 反向代理
✅ 原理流程:
-
服务器(frps)监听一个公网端口(如 7000)。
-
客户端(frpc)主动连接服务器并注册希望转发的服务(比如本地 22/3389/80 端口)。
-
当有人访问服务器的某个端口(如 6001),frps 会:
-
将该连接转发给已经连接过来的 frpc 客户端,
-
frpc 客户端收到请求后,将数据转发到其本地服务,
-
然后再返回响应,形成反向代理。
-
✅ 适用场景:
-
暴露内网服务到公网(HTTP、SSH、RDP 等)
-
内网穿透(比如穿透 NAT、防火墙)
-
适合服务提供场景(服务端是公网、客户端在内网)
🌐 二、Zerotier 的原理(对比参考)
📌 工作模式:SD-WAN + 虚拟网卡 + Overlay 网络
✅ 核心特性:
-
每台主机安装客户端后,会创建一个虚拟网卡(如
ztxxxxxx) -
Zerotier 网络控制器分配私有 IP(如 10.147.0.1)给每个客户端
-
所有客户端通过 UDP 打洞或中继建立 点对点加密隧道
-
整个网络表现为一个“虚拟局域网”,就像真的插上网线一样
✅ 优势:
-
所有设备可以直接互 ping、传文件、运行游戏、共享服务
-
与操作系统 IP 栈直接整合(可以直接用
ping,ssh,nmap等)
❓ FRP 能实现 Zerotier 那样的效果吗?
❌ 不能直接实现:
-
FRP 没有虚拟网卡,不会给客户端分配 IP
-
客户端间 不能直接互联
-
是一种 服务转发模型,不是 对等组网模型
✅ 可以“模拟”一些功能(但非常有限)
虽然无法实现虚拟网段互联,但你可以用下面方法做近似效果:
🔄 方法:中心转发(HUB 模式)
例如:
客户端A --frpc--> |
| 公网服务器(frps)
客户端B --frpc--> |
-
在 frps 上建立多个端口,A 与 B 都转发各自服务到服务器。
-
客户端 A 要访问 B,可以访问 frps 的
B 的映射端口 -
所有通讯都经过 frps 中转
但这种方式有明显缺点:
| 缺点 | 说明 |
|---|---|
| 无法 P2P | 所有通信都必须走服务器流量,效率低 |
| 无虚拟 IP | 不能直接 ping 或使用局域网发现协议 |
| 多客户端管理麻烦 | 每台客户端都要配置 frpc,并映射端口 |
🧩 总结对比表:
| 特性 | FRP | Zerotier |
|---|---|---|
| 虚拟网卡 | ❌ 无 | ✅ 有 |
| 自动分配虚拟 IP | ❌ 无 | ✅ 有(10.x.x.x/24 默认) |
| 内网穿透 | ✅ 支持 | ✅ 支持 |
| 客户端间直连 | ❌ 需依赖服务端转发 | ✅ 支持点对点连接(支持 NAT 打洞) |
| 使用复杂度 | 较高(需配置每个端口) | 较低(安装即用) |
| VPN/局域网互联效果 | ❌ 无法模拟完整局域网环境 | ✅ 完整仿真局域网 |
✅ 建议
-
如果你想要让不同网络的客户端互相通信、仿真局域网、分配虚拟 IP,Zerotier、Tailscale、Nebula 等工具更适合。
-
如果你的目的是内网服务向公网暴露(如 RDP、Web 访问),FRP 非常适合。
