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

救救孩子!能正常使用的 WireGuard 突然就不通了

  •  
  •   MrLonely · 2022-06-01 13:10:57 +08:00 · 4486 次点击
    这是一个创建于 907 天前的主题,其中的信息可能已经有所发展或是发生改变。

    画图软件我不会用。我用文字描述吧。

    A B 两台设备分别处于 A B 两点。

    1. 两点都是电信宽带 ✅

    2. 两点都是 RouterOS ,运行最新版 7.2.3 系统。同时额外安装了 zerotier ,加入了同一网络。

    3. 在两个网络下通过 ipip.net 查看公网 IP ,与路由器所显示的 WAN 口 IP 一致。✅

    4. 根据官方教程 https://help.mikrotik.com/docs/display/ROS/WireGuard 进行配置。

    5. 使用 MikroTik 官方的 DDNS 解析 IP ,两设备 Ping 对方 DDNS 域名都可以 Ping 通。并且显示 Ping 的 IP 与第 3 点处看到的一致。✅

    6. 教程里的创建接口,手动设置 WireGuard 接口 IP ,互相交换 public-key ,endpoint+port ,allowed ip ,firewall accept ,全部检查过不止一次。

    7. 完全一样的配置,之前配置好了之后还正常使用了一段时间。

    8. 在完全没有任何修改的情况下突然连不上了。

    9. A 点与处于 Azure HK 节点的 同样是 7.2.3 的 RouterOS 设备之间一切正常,point to point 正常,site to site 也正常。

    10. B 点与 Azure HK 节点完全不通,就像 B 点与 A 点不通一样的情况。

    11. 现在 zerotier 是通的。所以我暂时把 A B 两点的 subnet 的 Route 放在了 zerotier 接口上。与此同时依然在持续测试 A 与 B 之间的 point to point ping 。

    12. 按理说双公网 IP 下不需要添加 persistent keep alive 了,但是我还是习惯性地会给所有的 peer 都加上 00:00:25 ,之前看一个教程里推荐的设置。

    我自己的网络知识都是现学现卖,不知道还有什么更高级的网络工具可以进行更深层次的问题排查。 所以大家有什么下一步排错的 idea 吗?

    第 1 条附言  ·  2022-06-06 09:17:16 +08:00
    又不通了,而且经过反复测试,这次的情况真的让我觉得莫名其妙。

    墙内电信到电信不通,可电信到墙外 Azure 转发然后到墙内反而是通的。在墙上反复横跳居然比老实直连还稳妥。
    12 条回复    2022-08-01 14:57:36 +08:00
    daveh
        1
    daveh  
       2022-06-01 14:53:24 +08:00 via iPhone
    可能原因很简单,被封了。
    挂 udp2raw 试试看。
    MrLonely
        2
    MrLonely  
    OP
       2022-06-01 15:15:01 +08:00
    @daveh 是那个端口的 UDP 被封了吗?该不会跟我前两天挂了两天京东云无线宝有关系吧?
    Qetesh
        3
    Qetesh  
       2022-06-01 16:56:48 +08:00 via iPhone
    wireguard 在 linux 可以开内核日志,看有没有报错
    guoqiao
        4
    guoqiao  
       2022-06-01 16:59:49 +08:00 via iPhone
    也许只是因为那个日子快到了?
    daveh
        5
    daveh  
       2022-06-01 17:09:35 +08:00 via iPhone
    @MrLonely 就是封 wireguard UDP 端口,这个很好识别,挂个 udp2raw 换个端口继续用。
    BeautifulSoap
        6
    BeautifulSoap  
       2022-06-01 17:13:57 +08:00
    为啥 lz 的第一反应不是被墙了呢
    MrLonely
        7
    MrLonely  
    OP
       2022-06-01 17:35:19 +08:00
    @daveh RouterOS 并不支持这个 udp2raw ,那就得起虚拟机。目前来说有点复杂,我还是继续用 zerotier 把。

    @BeautifulSoap 因为被墙一般情况下是过墙才会被墙。我这里的 A B 两点都在墙内。并且墙一般也是把墙外的 IP 和端口 ban 掉。并不是墙内也要互相禁止访问。

    经过我的一番测试和折腾,现在 A B 两点都无法 ping 通 Azure HK 的 RouterOS 了。
    MrLonely
        8
    MrLonely  
    OP
       2022-06-01 18:32:19 +08:00
    突然网络又通了。并不知道为什么。
    Coelacanthus
        9
    Coelacanthus  
       2022-06-01 18:48:54 +08:00 via Android
    @MrLonely 突然又通了?那我大胆猜测下可能是被运营商 QoS 了
    MrLonely
        10
    MrLonely  
    OP
       2022-06-01 19:53:08 +08:00
    @Coelacanthus 感觉像是。我前两天挂了两天的京东云无线宝,现在我很担心跟那个有关系。不敢再用了。
    wetman
        11
    wetman  
       2022-06-06 16:32:40 +08:00
    看起来是 UDP 端口被封了。

    UDPping ( https://github.com/wangyu-/UDPping) 可以测试 UDP 连通性

    如果下次再出现,wireguard 可以通过配置修改 udp 端口。 (wg set wg0 listen-port 23456)
    smallthing
        12
    smallthing  
       2022-08-01 14:57:36 +08:00
    @MrLonely 无线宝为了打洞 都是走 UDP 传输流量,可能就是单纯的 QOS 了
    换伪装 tcp 吧
    牺牲一点 mtu 稳得很
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   868 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 22ms · UTC 21:56 · PVG 05:56 · LAX 13:56 · JFK 16:56
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.