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

wireguard 布网故障

  •  
  •   ghostwwg · 18 天前 · 1754 次点击

    场景: 我是在 A ( lan 192.168.1.0/24 ) B(192.168.88.0/24) 两处都部署了 wiregurd 希望从外网可以链接 A B 的局域网。

    现象: 我节点 C 在外网是可以顺利链接 A B 任意一个的 lan 都是没有问题的。 BUT !!! 节点 B 内网无法访问 节点 A 反之也是!!!!

    求问: 这该咋排查。。。

    28 条回复    2024-04-26 09:24:29 +08:00
    Jimmyisme
        1
    Jimmyisme  
       18 天前
    一般都是 allowips 的锅
    ghostwwg
        2
    ghostwwg  
    OP
       18 天前
    @Jimmyisme 应该木有问题,外网 C 是能顺利访问的。附上我的 allowips 配置

    节点 A:
    ---
    配置节点 B 的信息:
    AllowedIPs = 10.252.1.1/32, 192.168.88.0/24
    ----

    节点 B:
    ---
    配置节点 A 的信息:
    AllowedIPs = 10.252.1.2/32, 192.168.1.0/24
    ----
    Damn
        3
    Damn  
       18 天前 via iPhone
    还有路由表。OpenWrt 有一个选项可以自动添加,点点点即可,非 OpenWrt 可能需要手动添加路由。
    bobryjosin
        4
    bobryjosin  
       18 天前 via Android
    在哪个系统部署的,配置文件贴出来
    csdreamdong
        5
    csdreamdong  
       18 天前
    C 节点,要开 ip_forward ,以及 C 上面的要有去 A 和 B 的路由
    Ipsum
        6
    Ipsum  
       18 天前
    如果 c 可以访问到 ab ,那 c 的 postrouting 添加出 wg 接口的伪装。因为 ab 没有对方的路由表
    ghostwwg
        7
    ghostwwg  
    OP
       18 天前
    @bobryjosin

    节点 A
    --------------
    root@j1900:~# cat /etc/wireguard/wg0.conf
    # peer_201# Address updated at:    2022-08-13 02:04:21.28015476 +0000 UTC
    # Private Key updated at: 2022-08-12 11:34:22.54225801 +0000 UTC
    [Interface]
    Address = 10.252.1.2/32
    ListenPort = 52320
    PrivateKey = xxx
    MTU = 1450
    PostUp = iptables -A FORWARD -i wg0 -j ACCEPT; iptables -A FORWARD -o wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o br0 -j MASQUERADE
    PostDown = iptables -D FORWARD -i wg0 -j ACCEPT; iptables -D FORWARD -o wg0 -j ACCEPT; iptables -t nat -D POSTROUTING -o br0 -j MASQUERADE
    # ID:          phone
    # Name:        peer_C1
    # Email:
    # Created at:  2022-08-13 02:03:42.226570346 +0000 UTC
    # Update at:    2022-08-13 02:03:42.226570346 +0000 UTC
    [Peer]
    PublicKey = xxx
    AllowedIPs = 10.252.1.3/32
    # ID:          yoga
    # Name:        peer_C2
    # Email:
    # Created at:  2022-08-13 02:04:00.216322658 +0000 UTC
    # Update at:    2022-08-13 02:04:00.216322658 +0000 UTC
    [Peer]
    PublicKey = xxx
    AllowedIPs = 10.252.1.4/32
    # ID:          business tmp
    # Name:        peer_C3
    # Email:
    # Created at:  2023-05-30 02:04:00.216322658 +0000 UTC
    # Update at:    2023-05-30 02:04:00.216322658 +0000 UTC
    [Peer]
    PublicKey = xxx
    AllowedIPs = 10.252.1.5/32
    # ID:          dev_ub2004
    # Name:        peer_C4
    # Email:
    # Created at:  2023-05-30 02:04:00.216322658 +0000 UTC
    # Update at:    2023-05-30 02:04:00.216322658 +0000 UTC
    [Peer]
    PublicKey = xxx
    AllowedIPs = 10.252.1.6/32
    # ID:          cbrgd76jimivehamds2g
    # Name:        peer_403
    # Email:
    # Created at:  2022-08-13 02:04:12.49288016 +0000 UTC
    # Update at:    2022-08-13 05:02:27.105906129 +0000 UTC
    [Peer]
    PublicKey = xxx
    AllowedIPs = 10.252.1.1/32, 192.168.88.0/24
    Endpoint = ddnsXXX.space:52320
    PersistentKeepalive = 25
    --------------
    节点 B
    -------------
    # peer_403

    # Address updated at: 2022-08-13 02:04:21.28015476 +0000 UTC
    # Private Key updated at: 2022-08-12 11:34:22.54225801 +0000 UTC
    [Interface]
    Address = 10.252.1.1/32
    ListenPort = 52320
    PrivateKey = XXXX
    MTU = 1450
    PostUp = iptables -A FORWARD -i wg0 -j ACCEPT; iptables -A FORWARD -o wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o br0 -j MASQUERADE
    PostDown = iptables -D FORWARD -i wg0 -j ACCEPT; iptables -D FORWARD -o wg0 -j ACCEPT; iptables -t nat -D POSTROUTING -o br0 -j MASQUERADE


    # ID: phone
    # Name: peer_C1
    # Email:
    # Created at: 2022-08-13 02:03:42.226570346 +0000 UTC
    # Update at: 2022-08-13 02:03:42.226570346 +0000 UTC
    [Peer]
    PublicKey = XXXXXX
    AllowedIPs = 10.252.1.3/32

    # ID: yoga
    # Name: peer_C2
    # Email:
    # Created at: 2022-08-13 02:04:00.216322658 +0000 UTC
    # Update at: 2022-08-13 02:04:00.216322658 +0000 UTC
    [Peer]
    PublicKey = xxx
    AllowedIPs = 10.252.1.4/32

    # ID: business tmp
    # Name: peer_C3
    # Email:
    # Created at: 2023-05-30 02:04:00.216322658 +0000 UTC
    # Update at: 2023-05-30 02:04:00.216322658 +0000 UTC
    [Peer]
    PublicKey = xxx
    AllowedIPs = 10.252.1.5/32

    # ID: dev_ub2004
    # Name: peer_C4
    # Email:
    # Created at: 2023-05-30 02:04:00.216322658 +0000 UTC
    # Update at: 2023-05-30 02:04:00.216322658 +0000 UTC
    [Peer]
    PublicKey = xxxxx
    AllowedIPs = 10.252.1.6/32

    # ID: xxxxxxx
    # Name: peer_201
    # Email:
    # Created at: 2022-08-13 02:04:12.49288016 +0000 UTC
    # Update at: 2022-08-13 05:02:27.105906129 +0000 UTC
    [Peer]
    PublicKey = xxxx
    AllowedIPs = 10.252.1.2/32, 192.168.1.0/24
    Endpoint = ddnsxxxxA.space:52320
    PersistentKeepalive = 25

    ------------
    ghostwwg
        8
    ghostwwg  
    OP
       18 天前
    @csdreamdong 节点 C 就是 PC ,能正常访问 A B 两个节点的局域网,但 AB 局域网无法互相访问。。
    ghostwwg
        9
    ghostwwg  
    OP
       18 天前
    @Ipsum

    节点 A
    -----------
    root@j1900:~# ip r|grep 88
    192.168.88.0/24 dev wg0 scope link
    -----------


    节点 B
    ----------------
    root@wuwg-EQ:~# ip r|grep 1.0
    169.254.0.0/16 dev br0 scope link metric 1000
    192.168.1.0/24 dev wg0 scope link

    ---------------
    ghostwwg
        10
    ghostwwg  
    OP
       18 天前
    @Damn 路由是有的
    Ipsum
        11
    Ipsum  
       18 天前
    ddnsXXX.space:52320 这是节点 c ?
    Ipsum
        12
    Ipsum  
       18 天前
    试试
    把 iptables -t nat -A POSTROUTING -o br0 -j MASQUERADE
    改成
    iptables -t nat -A POSTROUTING -o wg0 -j MASQUERADE
    ghostwwg
        13
    ghostwwg  
    OP
       18 天前
    @Ipsum
    带 ddns 的是节点 A 和节点 b

    节点 C ( pc )走外网是能链接节点 A\B 的局域网的(捂脸
    Ipsum
        14
    Ipsum  
       18 天前 via Android
    sysctl -a |grep forward 看看
    guanzhangzhang
        15
    guanzhangzhang  
       18 天前
    节点 c 的 wg 写

    peer A
    allowIPs= A 的局域网

    peerb
    allowIPs= B 的局域网

    要开 forward 和 snat
    Qetesh
        16
    Qetesh  
       18 天前
    用 wg 看下,很大可能 A-B 不通
    Dzsss
        17
    Dzsss  
       18 天前
    OSPF 解君愁。A B 都上 MikroTik ,然后 A B 跑 OSPF 。
    fuckshiter
        18
    fuckshiter  
       18 天前
    把 wg-quick interface 搞上来看看
    ghostwwg
        19
    ghostwwg  
    OP
       18 天前
    @Qetesh 现在就是节点 A <--> B 不通,但作为对外服务的 wg 节点(AB),我的客户端 C ( pc )是可以链接 AB 两个节点的.
    Qetesh
        20
    Qetesh  
       18 天前
    @ghostwwg wireguard 是类似 Mesh 网络,全连接的状态。怀疑 AB 之间的认证的公私钥等有问题
    wxhwz
        21
    wxhwz  
       17 天前
    描述有点模糊没看明白,假设节点 a 、b 之间能互相访问,但下面内网 a 其余机器无法访问内网 b
    因为流量从 br0 到节点 a ,然后通过 wg0 传到 b ,现在是断在这一步
    所以 a 主机在原基础上需要加一个
    iptables -t nat -I POSTROUTING -o wg0 -j MASQUERADE
    ghostwwg
        22
    ghostwwg  
    OP
       17 天前
    @wxhwz 接点 A B 是有公网 IP 对外提供接入服务的,
    - 节点 C 是客户端( PC )链接后能访问 A \ B 的局域网,
    - 但是! 节点 A 和节点 B 无法互相访问(捂脸哭泣。。。
    Ipsum
        23
    Ipsum  
       17 天前
    @ghostwwg AB 上 sysctl -a |grep forward 看看
    wxhwz
        24
    wxhwz  
       16 天前
    @ghostwwg #22
    A 配置文件中
    [Interface]
    Address = 10.252.1.1/32
    改成
    Address = 10.252.1.1/24
    B 主机同理

    如果还是不行的话,检查下密钥有没有配错
    Andy1989
        25
    Andy1989  
       14 天前
    @ghostwwg #2 我觉得你好像需要在你的节点 A AllowedIPs 里面加上 192.168.1.0/24 , 然后在节点 B 的 AllowedIPs 里面加上 192.168.88.0/24 吧。
    ghostwwg
        26
    ghostwwg  
    OP
       4 天前
    @guanzhangzhang 节点 C (客户端)是这么写的,是可以链接 A B 的,但 A B 互相不通。。
    ghostwwg
        27
    ghostwwg  
    OP
       4 天前
    @Andy1989 这个有的,节点 C 能访问 A B 我判断 A B 的 wg 服务是正常能对外提供链接的,但 AB 又不能互联,我 check 了他们( AB )的配置文件。。。又没找到什么问题。。
    guanzhangzhang
        28
    guanzhangzhang  
       4 天前
    @ghostwwg #26 ping 的时候抓包看看
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   2510 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 30ms · UTC 11:55 · PVG 19:55 · LAX 04:55 · JFK 07:55
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.