有无成熟的自建 NAT 穿透 P2P VPN 方案?

2022-02-15 18:59:40 +08:00
 LxnChan

我的设想是这样的:

假设两个 Peer 都在 NAT 下,现有一个用于认证的服务器,拥有公网 IP ,此时是否能让这两个 Peer 和公网服务器构成一个局域网( VPN ),并且让该服务器内任意 Peer 之间通信都采用 P2P 方式交换数据(数据不经过认证服务器)?

类似的实现有 Tailscale 等,但由于 Tailscale 认证服务器在国外,所以国内访问稳定性存在一定的不可用的情况。

自建的方案有 nps ,但很不幸我这里测试 nps 存在很多 bug ,不具备无人值守的基本要求。

于是是否存在类似成熟的方案,要求自建认证中转服务器,且满足上述设想?

在 Google 上找了一圈没有找到可用的解决方案,这里指的成熟方案指有大概的搭建方法(文档)而并非仅停留在理论阶段。

8197 次点击
所在节点    宽带症候群
30 条回复
happyn
2022-02-16 14:12:00 +08:00
@LxnChan 如楼上所说,这个要看两端 NAT 的类型;

NAT 根据 ip 以及端口的映射策略不同,可以分为

1.Full Cone NAT - 完全锥形 NAT
2.Restricted Cone NAT - 限制锥形 NAT
3.Port Restricted Cone NAT - 端口限制锥形 NAT
4.Symmetric NAT - 对称 NAT

两端会有多种组合;有的家用宽带网络本身就是运营商有一层 NAT ,然后家用路由器又一层,情况就更复杂了;

我只能说做的好的 UDP 穿透软件一般会尝试尽可能多的打洞策略;就我的经验来看,一般家用宽带大多是 Cone NAT ,两端都是家用宽带的情况下打洞成功率比较高; 4G 网络一般是对称型 NAT ,不能打洞;一端家用宽带,一端 4G ,打洞成功率也很低;


不能打洞走 P2P 的时候数据会走服务器中转,happyn.cn 提供了中转服务器,速度还可以;

happyn.cn 同一用户所有接入网络的各个节点间通信前会约定一个密钥,先在本地加密再传输,杜绝了被抓包泄露数据的可能性,安全是不用担心的;
xuanzc880
2022-02-16 16:02:14 +08:00
我用的是 N2N,最新的 3.0 版本的 N2N 挺好用的.
guanzhangzhang
2022-02-17 09:51:50 +08:00
如果两个都有 openwrt ,推荐 wireguard+udp2raw
joesonw
2022-02-17 11:45:06 +08:00
wireguard 啊, 就是用来做 mesh vpn 的. 任意一个节点是公网就可以.
zyq2280539
2022-02-17 13:06:24 +08:00
zerotier +1 + 公网 ip 自建 moon
zzc1368129224
2022-02-18 15:23:20 +08:00
N2N 好用,但是对 NAT 类型有要求
如果满足要求,打洞成功后是直连。
如果不满足要求,需要中转流量(速度受中转节点的带宽限制)。
qzydustin
2023-03-25 08:59:56 +08:00
@happyn happyn 相比 n2n 有个缺陷,不支持 n2n-routing 功能,无法通过一个设备转发局域网所有流量。
happyn
2023-03-25 09:28:58 +08:00
@qzydustin 是的;还没来得及集成;正在做;
happyn
2023-03-25 09:29:43 +08:00
@qzydustin 不过目前有个曲线方案,可以通过系统自带的路由转发来做:

https://happyncn.feishu.cn/wiki/wikcnOY5NpEecZTag1etALV48Id
qzydustin
2023-03-31 12:55:01 +08:00
@happyn 挺好的,还有一个小建议,图形界面有点简陋

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/834065

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX