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

关于 WireGuard 异地组网的问题

  •  
  •   TashinV · 28 天前 · 1738 次点击
    确认了网络设备之后开始研究异地组网的问题。
    目前情况是:
    有 3 处地方需要组网,暂且用 A 、B 、C 3 个字母替代吧。
    A 地是家里,电信 1000MB 宽带,有 ipv4 公网,路由器支持 WireGuard ;
    B 地是家里,电信 300MB 宽带,暂时没有公网,路由器支持 WireGuard ;
    C 地是办公室,电信宽带,带宽不明,确认无公网,计划用一台 NUC 装 WireGuard 。

    目前是想把 A 、B 、C 3 地组成局域网,当人在外地出差的时候可以方便连回任意一个地点。除此之外,希望 3 地能够实现互通:
    1. 移动设备与 2 个家庭局域网互联
    2. 移动设备与公司局域网互联
    3. 2 个家庭局域网都与公司局域网互联
    4. 公司局域网与 2 个家庭局域网互联
    5. 2 个家庭之间能够局域网互联

    想请问大佬们:
    1. 这个需求 WireGuard 可以做到吗?
    2. 如果 WireGuard 可以做到的话,是否可以不需要外界的有公网的主机?因为我看很多教程都是通过阿里等提供公网的主机来中继的,这样速度会有瓶颈,所以不想要这种方式。


    感谢各位指点迷津的大佬!
    第 1 条附言  ·  28 天前
    忘记说了,使用情况也就是同步和获取一些文档,偶尔出差时可能会有观看流媒体需求。
    此外,A 家庭可以使用域名+DDNS 的。这样的话,用 A 做中继,监控 wg 链接(或者说公网 IP 变化)这个该怎么操作?我看好像有办法可以推送到微信,但是问题是公网 IP 变化之后,我 3 个地方的 wg 链接和配置是不是需要重新设置?
    第 2 条附言  ·  28 天前
    公网 IP 变化之后,我移动设备上的链接和配置是不是也需要重新设置?
    28 条回复    2024-10-17 20:12:48 +08:00
    Drool
        1
    Drool  
       28 天前   ❤️ 1
    我是直接用 zeroTier 打通成都家里和江苏家里,成都联通有公网,江苏电信 NAT1 ,打洞能成功的话应该不需要中转了
    IvanLi127
        2
    IvanLi127  
       28 天前   ❤️ 1
    没固定公网 ip 的话,想做到比较麻烦。正常来说通过 A 的公网 ip 做中继就能实现,就是变化时比较麻烦。

    不想加公网服务器还是 zerotier 或者 tailscale 吧,至少方便点
    linzyjx
        3
    linzyjx  
       28 天前   ❤️ 1
    看看 BC 之间能不能打洞吧。不行可能要用 A 当中转
    linzyjx
        4
    linzyjx  
       28 天前   ❤️ 1
    @IvanLi127 动态 IP 倒是可以用域名+DDNS ,不过可能要弄个监控重启的机制啥的
    bobryjosin
        5
    bobryjosin  
       28 天前   ❤️ 1
    A 作为中心节点就行了,BC 全部连到 A ,三台设备起 ospf 三层就通,移动设备连到 A 就行了,缺点就是带宽受制于 A 。
    aichunya
        6
    aichunya  
       28 天前   ❤️ 1
    没有问题,我现在就是你这种网络环境,你把有公网的那个当做中继就行了
    zbinlin
        7
    zbinlin  
       28 天前   ❤️ 1
    既然 A 有 1000M ,可以拿 A 作为 Server 节点,其他地直接连 A
    bjfane
        8
    bjfane  
       28 天前   ❤️ 1
    楼上说的都没问题,但是都是大佬说的,太简要了,
    实施步骤 1 、移动流量(不在 abc 局域网),能访问 A 以及 A 背后的所有设备,目的看看怎么配置才能访问 A 的局域网的其他设备。
    步骤 2 、检测 B C 能不能直接通,这个对体验非常重要,就是有没有 A 中转,
    步骤 3 、A 和 B 双边设备都能访问对面局域网设备,且移动流量能访问 A 和 B 任意设备

    有了以上 wg 的配置基础,C 怎么加入就好办了。

    核心就是 allowips 怎么填、peer 地址是什么,和 wg 上的一层 NAT
    bjfane
        9
    bjfane  
       28 天前   ❤️ 1
    另外你的 A 的机器至少完全可以当云厂商的功能,肯定不需要公网云, 轻度同步从 A 过一下 也不是不行,现在一般都是 30 ~ 50M 的上行了,完全没问题。
    Int100
        10
    Int100  
       28 天前 via iPhone   ❤️ 1
    可以做到,wireguard 单纯起 p2p 隧道,allowip 全部放行,路由交给动态路由协议来生成,rip ospf 这些,三层组网。
    orionl
        11
    orionl  
       28 天前   ❤️ 1
    A 用 WireGuard 做 server ,配置成站点到站点。其他的做 client ,导出 A 的客户端配置上传即可。
    Ipsum
        12
    Ipsum  
       28 天前   ❤️ 1
    组成网状结构,A 当中心节点。
    git00ll
        13
    git00ll  
       28 天前   ❤️ 1
    用 zeroTier 打洞试试,A 有公网无论用啥工具组网肯定没问题,试试说不定 BC 能直接打洞这样就不用麻烦 A 做中转了
    SenLief
        14
    SenLief  
       28 天前   ❤️ 1
    楼上有说用 zerotier 或者 tailscale 打洞,这两种打洞方式都是需要 NAT1 的,要不然一样需要走中继,最容易的还是 ipv6 ,wg 也用 ipv6
    dalaoshu25
        15
    dalaoshu25  
       28 天前   ❤️ 1
    超简单。

    A 就做中心节点,配置好 DDNS 即可。
    B 和 C 都是 peer ,连接到 A 。当然这样做 BC 之间访问要经过 A ,无所谓了。

    需要确认的是,B 的路由器是什么,有没有运行脚本检测 wg 链接是否接通的能力,否则 A 一旦断线换新 IP 后 B 和 C 都会断线,需要重新建立 wg 链接。
    IvanLi127
        16
    IvanLi127  
       28 天前   ❤️ 1
    回附言,即使是用 DDNS ,变化后至少得主动断开重连。B 和 C 得自动话处理这个事,不然变了你就失去从 A 连 BC 的机会了。
    dalaoshu25
        17
    dalaoshu25  
       27 天前   ❤️ 1
    A 设置好 DDNS ,具体怎样看你的路由器是什么了,把自己的公网 IPv4 和 v6 都设给 ddns 的动态域名,比如我用 dynv6

    B 和 C 的设置文件里,A 的 Endpoint 写动态域名和端口。

    B 和 C 如果是个服务器,可以写脚本定时去 ping 节点 A 的 wg 地址,如果 Ping 不通就重新建立 wg 连接。因为 wg 仅仅在建立连接的时候查询域名,之后在内核里就只有 IP 地址了。

    有现成的例子可供参考 /usr/share/doc/wireguard-tools/examples/reresolve-dns
    TashinV
        18
    TashinV  
    OP
       27 天前 via iPhone
    @linzyjx
    请问下这个监控重启机制该怎么弄呢?有没有教程?

    @aichunya
    请问下您在公网 IP 变化的问题是怎么解决的呢?

    @bjfane
    请问下在公网 IP 变化的问题是怎么解决的呢?
    TashinV
        19
    TashinV  
    OP
       27 天前 via iPhone
    @IvanLi127
    #16 A 路由准备用 UDM SE ,B 路由目前是 AC68U ,必要的话 B 路由可以更换。
    目前这个情况 B 、C 需要能自动检测并重启连接,请问这个该怎么做到呢?

    @dalaoshu25
    #29 B 是路由,AC68U ,必要的话可以更换。C 地就是一台连接公司网络的 Windows 电脑。这样的情况该怎么解决公网 IP 变化的问题呢?
    bjfane
        20
    bjfane  
       27 天前
    DDNS 啊, 我看你的方案里不是有 《域名+DDNS 》这个么,你先找个域名和 ddns 装起来,配置好,然后重启 A 的拨号节点等更新,感受一下就知道了 :),这块是非常简单的, 比如 ddns-go ,搜这个项目
    dalaoshu25
        21
    dalaoshu25  
       27 天前
    俺们乡下人只会折腾 RouterOS 和 Linux ,你说的这两个路由器和你用的 Windows 俺都不知道是什么东西,只能帮你到这里了。
    aichunya
        22
    aichunya  
       27 天前
    @TashinV #18 DDNS,加我做的笔记
    liuxyon
        23
    liuxyon  
       27 天前
    我也许可以提供技术帮助.
    que01
        24
    que01  
       27 天前
    不管你们多会玩 我用 zeroTier 。。。就这个省事不要钱。。。
    sxml2015
        26
    sxml2015  
       24 天前 via Android
    */10 * * * * /usr/bin/wireguard_watchdog
    openwrt 有自带这个 wireguard_watchdog 我用 GPT 修改监控指定公匙 断了就重启 WG 接口

    A 主路由 做服务器 有公网+DDNS
    B 旁路由 对端
    C 手机 对端 可以访问 A B
    A B 可以互访 以及访问 NAS

    搞了几天要吐血 不知道哪里问题 断了重启 op 都没用 放弃了 手机太难握手
    zerotier 简单方便 但在外远程看 nas 视频卡顿 WG 就顺畅

    哪位大佬长期使用 WG 手机好握手吗?
    huaxie1988
        27
    huaxie1988  
       22 天前 via Android
    @sxml2015 wg 手机没问题,手机用 ipv6ddns 连接家里路由器。
    sxml2015
        28
    sxml2015  
       22 天前 via Android
    @huaxie1988 瞎折腾几天没注意 passwall 导致手机接收不了数据包 UDP 不转发 WG 端口解决了
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2749 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 01:55 · PVG 09:55 · LAX 17:55 · JFK 20:55
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.