移动开始对白名单以外的域名、网络协议进行上传限速。
具体表现在:
除了移动以外,其他运营商也有类似表现:
深度包检测。默认限速 1 Mbps ( 125 kB/s ),检测到白名单协议、域名之后,放开至正常速(我测得 100 Mbps )。
以下均是我在移动宽带下测得的结果。
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"
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 特征并不会骗过检测机制,达成解除限速的效果。
话说,这个探测方式是不是很眼熟。我怀疑是不是某个神秘技术下放到了运营商,区别只在:一个是检测到就断流,一个是检测到就恢复上传速度。
这里介绍除了投诉以外的规避方案。
设置混淆的 host 为白名单网站即可。
使用 TCP 协议作为隧道可能不是最佳,因此我 fork 了 udp2raw ,在上面加上了 HTTP 特征: https://github.com/MikeWang000000/udp2raw
这个特征很明显的通过了运营商的检测,上传速度恢复到 100 Mbps 。
可以参考这个提交:commit c4995ea
使用方法是在参数后加上 --fake-http speedtest.cn
这样就会混淆为在访问测速网站。
(理论上,未验证)可以使用 eBPF 等手段,在 TCP 连接建立时,使用较小的 TTL 发送 HTTP 特征。这样既通过了运营商的检测,又不会到达服务器。
因为省间结算,运营商费尽心机限制用户上传。这种白名单机制也让用户难以投诉:常见网站、测速网站的上传检测都是正常。运营商可以直接不承认有限速行为,而归结为用户问题。不知道以后还有什么新的手段呢?
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.