wireguard 组网问题的咨询--NAT 后的两个节点如何设置才能够打洞成功 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
cruisetian
V2EX    宽带症候群

wireguard 组网问题的咨询--NAT 后的两个节点如何设置才能够打洞成功

  •  
  •   cruisetian 2023-09-13 00:19:40 +08:00 4702 次点击
    这是一个创建于 774 天前的主题,其中的信息可能已经有所发展或是发生改变。

    首先说明当前的配置:

    • 家里没有公网 IP ,因此使用了 1 台国内 VPS 作为 Wireguard 服务器

    • 家里 1 台软路由搭建了 openwrt ( A ) 接入 wireguard 局域网

    • iOS ( B ) 使用也接入 wireguard 局域网

    整体的网络结构和 peer 设置如下

    网络结构图

    目前 A 和 B 可以互相 ping 通,但是看了下 trace 发现是通过 server 做了中转,没有直接打洞成功,想请问各位大佬如何设置才能让 A 和 B 直接打洞成功呢。求大佬们指点迷津!

    25 条回复    2023-09-23 08:53:02 +08:00
    f165af34d4830eeb
        1
    f165af34d4830eeb  
       2023-09-13 00:38:28 +08:00
    如果不是有特别的需求,个人建议换 zerotier/tailscale ( vps 可以改造成自建 controller 辅助打洞/中继),不需要自己操心打洞的事情了。
    superhack
        2
    superhack  
       2023-09-13 00:38:35 +08:00 via Android
    wg set peer xxxxxx endpoint yyyy
    cruisetian
        3
    cruisetian  
    OP
       2023-09-13 00:53:23 +08:00 via iPhone
    @superhack 请问这个命令是在 server 上执行吗
    qsnow6
        4
    qsnow6  
       2023-09-13 00:56:42 +08:00
    建议换 tailscale ,更新配置、打洞、配子网啥的非常方便
    cruisetian
        5
    cruisetian  
    OP
       2023-09-13 01:02:02 +08:00 via iPhone
    @qsnow6 希望可以在手机上同时回家和出国,手机又不允许两个 vpn 同时开,只能用 wireguard 打洞把 wireguard 配到出国软件上了
    qsnow6
        6
    qsnow6  
       2023-09-13 01:08:17 +08:00
    @cruisetian #5 家里开个 socks5 代理,当访问子网 IP 时,通过小火箭设置使用代理连接。
    qsnow6
        7
    qsnow6  
       2023-09-13 01:09:08 +08:00
    这个 socks5 需要暴露在公网,设置好密码。
    thsun
        8
    thsun  
       2023-09-13 02:29:44 +08:00 via iPhone
    没公网不行,走 IPv6 就可以不走中转
    SuzutsukiKaede
        9
    SuzutsukiKaede  
       2023-09-13 02:40:27 +08:00
    你的需求需要用到 Wireguard 的 full mesh 模式,建议使用现成的方案 Tailscale 。
    SuzutsukiKaede
        10
    SuzutsukiKaede  
       2023-09-13 02:45:08 +08:00
    cruisetian
        11
    cruisetian  
    OP
       2023-09-13 08:35:04 +08:00 via iPhone
    @SuzutsukiKaede 好的,我去看下研究下,不行就 tailscale 了
    server
        12
    server  
       2023-09-13 08:38:14 +08:00
    不折腾 tailscale ,记得把 mtu 该下,TS_DEBUG_MTU="1420"
    diskerjtr
        13
    diskerjtr  
       2023-09-13 10:21:11 +08:00
    你 2 边都是 nat 后面,如果 2 边都没有公网 IP ,只能靠中转。
    chancat
        14
    chancat  
       2023-09-14 18:22:34 +08:00 via Android
    推荐 tailscale
    ysc3839
        15
    ysc3839  
       2023-09-14 23:34:46 +08:00 via Android
    WireGuard 不支持打洞,要自动打洞的话可以考虑 ZeroTier 。
    或者如果 A 或 B 其中之一有 fullcone NAT 的话,可以考虑使用 natmap 开端口,另一端连接,不过端口很可能是随机的。
    https://github.com/heiher/natmap
    dangyuluo
        16
    dangyuluo  
       2023-09-15 03:21:17 +08:00
    你要理解 Wireguard 的原理,peer to peer
    gps949
        17
    gps949  
       2023-09-15 12:20:43 +08:00
    @cruisetian #5 你回家出国不就可以既回家又出国了?
    mcsonger
        18
    mcsonger  
       2023-09-15 12:24:57 +08:00
    至少有一台机器是公网
    mantouboji
        19
    mantouboji  
       2023-09-15 22:42:29 +08:00
    纯 IPv4 情况下,你目前的使用方式和现象是正常的。
    如果你有强迫症,那么要打开 IPv6 ,B 那个设备去连 A 的 IPv6 地址。这个地址因为每三天要变一次,可以用 dynv6 的动态域名。这也是我目前用的方式。只不过我是移动的宽带,光猫拨号,你那个 A 我这里是一台 Mikrotik AX2
    lovelylain
        20
    lovelylain  
       2023-09-16 09:05:18 +08:00 via Android
    @cruisetian 目标是手机上打洞配合原生 wireguard 的话难搞,因为 nat 打洞工具要 root 权限。有公网 ip(包括 IPv6)的话可以给家里 ddns ,然后手机上设置 endpoint 为家里域名,对 wg 网段、家里网段、fakeip 网段连家里。没公网 ip 或者手机端只有 v4 访问不了家里的 v6 就很难搞了。
    cnbatch
        21
    cnbatch  
       2023-09-17 03:48:00 +08:00
    最佳方案是使用 IPv6 直连

    如果仍然想用 IPv4 ,有个折衷的办法,套一层 udphop: /t/898299
    虽然这个工具原本的用途是为了避开 QoS ,但其实对于 OP 这种情况也能用首先在服务端打洞(已自带打洞选项),然后客户端连过去,只要隧道内能够一直保持有流量(哪怕 1KB/s 都可以)、两边的网络都不是同时换 IP 的话,那么这条连接就可以一直保持畅通
    sunnysab
        22
    sunnysab  
       2023-09-19 18:53:30 +08:00
    Wireguard 本身为了保证自身的简单性,没有 NAT, 需要自己写代码实现。

    官方例子: https://github.com/WireGuard/wireguard-tools/tree/master/contrib/nat-hole-punching
    :D
    pH
        23
    pH  
       2023-09-22 14:41:49 +08:00
    @qsnow6 S5 主要问题是明文 0-0
    qsnow6
        24
    qsnow6  
       2023-09-22 15:38:32 +08:00
    @pH #23 socks5 over tls
    huaxie1988
        25
    huaxie1988  
       2023-09-23 08:53:02 +08:00 via Android
    ipv6 直连配合 ddns
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2745 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 30ms UTC 12:36 PVG 20:36 LAX 05:36 JFK 08:36
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86