打开网易新闻 查看精彩图片

很多开发者都有过类似经历:下班回家想连公司那台跑着测试环境的电脑,或者人在外面想从家里 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 专题研究系列文章。