让异地设备像在同一局域网里互联(P2WLAN)
P2WLAN 是用 Rust 写的跨平台虚拟局域网工具,为异地设备分配私有虚拟 IP,走 NAT 穿透与加密中继,覆盖 Windows、macOS、Linux 和 Android。这篇文章按安装、跑通、结果、边界四条讲清楚它怎么用、结果在哪看,以及在哪些网络条件下它仍然得靠中继。
异地组网的老办法是把每项服务单独暴露到公网:NAS 开端口、游戏服配动态域名、开发机做端口映射。服务一多,端口表就散了,安全面也跟着变大。P2WLAN 换了个思路,给参与设备各发一个私有虚拟 IP,应用直接访问这个 IP,服务本身不必对外暴露。
P2WLAN 是用 Rust 写的开源虚拟局域网软件,为异地设备分配私有虚拟 IP,优先直连、失败时回退加密中继,让游戏联机、NAS 访问和远程开发共用一张私网。
它支持 Windows、macOS、Linux 和 Android,提供图形客户端与适合服务器的 CLI。连接路径优先走局域网、IPv6 或 IPv4 UDP 打洞;直连建立后,业务流量不消耗中继带宽。直连暂时不可用会自动回退到端到端加密的 Relay,网络条件改善后继续尝试恢复直连,应用侧沿用的虚拟 IP 不变。

「房间」是它组织连接的单位。一个 Minecraft 服务器、一次朋友联机、一组 NAS 维护设备各占一个房间,成员、在线状态、虚拟 IP、当前连接路径和延迟都集中在客户端里,不必把所有设备混在同一个列表。当前版本为 v0.1.170,仓库采用 MIT 许可证,主要语言是 Rust(62.8%),其余为 Dart 13.2%、Python 8.9%、Go 7.1% 等。GitHub 上 2095 Star、88 Fork、5 Watcher,开放 Issue 13 个。仓库地址:https://github.com/yhan-sun/p2wlan
装它需要什么
- 一个 Control 地址。由管理员提供,或者按仓库里的
docs/guides/self-hosting.md自行部署 Control 与 Relay。 - 桌面与移动客户端。从 GitHub Releases 下载 Windows、macOS、Linux、Android 安装包。
- OpenWrt 路由器。v0.1.170 起提供原生客户端包,OpenWrt 24.10 用 IPK,25.12 用 APK;ARM64 覆盖 generic、Cortex-A53、A72、A76。安装器自动选择固件版本和包架构,校验固定 tag 的发行清单 SHA-256 后安装,并使用固件软件源中匹配内核的
kmod-tun。 - 服务端部署。提供 Linux amd64/arm64 安装包及 checksum,包内
BUILD-METADATA.txt与SHA256SUMS绑定版本、源码和文件摘要。 - 应用侧的放行条件。目标服务需要监听可访问的地址,并允许对应的防火墙流量。
跑起来
- 从 Releases 下载对应平台的客户端并安装。
- 打开客户端,填入管理员提供的 Control 地址,或自建服务的地址。
- 登录并连接个人网络或房间。
- 把要互联的设备加进同一房间,应用程序连对端的虚拟 IP 与服务端口。
输出是什么
连上之后,客户端首页显示网络状态与在线设备,设备列表给出节点、速率和在线状态,互联页管理多个房间并显示连接延迟。房间详情里能直接看到成员的虚拟 IP、当前连接路径和端到端延迟。判断这次是否跑通,看设备是否出现在列表里并带上虚拟 IP,以及路径栏显示 Direct 还是 Relay。
遇到问题可以用客户端内置的诊断定位。自托管场景下,Control 和 Relay 跑在你部署的服务器上;Release 说明里写明,发布安装包不会自动部署现有服务器,需要自行更新。
先说它做不到什么
P2WLAN 建的是三层 TUN 网络,不提供以太网二层广播桥接。依赖广播发现的旧游戏、需要二层网络语义的场景,不在它的支持范围内。安装 P2WLAN 也不会自动把所在家庭或办公网络里的其他设备接进虚拟网络,参与设备都得装客户端,应用要用虚拟 IP 访问,不能直接沿用原来的局域网地址。
直连不是保证。双端高熵随机映射叠加严格过滤时,它会优先保障 Relay 通信,等到出现新的直连证据再尝试恢复。走 Relay 时,延迟和吞吐受中继位置、线路与带宽影响。
真实用户反馈里有几条值得先看。一条待解决的 Issue 是安装后在管理员权限下卡在「无法确认 elevated daemon 的进程身份,已停止启动」,目前仍未定位。另一条关于 NAT topology 偶发 barrier timeout 的根因排查也还在开放状态。Windows 上曾有 p2wlan-desktop.exe 触发 BEX64 崩溃的报告,已在后续提交中修复并关闭。另有用户询问是否会支持 OpenWrt,从 v0.1.170 的发布内容看,原生客户端包已经提供。
最后是使用边界。P2WLAN 适合连接自有设备或已获授权的目标;把别人的设备未经许可拉进房间、接入他人网络,可能触及法律与平台规则。自建 Control 与 Relay 时,服务器、带宽和域名费用由部署者承担。
焚评:这个项目的量化评分
本项目的选题来自 焚.com(一个按公开公式给 GitHub 项目打分的站)。焚评当前总分 9.3 分(满分 10)。下表是各维度的得分:
| 评分维度 | 得分 |
|---|---|
| 热度动量(权重 25%) | 10.0 / 10 |
| 开发活跃(权重 25%) | 7.5 / 10 |
| 社区响应(权重 15%) | 9.8 / 10 |
| 文档质量(权重 15%) | 10.0 / 10 |
| 发布节奏(权重 10%) | 10.0 / 10 |
| 风险控制(权重 10%) | 10.0 / 10 |
评分口径、权重与计算方式见焚.com 的评分方法页;数据随 GitHub 指标刷新,具体数值以焚.com 当前页面为准。本文正文为诀.com 独立撰写,评分数据由焚.com 授权引用。
内容核验说明
把异地组网怎么用、什么时候用不了放在一起讲:房间怎么组织设备、直连与中继如何回退、从哪儿看 Direct 还是 Relay,都能照着操作。也划出三层 TUN 不支持二层广播、参与设备都要装客户端这两条边界,比只讲打洞成功的介绍诚实。适合要连自有 NAS、游戏服或开发机又不愿逐个暴露端口的人。
文中 Star、Fork、License、语言占比、Issue 数、版本号等来自原作者公开披露与 GitHub 仓库页面,诀.com 未独立验证;安装与连接流程未做实测,直连成功率与中继延迟随网络环境、部署方式变化,不保证复现。焚评 9.3 分由焚.com 按公开公式计算,数值随 GitHub 指标刷新。用户反馈摘要
根据仓库 Issue 来看,安装后在管理员权限下卡在「无法确认 elevated daemon 的进程身份」,状态为待解决,原因仍未定位;NAT topology 偶发 barrier timeout 的根因排查同样待解决;直连优先与双对称 NAT 的 PR 仍是草稿、未合并,其 16 条工作流中有 4 条失败。Windows 上 p2wlan-desktop.exe 的 BEX64 崩溃已修复关闭,OpenWrt 支持随 v0.1.170 提供。其余多条为提交者自己的验收与发布流程记录,不是外部用户反馈。
基于该仓库公开 Issue 整理,只反映提交者报告的现象与诉求,不代表诀.com 立场,也不代表问题已被确认。项目来源与说明
开源项目:yhan-sun(yhan-sun)
本文由诀.com 编辑基于该项目的公开信息独立撰写,属原创解读,不是对项目文档的翻译或转载;文中提到的功能与参数以官方仓库为准,代码与文档版权归原作者所有。
查看项目仓库