V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
LxnChan
V2EX  ›  宽带症候群

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

  •  
  •   LxnChan · 2022-02-15 18:59:40 +08:00 · 8094 次点击
    这是一个创建于 1018 天前的主题,其中的信息可能已经有所发展或是发生改变。

    我的设想是这样的:

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

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

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

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

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

    30 条回复    2023-03-31 12:55:01 +08:00
    Clarke
        1
    Clarke  
       2022-02-15 19:34:15 +08:00
    Zerotier ,服务器做 moon 行吗?
    vonsy
        2
    vonsy  
       2022-02-15 20:07:42 +08:00   ❤️ 1
    zagfai
        3
    zagfai  
       2022-02-15 20:32:25 +08:00
    Tailscale 我还真没试过不可用。。。
    chenall
        4
    chenall  
       2022-02-15 20:38:11 +08:00 via Android
    zerotier +1
    wtks1
        5
    wtks1  
       2022-02-15 20:39:27 +08:00 via Android
    n2n ?
    jiangyang123
        6
    jiangyang123  
       2022-02-15 20:39:28 +08:00   ❤️ 1
    n2n ?
    LxnChan
        7
    LxnChan  
    OP
       2022-02-15 20:39:29 +08:00
    @zagfai 我也暂时还没遇到不可用的情况
    LxnChan
        8
    LxnChan  
    OP
       2022-02-15 20:39:46 +08:00
    @wtks1 @jiangyang123 n2n 是啥啊
    lithiumii
        9
    lithiumii  
       2022-02-15 20:40:54 +08:00 via Android
    自部署 Zerotier 的根
    其次是自部署 Zerotier 的 Moon
    LxnChan
        10
    LxnChan  
    OP
       2022-02-15 20:43:02 +08:00
    @vonsy 谢谢,netmaker 挺符合我的需求的。
    happyn
        11
    happyn  
       2022-02-15 22:11:12 +08:00
    推荐自家服务,就是专门解决这个事情的,虽然目前比较简陋,但是运营稳定;
    楼主可以试试:

    官网:
    www.happyn.cn


    发布介绍:

    https://v2ex.com/t/796362
    terrancesiu
        12
    terrancesiu  
       2022-02-15 22:12:06 +08:00 via iPhone
    动手就 wg,ipip 隧道,gre ,然后静态路由。
    Kiriya
        13
    Kiriya  
       2022-02-15 22:48:35 +08:00
    蒲公英貌似能达到要求
    LxnChan
        14
    LxnChan  
    OP
       2022-02-15 23:30:52 +08:00 via Android
    @happyn 我大概看了一下,比较感兴趣,但是贵站提供的服务可以在两侧均为 NAT 的情况下 P2P 传输数据吗(不在同一局域网),感觉像是如果不在同一 NAT 下需要通过服务器中转。
    LxnChan
        15
    LxnChan  
    OP
       2022-02-15 23:31:05 +08:00 via Android
    @terrancesiu 已经在尝试了
    wtks1
        16
    wtks1  
       2022-02-16 00:17:51 +08:00 via Android
    @LxnChan 一个自建服务端的内网穿透项目
    thisismr2
        17
    thisismr2  
       2022-02-16 01:39:32 +08:00 via iPhone
    and 我们的 https://zonenet.io
    yaoyao1128
        18
    yaoyao1128  
       2022-02-16 09:31:47 +08:00 via iPhone
    n2n 以及 zerotier 还有 tinc 你可以尝试一下是否可以 不过你需要看打洞之类的是否成功
    tailscale 本质就是 WireGuard 所以 wireguard 也可以尝试

    以及 无人值守我建议用花生壳之类的弄出一个至少自己搭建的崩溃了依然可以连接的穿透 比如 ilo ipmi 之类的 或者 rdp 或者 ssh 之后再考虑无人值守
    GavinHua
        19
    GavinHua  
       2022-02-16 09:41:48 +08:00
    我的经验哈,
    netmaker 在移动 4G 网络下打洞失败,又没有 TCP 中转。
    Zerotier 自建的网络控制器,moon ,能看到之前不通的场景下走 TCP 中转,可以使用了。但是中转速度比较慢,不知道是走的官方的服务器中转的还是走的我自建的中转的。
    n2n 貌似没有太好的 GUI ?对非技术人员不友好,不好推广。
    missdeer
        20
    missdeer  
       2022-02-16 13:40:21 +08:00
    看你两端 NAT 是什么类型的
    像我家里是端口限制锥型,公司是对称型的,就打不通,只能中转
    happyn
        21
    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
        22
    xuanzc880  
       2022-02-16 16:02:14 +08:00
    我用的是 N2N,最新的 3.0 版本的 N2N 挺好用的.
    guanzhangzhang
        23
    guanzhangzhang  
       2022-02-17 09:51:50 +08:00
    如果两个都有 openwrt ,推荐 wireguard+udp2raw
    joesonw
        24
    joesonw  
       2022-02-17 11:45:06 +08:00
    wireguard 啊, 就是用来做 mesh vpn 的. 任意一个节点是公网就可以.
    zyq2280539
        25
    zyq2280539  
       2022-02-17 13:06:24 +08:00
    zerotier +1 + 公网 ip 自建 moon
    zzc1368129224
        26
    zzc1368129224  
       2022-02-18 15:23:20 +08:00
    N2N 好用,但是对 NAT 类型有要求
    如果满足要求,打洞成功后是直连。
    如果不满足要求,需要中转流量(速度受中转节点的带宽限制)。
    qzydustin
        27
    qzydustin  
       2023-03-25 08:59:56 +08:00 via iPhone
    @happyn happyn 相比 n2n 有个缺陷,不支持 n2n-routing 功能,无法通过一个设备转发局域网所有流量。
    happyn
        28
    happyn  
       2023-03-25 09:28:58 +08:00
    @qzydustin 是的;还没来得及集成;正在做;
    happyn
        29
    happyn  
       2023-03-25 09:29:43 +08:00
    @qzydustin 不过目前有个曲线方案,可以通过系统自带的路由转发来做:

    https://happyncn.feishu.cn/wiki/wikcnOY5NpEecZTag1etALV48Id
    qzydustin
        30
    qzydustin  
       2023-03-31 12:55:01 +08:00   ❤️ 1
    @happyn 挺好的,还有一个小建议,图形界面有点简陋
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2824 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 32ms · UTC 03:52 · PVG 11:52 · LAX 19:52 · JFK 22:52
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.