V2EX 18小时前
[宽带症候群] 墙居然有连接数配额
index_new5.html
../../../zaker_core/zaker_tpl_static/wap/tpl_guoji1.html

 

本文作者通过测试海外服务连通性,意外触发了 GFW 的拦截机制,进而深入研究了 GFW 的工作原理。研究发现,GFW 可能由无状态和有状态两部分组成,前者基于 SNI 豁免列表,后者进行 DPI 处理并限制并行连接数。测试结果表明,部分网站享有白名单,而未在白名单内的网站在被拦截期间无法正常传输数据。此外,作者还发现了 GFW 在 SSH 和反向连接方面的特殊处理方式,并对比了伊朗的网络环境,揭示了 GFW 复杂的运作机制。

🌐 测试发现,GFW 的拦截具有固定时间,且表现类似于伊朗的墙,这促使作者深入研究其机制。

✅ 作者将网站分为两类:Tier 1 网站(如 Steam/GitHub)享有白名单,在被拦截期间仍可访问;Tier 2 网站则被完全阻断。

🛡️ 推测 GFW 由两部分组成:无状态防火墙基于 SNI 豁免列表,有状态防火墙进行 DPI 处理,并可能限制来自单一 IP 的并行连接数。

🔑 测试结果显示,SSH 连接在拦截期间部分受阻,而偷取豁免域名证书的 Reality 协议可以正常工作,这揭示了 GFW 对不同协议的差异化处理。

🌍 作者还测试了反向连接国内的情况,发现仍然可行,这表明有状态 GFW 基于五元组的连接跟踪,且限制相对宽松。



最近复习了一下 gfw.repot 的论文,手写了一个工具用来检测海外服务的连通性,把线程拉到了 6 万线程,基本上就贴着默认可用端口跑,这样比较快,结果被 GFW 拉清单了,一开始很诧异,大约 90 秒后解封,多次测试后发现时间相对来说非常固定,然后我就开始针对这个机制研究起来,无聊就随便写写。。

被拉黑的这段期间很神奇,用起来就跟伊朗那边的墙一样,从这里一窥合理怀疑墙其实真的分至少两个部分。

1. 国内网站没问题,因为没墙,有省墙的不好说,测试分别使用了东莞电信和东莞移动进行,确认过软路由杠杠的,并没有爆炸,不是残存 TCP 才导致所谓没问题
2. 有些域名有白名单,比如 Steam / GitHub 等网站,如果在你没有被拉黑的时候就能访问,那你被短暂拉黑后也能访问,为了方便理解把它们成为 Tier 1 网站,猜测与无状态 GFW 有关
3. 没有白名单的网站的协议在被拉黑期间通通被阻断了,只能收到握手,但是无法进行数据传输,这里把它们称为 Tier 2 网站,猜测与有状态 GFW 有关

墙有豁免并不出奇,但是让我感到惊讶的是它居然不完全豁免 SSH ,目前只发现有部分 SNI 是被完全豁免的,在拉黑期间测试了 VLESS / Reality / WireGuard / Shadowsocks 和 SSH ,只有偷了其中一些豁免域名的证书的 Reality 能正常工作,否则只能依赖没有墙的国内线路中转。

根据以上发现,判断它们的顺序,很有可能先交给无状态的防火墙处理,然后再交给有状态的防火墙处理,无状态的墙只要满足 SNI 豁免列表,如 Tier 1 里的网站,则此连接会被豁免,且这个无状态的防火墙没有连接数限制。

接下来,如果 Tier 1 豁免列表里没有匹配的规则,则会交给有状态的 Tier 2 防火墙进行 DPI 处理,而这个防火墙很可能有对来自单一 IP 的并行处理限制,一次只能处理某一个数值范围内的连接,超过此数量的连接,如上面的 SSH 例子,一开始握手看似是成功,实际上回程过程中数据会直接被丢弃,而 SSH 默认的配置是在 45 秒钟后如果没有收到客户端的回复,连接断开。

这种设计看上去倒没啥太大的问题,大吞吐用无状态的防火墙,精准打靶用有状态的防火墙。

伊朗那边的墙现在几乎就是白名单,很少一部分 IP 能够相对稳定的翻墙,按伊朗人的说法,只有宽带豁免程度最高,包括但不限于家宽和专线,且所有 IDC 和蜂窝网络,均被无状态防火墙高度丢包,甚至访问伊朗国内的网站也无法幸免。

此外,还在这次的测试中尝试了在被拉黑过程中从海外反向连接国内,发现仍然工作,这意味着有状态的 GFW 是基于五元组的连接跟踪,并且不共享一套策略的同时限制也更加宽松。

Fish AI Reader

Fish AI Reader

AI辅助创作,多种专业模板,深度分析,高质量内容生成。从观点提取到深度思考,FishAI为您提供全方位的创作支持。新版本引入自定义参数,让您的创作更加个性化和精准。

FishAI

FishAI

鱼阅,AI 时代的下一个智能信息助手,助你摆脱信息焦虑

联系邮箱 441953276@qq.com

相关标签

GFW 网络审查 连通性测试 翻墙 防火墙
相关文章