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

UDP 打洞的玄学问题

  •  
  •   qingmuhy0 · 2022-05-07 19:13:55 +08:00 · 8909 次点击
    这是一个创建于 933 天前的主题,其中的信息可能已经有所发展或是发生改变。

    家里用的移动网,因为没有公网 V4 ,一直在用 zerotier 和 tailscale 组网回家,用了两年了,一直都可以打洞成功,之前 V6 还不屏蔽 443 和 80 ,可以说是过了两年舒服日子。

    最近几天先是 V6 的 80 和 443 被屏蔽了,接着 zerotier 打洞也不正常了,现在 zerotier 一直走中转因为没搭建 MOON ,延迟直接 400+(还时不时完全连不上),tailscale 则直接就连不上了。

    本来还想截个 zerotier 截图的 结果直接连不上了

    泉州搞网站白名单,江苏移动也天天整点这玩意。(我啥也没动,应该不是我部署的问题吧。谁晓得呢,都是玄学。)

    没有 UDP 打洞的日子好难熬啊,学校宿舍没有 V6 图书馆才有教育网 V6 ,没有 UDP 打洞,V4 速度处于只能听说书的速度了,这是要我以后想追剧去图书馆追的系列嘛,赣!

    发帖没啥其他意思,就是有点无语,想吐槽吐槽。

    32 条回复    2023-06-24 22:30:55 +08:00
    qingmuhy0
        1
    qingmuhy0  
    OP
       2022-05-07 19:52:10 +08:00
    <img src="https://i.qingmuhy.com/i/2022/05/07/w98ich_4.webp" alt="简单图床 - EasyImage" />

    即使连上也是这个 ping 值,连 SSH 都卡的很。
    jousca
        2
    jousca  
       2022-05-07 20:05:40 +08:00
    你不跑个 MTR 看看哪一跳路由导致的延迟高?

    zerotier 这种玩意儿我都没听说过。一直是自建服务器走 FRP ~~~ 也用过爱快的 SDWAN 。

    不花点费用速度起不来。
    a8Fy37XzWf70G0yW
        3
    a8Fy37XzWf70G0yW  
       2022-05-07 20:52:20 +08:00
    首先 PO 主需要確認兩邊的 NAT 類型是否是 Full Cone 或者 Address Restrict NAT ,如果任意一側低於上述等級,那麼“打洞”是肯定不會成功的。
    除此之外可以修改一下 Listen Port 來試試能否繼續正常直連。將上述程式的默認 PORT 修改爲默認以外的值。
    a8Fy37XzWf70G0yW
        4
    a8Fy37XzWf70G0yW  
       2022-05-07 20:55:52 +08:00
    Tailscale 的 DERP 伺服器的 JP 和 SIN 地域均在中國大陸被屏蔽,因此會導致各種不正常。PO 主可以前往網頁控制檯剔除後再試試看。(設定 ACL 規則)

    修改爲:

    {
    "acls": [
    { "action": "accept", "users": ["*"], "ports": ["*:*"] },
    ],
    "derpMap": { "Regions": { "3": null ,"7": null }} // Add This Line In Your config
    }
    qingmuhy0
        5
    qingmuhy0  
    OP
       2022-05-07 20:59:20 +08:00
    @jousca Zerotier MTR 会直接显示就 1 跳,所以不是很好测,如果从 ZeroTier 外部看的话,延迟来自于中转服务器。

    因此不同于 FRP 穿透,ZeroTier 和 Tailscale 用 MTR 测试可能没什么意义的。
    qingmuhy0
        6
    qingmuhy0  
    OP
       2022-05-07 20:59:38 +08:00
    @viberconnection 感谢你的建议,我会尝试这些步骤。
    guanzhangzhang
        7
    guanzhangzhang  
       2022-05-07 22:03:04 +08:00
    udp2raw 试试
    superchijinpeng
        8
    superchijinpeng  
       2022-05-07 22:31:31 +08:00   ❤️ 1
    自建 Headscale ,使用 Headscale 内置的 DERP ,江苏移动 20ms ,和打洞成功后差不太多
    yzwduck
        9
    yzwduck  
       2022-05-08 01:04:51 +08:00
    用命令 zerotier-cli peers 可以列出当前连上的 peer 编号、版本、IP 、延迟。
    需要 admin (Windows) 或 root (Linux) 权限。
    lns103
        10
    lns103  
       2022-05-08 01:34:26 +08:00 via Android
    我学校的电信宽带有公网 v4 ,用了 2 年,最近外网 TCP 入站被掐了,尝试用 zerotier ,流量连接很稳定,但是校园网内 zerotier 会被阻断,用 10s 之后连接就会断(而且还是按照连接建立时间顺序断开,先是鼠标输入失效,然后画面才卡死),但是直连又没问题(主要是使用 NVIDIA 的串流,大部分都是 UDP 流量)
    hronro
        11
    hronro  
       2022-05-08 02:09:25 +08:00 via iPhone
    我这边移动直接给 fullcone NAT ,打洞还没失败过。同城和电信打洞之后延迟大概在 6ms - 9ms 。
    i3x
        12
    i3x  
       2022-05-08 02:14:34 +08:00 via Android
    任何一方有 nat1 或者公网即可穿透。nat1 差不多也算是公网型了。虽然只要少数 udp 应用定向支持。
    qingmuhy0
        13
    qingmuhy0  
    OP
       2022-05-08 07:52:13 +08:00
    @yzwduck
    C:\Windows\system32>zerotier-cli peers
    200 peers
    <ztaddr> <ver> <role> <lat> <link> <lastTX> <lastRX> <path>
    35326b513e 1.6.5 LEAF -1 RELAY
    62f865ae71 - PLANET -190 DIRECT 718 908 50.7.252.138/9993
    778cde7190 - PLANET -426 DIRECT 6492 1872 103.195.103.66/9993
    8bd5124fd6 1.8.9 LEAF 502 DIRECT 2312 1808 34.136.112.255/52227
    cafe04eba9 - PLANET 434 DIRECT 2062 1012 84.17.53.155/9993
    cafe9efeb9 - PLANET -1 DIRECT 11830 1988 104.194.8.134/9993

    C:\Windows\system32>ping 192.168.8.2 /t

    正在 Ping 192.168.8.2 具有 32 字节的数据:
    来自 192.168.8.2 的回复: 字节=32 时间=427ms TTL=63
    请求超时。
    来自 192.168.8.2 的回复: 字节=32 时间=418ms TTL=63
    来自 192.168.8.2 的回复: 字节=32 时间=424ms TTL=63
    来自 192.168.8.2 的回复: 字节=32 时间=418ms TTL=63
    来自 192.168.8.2 的回复: 字节=32 时间=426ms TTL=63
    来自 192.168.8.2 的回复: 字节=32 时间=424ms TTL=63

    192.168.8.2 的 Ping 统计信息:
    数据包: 已发送 = 7 ,已接收 = 6 ,丢失 = 1 (14% 丢失),
    往返行程的估计时间(以毫秒为单位):
    最短 = 418ms ,最长 = 427ms ,平均 = 422ms

    今天测试了一下,依然无法打洞成功。
    qingmuhy0
        14
    qingmuhy0  
    OP
       2022-05-08 08:06:21 +08:00
    @i3x 因为疫情我暂时没办法回去,暂时不是很方便测试家里的 NAT 类型,但学校的是最次的 Symmetric 型。
    cinhoo
        15
    cinhoo  
       2022-05-08 08:23:24 +08:00 via Android
    没自建 controller 前,zerotier 想打通真是太难了,即使有 moon 也不行,因为他就连不上 networkpeer
    qingmuhy0
        16
    qingmuhy0  
    OP
       2022-05-08 08:43:15 +08:00
    @superchijinpeng 如果不是万恶的 IOS ,这的确是个完美的方案。
    863
        17
    863  
       2022-05-09 00:11:34 +08:00   ❤️ 5
    可能是在同一个 CGNAT 网络下已经有人在使用 TailScale 占用了默认的 41641 端口,可以尝试参考文档 https://tailscale.com/kb/1018/acls/
    在 ACL 里加入 randomizeClientPort 随机化端口试试
    ungrown
        18
    ungrown  
       2022-05-10 10:34:05 +08:00
    @jousca #2 我和楼主一样是江苏移动+zerotier ,同城连家里设备延迟 30~50ms ,带宽 5~10Mbps ,能达到这种效果的付费方案你给推荐个顺便报个价呗?
    ungrown
        19
    ungrown  
       2022-05-10 10:36:39 +08:00
    @qingmuhy0 #13 重启 zerotier one 服务
    我就在刚刚发现我 ping 家里设备也是这个鬼样保底 400+ms ,然后我熟练得让人心疼地进任务管理器右键重启 zerotier one 服务,现在再 ping:
    ping 10.1.0.103

    正在 Ping 10.1.0.103 具有 32 字节的数据:
    来自 10.1.0.103 的回复: 字节=32 时间=26ms TTL=128
    来自 10.1.0.103 的回复: 字节=32 时间=25ms TTL=128
    来自 10.1.0.103 的回复: 字节=32 时间=63ms TTL=128
    来自 10.1.0.103 的回复: 字节=32 时间=29ms TTL=128

    10.1.0.103 的 Ping 统计信息:
    数据包: 已发送 = 4 ,已接收 = 4 ,丢失 = 0 (0% 丢失),
    往返行程的估计时间(以毫秒为单位):
    最短 = 25ms ,最长 = 63ms ,平均 = 35m
    v2tudnew
        20
    v2tudnew  
       2022-05-10 18:15:17 +08:00
    NAT1 也需要端口内外一致,CGNAT 大部分类似 Symmetric 的 Full Cone ,总是有各种各样的问题。
    hbytw1
        21
    hbytw1  
       2022-05-11 11:01:15 +08:00
    建议 zerotier 自建 planet 节点,抛开官方的 planet ,完全走国内,使用快一年了,一直很稳定。
    sorapsyga
        22
    sorapsyga  
       2022-05-11 14:40:56 +08:00
    @yuantianwei 非常同意,我是前几个月才自建的 PLANET ,目前唯一缺陷就是 IOS 端因为无法替换 PLANET 文件所以连不上以外,其余的各个成员连起来都非常流畅。广东广州佛山这边的移动基本都是辣鸡 Symmetric ,我看了一下基本都是通过服务器转发流量的,但是我电信 PING 过去延迟也就 10ms 上下。这个方案也就只需要搞一台腾讯云或者阿里云的轻量服务器而已,费用大概 40 一个月
    ungrown
        23
    ungrown  
       2022-05-12 09:41:38 +08:00
    @yuantianwei #21 自建的 planet 是只能私用不会加入整个 zt 的节点网中吗
    hbytw1
        24
    hbytw1  
       2022-05-12 12:55:08 +08:00
    @ungrown 自建的不加入官方的根服务器,完全解除设备和网络限制,就是自己想带多少客户端都可以,建几个网络也可以。终端也不在去找官方的根服务器进行连接了。
    ithz
        25
    ithz  
       2022-05-13 10:36:47 +08:00
    这个 zerotier 相对 N2N 有什么优势,有没有大佬说说,我一直在用 N2N 自建 superNode
    smallthing
        26
    smallthing  
       2022-11-26 03:44:52 +08:00
    @sorapsyga 我采用的是用 IOS 用 vpn 拨入一个节点
    rayray314
        27
    rayray314  
       2022-12-10 10:38:48 +08:00
    @863 用了这个方法几乎从看脸到每次秒打洞成功!感谢。
    rayray314
        28
    rayray314  
       2022-12-10 10:39:21 +08:00
    @863 “在 ACL 里加入 randomizeClientPort 随机化端口试试”用了这个方法几乎从看脸到每次秒打洞成功!感谢。
    imlk
        29
    imlk  
       2022-12-19 15:28:56 +08:00
    @rayray314 randomizeClientPort 这个选项似乎会让每个 tailscale 客户端忽略其本身启动时指定的--port 参数,因此我觉得是一种不太好的选择,对于网络中某些处于防火墙之后的客户端来说
    rayray314
        30
    rayray314  
       2022-12-25 22:06:14 +08:00
    @imlk 对啊,字面意思就是随机客户端端口。至于好处或坏处,我理解这种打洞并不是非法 BYPASS 防火墙,而是合理利用了防火墙允许的机制。
    cjydawn
        31
    cjydawn  
       2023-02-07 10:23:45 +08:00
    @863 #17 随机化端口确实解决了问题
    cowman
        32
    cowman  
       2023-06-24 22:30:55 +08:00
    @863 感谢
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1259 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 18:07 · PVG 02:07 · LAX 10:07 · JFK 13:07
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.