不想买中转服务器,我研究了下纯 P2P 内网穿透

家里宽带没有公网 IP,想从外边连回 NAS 或旁路由上的服务,通常得做两件事:要么给运营商打电话要公网 IP,要么租一台带公网 IP 的服务器做中转。前者看运气,后者每个月都要续费。我之前一直用第二种方案,虽然稳定,但一年下来也是笔小钱。

最近翻到 OpenP2P,思路不太一样:它不要你自备服务器,而是把参与者的设备连成一张 P2P 共享网络,互相借带宽做中转。听起来像内网穿透版的 PT 站——你愿意分享带宽,就能使用别人的带宽。MIT 协议,Go 写的,GitHub 上 2000 多星,最新版本 v3.25.11 是五月份发布的。

OpenP2P 官网首页

我花了一个晚上把它跑了一遍。流程其实很短:在 console.openp2p.cn 注册账号,下载客户端,两端都装上,然后在 Web 控制台里创建一个 Port Forward(它叫 P2PApp),把远程服务的端口映射到本地监听端口。比如把家里 Windows 的 3389 映射到本地 127.0.0.1:23389,然后直接 MSTSC 连过去就行。

OpenP2P 架构示意图

打洞能力是它最大的亮点。它同时支持 UDP 和 TCP 打洞,也支持 UPNP 和 IPv6,按官方说法能覆盖 NAT1 到 NAT4。我的环境是双 WAN 出口加旁路由,本来担心多层 NAT 会搞砸,但试下来两台设备在同运营商环境下能直接 P2P,延迟和本地网络差不多。如果 P2P 打不通,才会走公共共享节点中继。

安全方面它做了两层:TLS 1.3 通道加密,再加一层 AES 内容加密。共享节点只能转发密文,按官方解释中继节点拿不到明文。共享授权用的是 TOTP 一次性密码,不是长期放行。这些设计让我比用陌生第三方中继舒服一些。

但有两个地方让我停了一下。

第一个是公平共享机制。默认每个节点会贡献 10 Mbps 带宽给公共网络,只有你先分享了,才能使用别人的节点。如果你不想共享,就得按文档自己部署私有服务器,那其实又回到了需要一台服务器的模式。所以严格来说它不是”完全不要服务器”,而是”把服务器成本摊到所有参与者身上”。

第二个是 Windows 客户端体验。下载下来的 exe 没有代码签名,Windows Defender 会弹警告,需要手动放行。安装成系统服务倒是简单,双击运行会自己提示。Linux 和 macOS 也有对应二进制,但文档对命令行参数讲得比较简略,我基本上是对着 USAGE.md 和示例配置试出来的。

P2PApp 详情页

资源占用确实低。客户端本体 10 MB 左右,CPU 占用几乎可以忽略,扔到旁路由或 NAS 上长期跑没问题。它支持的架构很杂,从 x86、ARM 到 MIPS 都有,甚至还有个 Android 版,能让手机当移动网关用。

我的结论是:如果你家里有稳定的上行带宽,又愿意让设备参与共享,OpenP2P 是个省掉中转服务器的好方法,尤其适合远程桌面、SSH、NAS 大文件这类流量。但如果你只想白嫖,或者对”我的设备给别人转发数据”这件事有顾虑,那还是老老实实走传统方案更踏实。

我目前把它当作备用通道放着,主力方案没动。毕竟网络这种基础设施,稳定比省钱优先级更高。

发表评论