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

[长文] 移动白名单上传限速机制,以及解决办法

  •  2
     
  •   mikewang · 11 天前 · 4359 次点击

    背景

    移动开始对白名单以外的域名、网络协议进行上传限速。

    具体表现在:

    • 国内网盘、邮箱、微信、测速网站等上传一切正常。
    • 使用 IPv6 公网回家连 NAS ,或者 IPv4 打洞回家,读取文件异常缓慢。
    • BT 没有上传流量。
    • iperf3 测速只有 1 Mbps 左右。
    • 上传被限速,达到 1 Mbps 峰值时,时有丢包现象或者 ping 值上升。

    除了移动以外,其他运营商也有类似表现:

    • /t/1112956 北京移动 测速正常但上传看着确实变小了
    • /t/1057505 移动似乎对非常用端口上传进行了限速
    • /t/1063534 电信宽带测速正常,NAS 上传被限速
    • /t/1108373 上海电信上传限速
    • /t/1081007 上海电信上传限速
    • ...

    限速机制

    深度包检测。默认限速 1 Mbps ( 125 kB/s ),检测到白名单协议、域名之后,放开至正常速(我测得 100 Mbps )。

    以下均是我在移动宽带下测得的结果。

    TCP

    • HTTPS:TCP 443 端口,SNI 探测

      目标端口为 443 的 TCP 连接建立成功,客户端发送的 TLS Client Hello 包含白名单域名,解除限速。

      比如,在 TCP 建立时,使用下方二进制串,即可解除限速。虽然很多字段是不合法的,比如长度填了 0 ,域名直接放在了最后。但是不影响上游匹配到了 TLS 特征,并命中了域名关键字,放开限速。

      "\x16"         // Handshake
      "\x03\x00"     // TLS version
      "\x00\x00"     // Length (0)
      "\x01"         // Client Hello
      "\x00\x00\x00" // Length (0)
      "\x03\x00"     // TLS version
      "speedtest.cn"
      

      这个检测仅适用于 443 端口。其他端口使用 HTTPS 依然保持限速。

    • HTTP:所有 TCP 端口,HTTP 头 Host 字段检测

      同样地,只要匹配到关键特征即可解除限速。

      "HTTP/\r\n"
      "Host: speedtest.cn\r\n"
      "\r\n"
      

    UDP

    • DNS:53 端口,首个 UDP 包含有 DNS 协议特征

      目标端口为 53 端口,只要第一个 UDP 包发送含有如下 DNS 特征的请求,就可以解除限速。同样是特征匹配,不需要合法。

      "\0\0\1\0\0\1\0\0\0\0\0\0\0\0\0\1\0\1"
      
    • 待发现

      尚未找出对其他 UDP 端口解除限速的方法。

    补充

    该检测会追踪整个 TCP 的状态。在已建立的 TCP 连接中,构造 SYN 之后再发 SNI 或者 HTTP 特征并不会骗过检测机制,达成解除限速的效果。

    话说,这个探测方式是不是很眼熟。我怀疑是不是某个神秘技术下放到了运营商,区别只在:一个是检测到就断流,一个是检测到就恢复上传速度。

    解决方案

    这里介绍除了投诉以外的规避方案。

    带 HTTP 混淆的网络工具

    设置混淆的 host 为白名单网站即可。

    udp2raw 中加上 HTTP 特征

    使用 TCP 协议作为隧道可能不是最佳,因此我 fork 了 udp2raw ,在上面加上了 HTTP 特征: https://github.com/MikeWang000000/udp2raw

    这个特征很明显的通过了运营商的检测,上传速度恢复到 100 Mbps 。

    可以参考这个提交:commit c4995ea

    使用方法是在参数后加上 --fake-http speedtest.cn 这样就会混淆为在访问测速网站。

    对于一般的 TCP 连接

    (理论上,未验证)可以使用 eBPF 等手段,在 TCP 连接建立时,使用较小的 TTL 发送 HTTP 特征。这样既通过了运营商的检测,又不会到达服务器。

    后记

    因为省间结算,运营商费尽心机限制用户上传。这种白名单机制也让用户难以投诉:常见网站、测速网站的上传检测都是正常。运营商可以直接不承认有限速行为,而归结为用户问题。不知道以后还有什么新的手段呢?

    33 条回复    2025-03-23 00:19:59 +08:00
    heiher
        1
    heiher  
       11 天前 via Android
    赞!从外面建立的 TCP 入站连接,连接建立后服务端发送白名单 HTTP 请求作为“响应”,能解除上传限速吗?
    mikewang
        2
    mikewang  
    OP
       11 天前
    #1 @heiher 刚刚实测了一下。有意思的是,这个包不分方向。
    从 server -> client 或者 client -> server 只要有一处匹配到特征,就解除限速了。
    heiher
        3
    heiher  
       11 天前 via Android
    @mikewang #2 666 ,我也去在“回家”套件中加上这个伪装
    MFWT
        4
    MFWT  
       10 天前
    > 带 HTTP 混淆的网络工具

    这个会不会有风险?家宽开 HTTP 访问什么的,不确定他判断方式是主动扫描还是流量监听
    heiher
        5
    heiher  
       10 天前 via Android
    @MFWT 好在不区分方向,如果是手机访问为主,逆向进行 HTTP 握手对服务端的家宽是保护。如果两端都是家宽还是有风险。 @mikewang 除了 http(s)还有没有发现什么其它特征也有同等效果?
    Trim21
        6
    Trim21  
       10 天前
    BT 的 TCP 流必须以特定的协议头 开始,看这样子好像不太好绕过?
    Trim21
        7
    Trim21  
       10 天前
    @Trim21 #6 如果是未开启混淆的 bt tcp 的话,理论上说应该可以在 68 字节的握手之后插入一个包含任意文本的包。不过不知道在这个地方发送对应的文本还能不能触发解除限制了。

    \x00\x00\x00\x1f
    \x20
    \x99HTTP/\r\nHost: speedtest.cn\r\n\r\n

    ( hex 之后是 0000001f2099485454502f0d0a486f73743a207370656564746573742e636e0d0a0d0a )
    383394544
        8
    383394544  
       10 天前 via iPhone
    看到白名单域名是 speedtest.cn 笑了
    iijboom
        9
    iijboom  
       10 天前
    提问,电信的被 qos 或者其他特殊待遇有明显的 mtu 特征或者其他特征,移动的都有什么特征?
    上海电信的 https://www.v2ex.com/t/1091657 https://www.v2ex.com/t/1097472 精品网和被限速的 mtu 都是 1442
    广东电信的 https://www.v2ex.com/t/1079783 没被限速,但是 mtu 变 1430 ,内网 IP 变 100.64 ,变 nat4 ,ipv6 半小时老化
    youx
        10
    youx  
       10 天前
    @383394544 speedtest.net 中国大陆测速节点 迟早要被全部拆除
    huihuilang
        11
    huihuilang  
       10 天前 via Android
    所谓的 sni 伪装?
    伪装成境外的白名单是不是也可以?
    383394544
        12
    383394544  
       10 天前 via iPhone
    @youx #10 .net 和 .cn 不是一个站
    heiher
        13
    heiher  
       10 天前 via Android
    另外,是不是有没有 http response 不重要?如果是伪装双向都发 http request :D
    wy315700
        14
    wy315700  
       10 天前
    哪个地方的移动啊

    上海移动最近给大流量用户开始每天晚上 8 点和 10 点断线重拨
    youx
        15
    youx  
       10 天前
    @383394544 我知道不是同一个网站
    iijboom
        16
    iijboom  
       10 天前
    @wy315700 贴主是江苏移动,上海移动这个手段倒是很多地方用,就是干扰 pcdn
    PROJECT
        17
    PROJECT  
       10 天前
    看上去 doh 或者 doq 是有点用的
    heiher
        18
    heiher  
       10 天前
    实测我这移动和电信之间白天跨网不限速,晚高峰使用 HTTP 伪装也不提速。
    JasperHale
        19
    JasperHale  
       10 天前
    鄙人觉得这个逻辑不像是 GFW 倒是类似 反诈墙的下放.
    NewYear
        20
    NewYear  
       10 天前
    哈哈,我在想在未来的世界,互联网充满了这类“伪装数据包”,也是蛮有意思的。
    ilili
        21
    ilili  
       9 天前
    我预感伪装 host 免流的那一套很适合解限速,ss+obfs 就完事了
    ERvISTyP
        22
    ERvISTyP  
       9 天前
    今天试了下 op 的这个方案( udp2raw + wireguard ),还是限速,不知道我这电信用了什么黑魔法

    我这最开始的时候用 shadowTLS 就行破,现在都不行了
    basncy
        23
    basncy  
       9 天前
    解除 UDP 限速很容易,使用 RAID 0 级的条带化并行传输,2 秒零百加速不是梦。为了世界的和平,正常的 ISP 会封 IP 断流(迅雷一开,全家断网)。
    east4ming
        24
    east4ming  
       9 天前 via Android
    突然想到一个问题,那 http3 呢?
    heiher
        25
    heiher  
       9 天前
    @basncy #23 RAID 0 级条带化并行传输是指开很多个 UDP 端口,类似跳频吗?运营商的 UDP 流控会不会一个用户侧端口共享一个状态机呀
    playboy0
        26
    playboy0  
       9 天前
    如果直接用 reality 这种协议呢🤔 谢谢楼主
    kdzhq443
        27
    kdzhq443  
       8 天前
    何必呢,直接转网
    rulagiti
        28
    rulagiti  
       7 天前
    真恶心,骚操作一波又一波。
    shomaru
        29
    shomaru  
       7 天前
    @ERvISTyP 能不能指点下如何操作
    iamqk
        30
    iamqk  
       6 天前
    我说的怎么挂了代理上传速度就恢复正常呢
    zzyyzz
        31
    zzyyzz  
       6 天前
    湖南电信上周就发现了。表现在 OneDrive 上传时,一开始只能跑在 800-1024KByte/s 。一段时间后,可达到 5-6Mbyte/s 满速上传。
    colinhd8
        32
    colinhd8  
       5 天前
    @wy315700 不是最近,今年 1 月底就开始了。
    Jason1737
        33
    Jason1737  
       4 天前 via Android
    请问下 Vmess+ws ,不套 tls ,然后 host 填"speedtest.cn",path 填"/",可以破解这个限速吗,我这里移动到电信也是被限得死死的,无论是 ss 还是 wireguard 都只有 1Mbps 左右的速度
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1408 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 21ms · UTC 17:14 · PVG 01:14 · LAX 10:14 · JFK 13:14
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.