V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
xlsepiphone
V2EX  ›  问与答

A、B 区域 Wireguard 异地组网求教

  •  
  •   xlsepiphone · 323 天前 · 1091 次点击
    这是一个创建于 323 天前的主题,其中的信息可能已经有所发展或是发生改变。
    A 区域:网关是 192.168.1.1/24 opewnrt ,有公网 ip 。Unraid 位于 NAT 后,192.168.1.99/24 ,在 Unraid 中使用 Docker 运行 Wireguard Easy ,然后用网关的端口转发暴露 Docker Wireguard 的 UDP 端口到公网。


    现在将 A 区域 NAT 后的 Wireguard 当作中转节点,手机虚拟网卡地址 10.0.8.5/24 ,连上隧道后,可以访问 A 区 192.168.1.0/24 子网设备。


    B 区域:网关 192.168.2.1/24 ,无公网 ip 。同样有一台位于 NAT 后的 Unraid ,192.168.2.99/24 ,虚拟网卡地址 10.0.8.11/24 。

    使用 B 中的 Unraid 自带的 VPN 管理器中的 Wireguard 隧道功能配置连接上 A 区的中转服务器后,手机则可以通过 10.0.8.11/24 访问 B 中的 Unraid 。但是无法通过 192.168.2.99 或 192.168.2.1 访问子网设备。

    A 、B 区 Unraid 的 /etc/sysctl.conf 都默认配置了 ip 转发的,即 net.ipv4.ip_forward = 1 。

    现在的问题是,手机连上隧道后,如何访问 192.168.2.0/24 子网的设备?
    第 1 条附言  ·  322 天前

    跟着Cladue一步一步操作,结果B区域的Unraid被我搞得无法访问了(Web界面操作Unraid的Wireguard配置,手滑了导致allowedIp被重置),只有等过几天回B手动配置才行了。

    目前只好在A区本地PVE虚拟个2.0/24的子网环境来做测试了。。。。

    但是本地我无法再弄个Unraid来测试了,只有先试试虚拟个openwrt来测试。

    Cladue给出的方案如下:

    1. 连接到B区Unraid服务器,并以root用户登录
    2. 运行以下iptables命令添加SNAT规则:
    iptables -t nat -A POSTROUTING -s 10.0.8.11/32 -d 192.168.2.0/24 -j SNAT --to-source 192.168.2.1
    
    1. 在B区Unraid上重启Wireguard虚拟网卡,使设置生效
    wg-quick down wg0 && wg-quick up wg0
    
    1. 手机重新连接Wireguard隧道,尝试ping 192.168.2.1以及192.168.2.0/24子网下其他设备

    2. 192.168.2.1网关接收到从10.0.8.11的请求后,会认为是来自本机,然后正常路由到内网,实现连接。

    结果: 依然无效

    9 条回复    2023-06-16 23:33:19 +08:00
    coffeesun
        1
    coffeesun  
       322 天前 via Android
    A 区域子设备能访问 B 区子设备么?
    sarices
        2
    sarices  
       322 天前
    估计是路由问题吧,直接用 tailscale 组网就比较方便,也是基于 wireguard 的
    ysc3839
        3
    ysc3839  
       322 天前 via Android
    A 区域路由表添加 192.168.2.0/24 走 wireguard
    hanguofu
        4
    hanguofu  
       322 天前 via Android
    好奇问问: 手机通过 10.0.8.11/24 访问 B 中的 Unraid ,流量是通过 A 区域 NAT 后的 Wireguard 中转节点转发的吗?
    xlsepiphone
        5
    xlsepiphone  
    OP
       322 天前
    @coffeesun #1 不可以

    @sarices #2 tailscale 是我之前的方案,觉得速度上没有 wiregurad 丝滑,放弃了,tailscale 就很简单,有 subnet ,可以通过 peer 访问 peer 所处局域网中的其他子网设备。

    @ysc3839 #3 还没试,试不了了。。。


    @hanguofu #4 我也不知道,计算机网络没有好好学,后悔了。
    1423
        6
    1423  
       322 天前
    看起来是路由表的原因
    coffeesun
        7
    coffeesun  
       322 天前
    @xlsepiphone #5 那就是 3 楼说的问题,要在 A 区添加 B 区 ip 段走 wg 中转节点
    shenyuzhi
        8
    shenyuzhi  
       321 天前 via iPhone
    site2site 这种模式,不要给 wireguard 分配 ip 地址,没有意义,平白无故增加复杂度。
    flynaj
        9
    flynaj  
       321 天前 via Android
    要配置路由表,不会弄得话上 zerotier.
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   2045 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 211ms · UTC 01:54 · PVG 09:54 · LAX 18:54 · JFK 21:54
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.