月下博客

关于目前 GFW(墙) 的封锁方式TCP封锁(阻断)猜想

本文最后更新于 2018年10月14日 15:26 可能会因为没有更新而失效。如已失效或需要修正,请留言!

对于翻墙界来说,今年真不是个顺利年。从年初的 SSR 停更并删除项目,到后来的数次大规模封禁代理服务器,甚至发展到现在已经成为日常了(GFW 2.0),几乎每天都有人的代理服务器被墙,经常听到各个群组讨论,也是。。哎!

因本文文字较多,请配合网页右下角↘宽屏阅读 按钮(位于中间)观看,效果最佳(看不到请翻滚网页)。

好了,说正题。


简单说明

自从今年初开始,墙的封锁方式就从 全部协议封锁 改为了 TCP封锁(阻断),该封锁方式主要特征为:

脑洞:这也挺好的,因为相比以前,现在可以更准确的判断服务器被墙,而不是网络、服务器问题了。

以前你发现代理账号连不上了,你会去 Ping ,然后发现 Ping不通,接着你会怀疑是不是网络问题、服务器问题等,然后验证半天后发现:的确是被墙了。?

而现在,你只需要 Ping IP 一下,TCPing IP 一下,就能肯定是被墙了。?

基本上你测试你的服务器 IP 出现这种情况,99%的几率就是被墙了。剩下的 1% 就是防火墙没开放端口之类的配置问题。

TCP封锁(阻断) 简单解释:

当你的海外服务器 IP 被TCP封锁(阻断)后,你依然可以正常的向海外代理服务器发送数据(客户端连接服务端),但是海外代理服务器上的代理服务端在向你返回数据的时候,肯定是要经过墙的,而墙发现发送者IP(代理服务器)在黑名单中,于是就会阻断、拦截,这样你的客户端就收不到来自服务端的返回数据了(SSR上表现为:超时或空连)。

而目前的代理软件基本都是使用 TCP 协议传输的,而TCP协议要传输数据,则先要进行握手环节,而握手自然要有来有回,所以当墙对海外代理服务器回程TCP阻断的时候,就会导致代理客户端与服务端无法完成握手,自然也无法使用代理了。

我认为GFW的封IP原理大概是:

墙是通过分析流量特征,通过各种方法、证据来判断该链接为代理的可能性,当可能性达到不同的程度时,墙做出不同的处理。假设:

首先: 墙现在都是实时扫描检测的,检测到一个链接是代理的可能性低于10%,那么就无视。
其次: 检测到一个链接是代理的可能性高于10%,则将IP的相关信息(及收集的证据、特征等)记录到数据库中,当下次再发现这个链接时,继续去收集证据判断是否为代理,最后是代理的几率降低,则无视,是代理的几率增加,则进一步关注。
最后: 当检测到一个链接是代理的可能性高于50%的时候,可能就会考虑单独封一个端口(代理端口),这时候如果你换个端口继续做代理,那么往往很快就会所有端口被封,这就是因为墙根据你这个IP链接以往的几率判断,认为你这个IP链接是代理的可能性进一步增加,例如到了80%,所以就给你TCP所有端口封禁了。

其实,GFW之所以单独封一个端口,可能原因就是吃不准到底是不是代理,如果你很快就换了端口继续做代理,那么GFW就认为很大概率是代理,于是就可以封禁了。


如何补救?

点击展开 查看更多

而目前这种非一锅端的封禁方式,让一些人脑洞大开,比如:

ICMP 有人把 TCP 协议数据转换为 ICMP 协议数据传输,能用,但是缺陷很明显,速度太慢了,因为协议的限制意味着速度捉急。。。
UDP 有人想 TCP 协议封禁了,那我可以用 UDP 呀,于是就有人尝试 TCP 协议转为 UDP 协议传输,目前这类软件都比较成熟了,以前往往都是拿来做加速或者游戏优化用的,而现在拿来正好!
不过国内很多运营商往往都会对 UDP QOS限速,而想要解决 UDP QOS限速,则需要把 UDP协议 伪装成 TCP协议,然而这又是一个死循环了,TCP 协议被阻断。

能把TCP转为UDP的软件有:KCPTunDragoniteV2ray(自带KCP协议)、Goflyway(自带KCP协议)。


那么除了上面说的两者有缺陷的,还有没有能复活被墙IP的服务器继续做代理呢??

有的,比如:Goflyway 的WS+CDN模式 和 V2ray 的WS+CDN模式。

这两种方法都是依赖于CDN,而想要让 CDN 来中转代理,就需要 WebSocket 技术,Goflyway V2ray 都支持 WebSocket。

但光有 WebSocket+CDN 只能算复活被墙IP,无法保证 CDN IP 的安全性(被墙方面),所以还都需要HTTP、HTTPS伪装

所以在使用 Goflyway 时往往搭配 HTTP伪装,而使用 V2ray 时往往搭配 HTTP HTTPS伪装。这里 HTTP HTTPS伪装可不是 SS SSR 里的 伪 · HTTP HTTPS伪装,而是实实在在的网站(或者反向代理来的)。

也就是你浏览器打开域名(这种复活方法必须有域名)会看到正常的网页,而代理客户端访问则是建立代理链接。

注意:CDN 特别是免费套餐的 CDN,国内链接速度往往不如意,如果不在意 或 当备用的可以搭建试试。


如何解封?

点击展开 查看更多

有人又会问,IP被墙是永久的吗?会解封吗??

当然会解封,IP的数量是有限的,封一个就少一个,如果只封不解,那不成貔貅了??

更何况,换位思考想一下,假设你买了一个月付的海外服务器搭建代理,因为什么原因导致被墙了,那么到期的时候,你还会续费下去等待墙解封吗?自然不会,半年付、年付同样。

既然你不会为了等待IP解封而续费下去,那么这个服务器到期后,别人在购买的时候却不一定会是搭建代理的,他可能是正常做网站什么的。

墙考虑到 海外大量的IDC 和 国内购买海外服务器正常使用者 的体验和情绪,那就必须要定期解封。


以前还是全协议封禁的时候,我不清楚墙的解封流程,但是今年换成 TCP协议封锁(阻断) 后,经过实验和大量网友的反馈,能猜个大概了。

每个做代理被墙的海外服务器IP,墙都会根据不同情况设定一个解封时间(根据情况时间可能不同)。

如果解封时间内该海外服务器IP没有向国内发送数据或者尝试建立代理连接,那么墙就会解封该IP。当然解封该IP后不代表就可以继续做代理了,根据实验和大量网友反馈,被解封的海外服务器IP,短时间内再用于代理用途,往往很快就又会封禁(非100%,另外间隔时间越长,理论再次封禁几率越低)。

所以大家应该明白了吧?

如果你的海外服务器 IP 被TCP封禁(阻断),那么请关闭或者删除服务器上面的代理软件墙还可能定期对被墙IP的服务器主动探测,所以必须要关闭代理软件。),然后一段时间不理这个服务器,应该就会解封了(不是100%,而且各IP的封禁时间也可能不一样)。


这时候又有人问了:我被墙的海外服务器都吃灰两个月了,怎么还没有解封??

这个问题除了我上面最后说过的几率问题 和 解封时间问题外,还有个可能导致该情况的原因是:你是不是有空没空就去试试代理账号能不能用?或者有事没事 TCPing 测试一下解封了没有?

这个无意的行为,可能会导致墙对你被墙的海外服务器IP 重置解封时间或者说延长解封时间

就是说:当墙发现你被墙的海外服务器IP向国内发送数据或者尝试建立代理连接时,就可能会重置解封时间或延长解封时间

另外:墙还可能定期对被墙IP的服务器主动探测,看看代理软件是否还在运行,所以必须要关闭代理软件


注意:被墙IP解封后,尽量不要再做代理了,否则还是容易被墙IP。如果还要做代理,那么建议更换个代理软件,不要再用以前导致该IP被墙的代理软件了,毕竟能检测封禁一次,就能再封禁第二次,更何况你这个IP还有短时间内被墙过的前科,这更会增加被墙的几率。你要是用习惯了不想换,那么你最起码换个代理端口,至少能多活几天。。。


如何避免被墙?

点击展开 查看更多

目前没有任何一个代理软件可以保证代理服务器IP不会被墙(emm 除了 WS+CDN+伪装),顶多减少被墙几率。

以前流行的 SSR 因为已经停更大半年了,没有更新就意味着没办法抵御墙的检测,目前已经不推荐使用了。建议使用 V2ray、Brook、Goflyway 等代理软件。


如果你用习惯了SSR,不想更换,那么:

首先 SSR 目前依然是可以正常使用的,不过在热门地区(日本、美国等)被墙几率会高一些。

很多人都是默认只用的 HTTP HTTPS 混淆插件 ,或者客户端写个混淆参数 ,但是这样属于伪混淆 ,仅仅是将流量伪装成 HTTP HTTPS 流量,并没有实体网站,所以可以被主动探测识破。

因此,在热门地区(日本、美国等)搭建 SSR 代理的,建议要么搭配服务端的 redirect 参数做个真实网站(教程),要么就干脆用原版混淆插件( plain )。

毕竟,对于可以被主动探测的伪混淆,不做混淆反而被墙几率更低,只靠协议来降低流量特征 减少被墙几率。


除了代理软件的选择之外,服务器地区也对被墙几率有很大影响。经过实验和大量网友反馈,目前日本、美国等热门地区均是重灾区,被墙几率远高于其他较冷门地区的服务器,所以不管你当前用的是什么地区的服务器,如果该地区服务器IP频繁被墙,那么你应该考虑使用其他地区的服务器来继续搭建代理了。

而且,不说别人,就我这半年不管自用的服务器还是我网站分享的免费代理账号服务器,美国的永远是被墙最频繁的。

而我免费账号中的四个加拿大,都是 SSR账号( auth_sha1_v4 + tls1.2_ticket_auth 兼容原版,混淆参数什么的全都没搞),全天24小时都有人使用,实时链接 30~80 独立IP,实时速度 1MB/s~3MB/s,就这样都没有被墙过。而美国免费账号,除了 Goflyway 的是 CDN模式,其他的都是几天就GG了。

简单来说就是:

  • 要么搭配服务端 redirect 参数做个真实网站,要么就用原版混淆插件 plain
  • 建议避开日本、美国等热门地区。

另外,请不要或者尽量减少让国内网站(或服务器)走代理的情况出现,因为该方式会增加被墙几率。

你想一下就知道了,假设你是A,代理服务器是B,你要访问的国内网站是C,那么:

A通过B访问C,那么A会向B发送数据,B向C发送数据,然后C返回数据给B,B返回数据给A。

这个过程实际上全程时间很短的,在墙看来你这个行为很符合使用代理的行为


最后,本文你只需要关注的重点为:

  1. Goflyway、V2ray 等软件可以复活被墙IP 。
  2. 被墙IP有解封时间概念。
  3. 被墙IP的服务器,请关闭代理软件并不理服务器一段时间,有几率解封IP
  4. 被墙IP解封后,如果还要做代理,请更换代理软件,否则短时间内可能还会被墙。
  5. 墙可能会定期对被墙IP的服务器主动探测代理,所以必须关闭代理软件
  6. 日本 美国等热门地区服务器被墙几率更高,建议避开日本 美国热门地区

以上均为个人猜测(猜测+实验),不保证准确性,仅供参考。如发现不准确,请与 GFW 相关部门联系。

———— 本文章由 月下博客 战略合作伙伴 GFW 提供实验数据

转载请超链接注明:月下博客 » 关于目前 GFW(墙) 的封锁方式TCP封锁(阻断)猜想
责任声明:本站一切资源仅用作交流学习,请勿用作商业或违法行为!如造成任何后果,本站概不负责!