FRP 的原理和工作过程及其与P2P组网模型的不同

FRP(Fast Reverse Proxy)并不能直接实现像 Zerotier 那样的虚拟局域网(即自动分配虚拟 IP 给客户端),它的原理与 Zerotier 是完全不同的。下面详细对比并解释它们的工作原理和是否能实现类似的效果。


🧠 一、FRP 的原理和工作过程

📌 工作模式:端口映射 + 反向代理

✅ 原理流程:

  1. 服务器(frps)监听一个公网端口(如 7000)。

  2. 客户端(frpc)主动连接服务器并注册希望转发的服务(比如本地 22/3389/80 端口)。

  3. 当有人访问服务器的某个端口(如 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/局域网互联效果 ❌ 无法模拟完整局域网环境 ✅ 完整仿真局域网

✅ 建议

  • 如果你想要让不同网络的客户端互相通信、仿真局域网、分配虚拟 IPZerotier、Tailscale、Nebula 等工具更适合。

  • 如果你的目的是内网服务向公网暴露(如 RDP、Web 访问)FRP 非常适合。


 

© 版权声明
THE END
喜欢就支持一下吧
点赞12 分享