JeecgBoot AI专题研究 | 开源虚拟局域网工具 P2WLAN 实测:P2P 打洞、自动中继、房间隔离与端到端加密

一个老问题:家里和公司之间,为什么总是隔着一堵墙
很多开发者都有过类似经历:下班回家想连公司那台跑着测试环境的电脑,或者人在外面想从家里 NAS 拷一个大文件,结果发现两边都在运营商的 NAT 后面,谁也看不见谁。
常见的解法无非三种:
- 买一台有公网 IP 的云服务器做内网穿透------要花钱,还要自己配 frp、维护端口映射;
- 用商业远程控制软件------开箱即用,但免费版画质压缩、限速明显,传大文件基本靠等;
- 上企业级 SD-WAN 或专线------效果好,但对个人和小团队来说成本完全不对等。
最近在 GitHub 上看到一个叫 P2WLAN 的开源项目,思路很直接:在每台设备上装一个客户端,让它们自动组成一张虚拟局域网,彼此拿到一个内网 IP,之后远程桌面、共享文件夹、SSH、联机游戏都按"同一个局域网"的方式来用。实际装在两台异地电脑上试了一下,几秒钟就分配好了地址,传文件的体验和在办公室里插同一台交换机相差不大。

P2WLAN 到底是什么
先把基本信息捋清楚:
| 项目 | 说明 |
|---|---|
| 开源协议 | MIT,全部功能免费、无广告 |
| 技术栈 | 核心网络层用 Rust 编写,客户端界面基于 Flutter |
| 支持平台 | Windows、macOS、Linux、Android 均有独立客户端 |
| 虚拟网段 | 连接后分配 10.20.0.X 形式的私有 IP |
| 连接策略 | 优先本地 LAN Direct → 公网 UDP P2P 打洞 → 打不通时回退加密 Relay 中继 |
| 当前阶段 | Preview 测试版,GitHub 约 1.2k Star,仍在活跃开发 |
一句话概括:它想做的是一个"免配置版"的个人异地组网工具,不需要你自己准备公网 IP,也不需要懂路由表。
打开客户端首页,网络状态、虚拟 IP、NAT 类型、直连与中继的设备数量一目了然:

核心能力拆解
1. 能直连就直连:自动探测 + UDP 打洞
做组网工具,用户最在意的永远是两件事:连不连得上 、延迟高不高。
P2WLAN 启动后会先探测本机所处的网络环境(NAT 类型),然后按优先级尝试建立通道:如果两台设备恰好在同一个物理局域网,直接走 LAN Direct;不在同一网络,就尝试 UDP 打洞建立 P2P 通道。实测家里移动宽带与公司电信宽带之间,几秒钟就打通了直连。
在设备列表里可以看到每台设备当前走的是"直连"还是"中继",以及实时速率:

小知识:为什么有时打不通? NAT 大致分为全锥型、受限锥型、端口受限锥型和对称型。前三种通过 UDP 打洞成功率较高;如果两端都是对称型 NAT(常见于企业大内网、部分运营商 CGNAT),端口映射每次都会变化,P2P 直连就很难建立。这也是所有 P2P 组网工具(包括 ZeroTier、Tailscale 等)都需要中继兜底的原因。
2. 打不通也不断线:自动回退加密中继
遇到上面说的对称型 NAT,P2WLAN 不会让你去改端口、开 UPnP,而是无缝回退到 Relay 中继传输。中继的带宽和延迟自然不如直连,但至少保证网络可用,用户无需感知切换过程。
3. 像开游戏房间一样管理网络
P2WLAN 引入了类似联机游戏的"房间"概念。你可以按用途创建多个房间,比如:
- 「家庭互联」:家里电脑和 NAS;
- 「NAS 管理」:专门用于远程维护存储;
- 「MC 生存服」「泰拉瑞亚联机」:和朋友联机玩游戏。

同一房间内的设备互通,不同房间之间逻辑隔离。这一点在实际使用中很重要------你肯定不希望联机游戏的朋友能扫到你家 NAS 的管理端口。
进入某个房间后,可以看到该房间的网段、每台设备的虚拟 IP、连接方式(本机 / 直连 / 中继)和端到端延迟,还能一键复制房间号或生成邀请链接:

4. 全业务透传 + 端到端加密
既然是三层的虚拟网络,只要是基于 IP 通信的软件都能直接跑:
- 远程桌面(RDP / VNC);
- 访问家庭 NAS 的 Web 管理页;
- 数据库客户端直连(MySQL、PostgreSQL 等);
- SSH 远程运维;
- 局域网联机游戏。
安全方面,数据在离开本机之前就完成了端到端加密。即使流量走中继节点,中继也只能看到密文,无法解析传输内容。
上手只要四步
第一步:下载安装包。 到 Releases 页面下载对应平台的安装包,Windows 选择带 Setup 的安装文件,按向导安装即可:
https://github.com/yhan-sun/p2wlan/releases
第二步:登录账号。 可以在客户端界面里注册 / 登录;如果是没有桌面环境的服务器,也可以直接用命令行查看账号:
p2wlan account show
第三步:启动网络。 在界面中点击启动,或者执行下面的命令,客户端会在后台自动创建虚拟网卡:
p2wlan up
第四步:用虚拟 IP 访问。 连接建立后,像在局域网里一样直接访问对方的虚拟 IP:
ping 10.20.0.5
实践建议:第一次组网时,建议先在两台设备上互 ping,确认在设备列表里显示为"直连"后再跑大文件传输或远程桌面;如果显示为"中继",可以尝试让其中一端换到家用宽带或手机热点,往往能改善 NAT 类型。
和同类方案怎么选
| 方案 | 优点 | 不足 | 适合 |
|---|---|---|---|
| P2WLAN | 开源免费、免配置、房间隔离、界面友好 | 仍是 Preview 版,个人维护 | 个人远程办公、NAS、联机游戏 |
| frp 等自建穿透 | 完全可控 | 需要公网服务器,配置与维护成本高 | 有运维能力、需固定暴露服务 |
| 商业远控软件 | 开箱即用 | 免费版限速、画质压缩,只能远控不能组网 | 偶尔远程协助 |
| 企业专线 / SD-WAN | 稳定、有 SLA | 成本高 | 企业核心生产业务 |
谁适合用,谁要谨慎
适合的人群:
- 远程办公的开发者:在家连公司电脑,P2P 直连能把两端宽带跑满,没有商业远控那种掉帧和压缩;
- NAS / 软路由 / 家庭服务器玩家:不用申请公网 IP、不用折腾端口映射,在外面直接用虚拟 IP 访问内网设备;
- 异地联机的游戏玩家:拉进同一个房间,就相当于大家坐在一个屋里插同一台交换机。
需要谨慎的场景:
- 项目还处于 Preview 阶段,在部分双层大内网环境下直连成功率会有波动;
- 它是个人维护的开源项目,没有商业 SLA。公司核心生产服务、对稳定性要求极高的场景,不建议直接替换原有专线或成熟组网方案;
- 组网相当于把设备暴露在同一张网里,房间邀请链接不要随意外传,NAS、数据库等服务仍然要保留自身的账号密码与访问控制。
写在最后
P2WLAN 的价值不在于发明了什么新技术------P2P 打洞、中继回退、虚拟网卡都是成熟方案------而在于把这些能力打包成了一个普通用户点几下就能用的工具,并且完全开源免费。对于日常远程连电脑、从家里 NAS 拷文件、和朋友异地联机这类需求,它已经足够好用;对于想研究 Rust 网络编程或 NAT 穿透原理的开发者,它也是一份不错的学习素材。
项目地址:https://github.com/yhan-sun/p2wlan (MIT 协议,使用时请遵守开源规范)
总结
- P2WLAN 是一款基于 Rust + Flutter 的开源虚拟局域网工具,让异地设备获得同一网段的虚拟 IP;
- 连接策略为 LAN Direct → UDP P2P 打洞 → 加密中继回退,兼顾速度与可用性;
- 房间机制实现了不同用途网络的逻辑隔离,数据全程端到端加密;
- 适合个人远程办公、NAS 访问和联机游戏,但仍处于 Preview 阶段,不建议直接用于企业核心生产环境。
本文为 JeecgBoot AI 专题研究系列文章。