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

请教下 wireguard 应该如何用?

  •  
  •   jlak · 2023-09-03 03:00:49 +08:00 · 1439 次点击
    这是一个创建于 482 天前的主题,其中的信息可能已经有所发展或是发生改变。

    需要在外面访问本地设备 使用 docker 部署的 linuxserver/wireguard 使用了介绍里的默认设置 用 4G 环境测试一切完美 可以访问所有设备 但现在人在其他地方的用 wifi 就不能访问访问本地设备( wg 端的设备) 虽然 ip 地址已经变成了 wg 端的 但是局域网设备完全没变 还是 wifi 端的局域网 用的 iphone 和 mac

    第 1 条附言  ·  2023-09-03 07:39:26 +08:00
    简单来说就是
    外地用 4G+wg 可以访问家里设备
    外地 WIFI+wg 不能访问家里设备
    11 条回复    2023-09-06 02:58:39 +08:00
    vsyf
        1
    vsyf  
       2023-09-03 04:35:56 +08:00 via Android
    描述很乱,我的直觉问题在 allowed-ip 上。
    jlak
        2
    jlak  
    OP
       2023-09-03 07:38:35 +08:00 via iPhone
    @vsyf -e ALLOWEDIPS=0.0.0.0/0
    简单来说就是外地用 4G+wg 可以访问家里设备
    外地 WIFI+wg 不能访问家里设备
    huandaeren
        3
    huandaeren  
       2023-09-03 08:32:45 +08:00 via iPhone
    猜测你是用的 ipv6 进行的 wireguard 协议连接,4g 有 ipv6 地址,外面的 Wi-Fi 大概率没有,所以连不上。
    xpn282
        4
    xpn282  
       2023-09-03 12:42:02 +08:00
    设备没有 IPv6 地址呗,一般外面的 Wi-Fi 能下发的 IPv6 的可能性几乎为 0
    stonesirsir
        5
    stonesirsir  
       2023-09-03 13:19:14 +08:00 via Android
    国内搭?确定没事吗。。。
    vsyf
        6
    vsyf  
       2023-09-03 13:30:59 +08:00   ❤️ 1
    @jlak #2
    那你再看看是不是这个原因,假设你在外地所使用的 wifi 网段是 192.168.16.0/24 ,家里设备的路由表却未正确配置,导致虽然 wireguard 可以连接但是对端设备无法回应。

    我遇到过的一个场景是我需要访问的设备上面 docker 容器自动分配的网段正好和我使用的 wifi 网段一样。
    jlak
        7
    jlak  
    OP
       2023-09-03 15:54:33 +08:00
    @huandaeren
    @xpn282
    家里只有公网 ipv4 ,外面 4g 和 wifi 都有 ipv4+ipv6

    @stonesirsir
    在国外,无压力


    @vsyf 不是很懂路由器设置,wifi 网段两地都是 192.168.1.0/24
    然后都是主路由+Ap 模式,神奇的是在外地直接连主路由+wg 无法上网,ap+wg 却可以但局域网还是外地的局域网
    zbinlin
        8
    zbinlin  
       2023-09-03 17:56:10 +08:00   ❤️ 1
    因为你在外地的 wifi 的网段跟本地都是同一个,导致你实际在外地访问的时候,并没有走 wg 连接本地的网段,实际还是访问外地的局域网。

    解决的方法是两地用不同的网段。
    vsyf
        9
    vsyf  
       2023-09-03 18:23:27 +08:00   ❤️ 1
    @jlak #7
    那你直连主路由和 AP 一定有不一样的网段吧,如果是的话应该是下面的原因。

    神奇的是在外地直接连主路由+wg 无法上网
    => 直接连主路由,获得 ip A 网络下的 192.168.1.100 ,通过 wireguard 对外通信。有数据包发往 192.168.1.100 时,对面的网关通过路由表却将数据包发给了 B 网络下的 192.168.1.100 ,你无法收到。

    ap+wg 却可以但局域网还是外地的局域网
    => ap 在另一网段,获得 ip 是 A 网络下的 192.168.2.100 。B 的数据包可以正常通过 wiregurad 网关路由。

    外地用 4G+wg 可以访问家里设备
    => 这也从侧面佐证上面的分析。

    结论:
    1. 两地可以用不一样的网段
    2. 如果仅仅是要访问 B 地的网络,不需要 allowed-ips 0.0.0.0/0 ,只要覆盖 B 地的网络范围就可以了。
    jlak
        10
    jlak  
    OP
       2023-09-03 18:37:44 +08:00 via iPhone
    @zbinlin
    @vsyf
    ap 和主路由都是同一网段(用的小米 ax6 ,ap 模式好像默认和主路由一样,貌似只有 ap 模式才能访问连接主路由的局域网),
    我回去时修改一下家里网段看看,现在机器已经失联了,仅仅因为我改了下 Docker 设置里的时区,改后 wg 可以连接但是无网
    jlak
        11
    jlak  
    OP
       2023-09-06 02:58:39 +08:00
    @zbinlin
    @vsyf
    谢谢 已经解决了
    确实是网段关系 改了外地的网段后能连接上家里设备了
    要完美解决从任何地方访问果然还是需要改家里的网段(有点怕出各种问题,docker 容易较多)
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   937 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 22ms · UTC 21:09 · PVG 05:09 · LAX 13:09 · JFK 16:09
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.