转载:Shadowsocks是如何被检测和封锁的

四、如何规避针对Shadowsocks的封锁?

GFW对于Shadowsocks的检测需要两步:

第一步,被动监测并识别疑似Shadowsocks的连接。

第二步,主动探测疑似Shadowsocks的服务器

因此,为避免封锁,我们可以(1)设法避免被监测模块怀疑到,或者(2)让服务器以不被怀疑的方式回应主动探测。我们将展示如何通过安装改变数据包大小的软件来达到目标(1)。

Brdgrd是一款可以被安装在Shadowsocks服务器上,从而导致Shadowsocks客服端发送较小的数据包的软件。它设计之初衷是用来干扰GFW识别Tor节点,因为它迫使GFW在检测之前首先对TCP流进行复杂的重组。但这里我们利用它可以改变从客户端到服务器的数据包大小的功能。改变数据包的大小可以干扰流量识别环节,从而在极大程度上缓解主动探测。

Shadowsocks是如何被检测和封锁的

上图显示了一个受到主动探测的Shadowsocks服务器,在开启brdgrd后的数小时内不再收到主动探测。而当我们关闭brdgrd,主动探测立刻继续。我们第二次开启brdgrd,主动探测在之后的40小时里完全停止,但之后又有些许主动探测。

另一组实验显示,在第一次运行Shadowsocks之初就启用brdgrd也许更加的有效。

Brdgrd的原理是将TCP Window Size改写为一个小得罕见的值。因此,审查者可能可以检测出brdgrd被使用了。因此,尽管brdgrd可以在现阶段有效的减少主动探测,其不能被看作是一个一劳永逸的解决方案。

五、尚未解决的问题

尽管我们已经清楚GFW会主动探测Shadowsocks服务器,我们仍不清楚主动探测与Shadowsocks服务器被封之间的关系。我们有33组Shadowsocks服务器分布于世界各地。尽管它们中的大多数都遭受到了大量的主动探测,但是仅有3台服务器被封锁。更有趣的是,其中一台被封锁的服务器只被使用了很短的一段时间,因此受到的主动探测数量应该比很多未被封锁的服务器要少得多。

我们提出3种假设试图解释这一有趣的现象:

Shadowsocks服务器的封锁是由人为的因素控制的。也就是说,GFW也许维护了一份在不同程度上被怀疑为Shadowsocks服务器的清单,然后根据人工因素来决定对服务器进行封锁还是解封。这一假设可以解释为什么更多的服务器是在特殊敏感时期被封锁的。

另一个假设是GFW的主动探测对于一些我们实验采用的Shadowsocks实现无效。确实,我们被封锁的那3台服务器都是使用了与其他实验中的Shadowsocks不同的实现。如果GFW是根据某些Shadowsocks服务器实现对主动探测的特有反应来识别判断的话,那么这一假设更有可能为真。

第三个假设是对于Shadowsocks的封锁在地理上存在着不一致性。我们被封锁的那3台服务器所在的数据中心不同于其他大多数实验,使用的客服端也是位于一般的居民网络,而非数据中心。如果GFW更注意属于某些数据中心的IP地址,抑或更注意来自一般居民网络的客户端连接,那么这一假设更有可能为真。

六、致谢

我们想在此感谢以下人员对此主题的讨论和研究:

Shadowsocks-libev的开发者们

Vinicius Fortuna以及来自Jigsaw的Outline VPN开发者们

Eric Wustrow以及其他多名来自科罗拉多大学博尔德分校的研究人员

 

本文转载自网络,仅供技术学习。若遇版权问题,可联系删除。

波波
  • 版权声明: 本文源自 互联网, 于9个月前,由整理发表,共 4592字。
  • 原文链接:点此查看原文
你想把广告放到这里吗?

发表评论

您必须 登录 才能发表留言!