浅谈魔法上网的那些事

写在前面

相信有无数的墙内同胞会因为种种原因接触上魔法上网,甚至铤而走险使用这种违法的技术浏览违法的或者合法的网站。在此就聊聊有关这项技术背后的历史和实现原理。

开篇–那些互联网的历史

中国互联网的诞生

作为一个00后,我诞生于中国互联网出现后,对于开篇,我也只是从长辈那道听途说。
中国互联网诞生于1994年,据说当时上网很麻烦,装“猫”都老费劲了。我的一位高中信息技术老师说,他当年接触互联网时,花了几天时间就把中国的网站看了个遍。
同样作为00后,我错过了网上冲浪的时代,我也错过了论坛、博客兴盛的时代,我接触中国互联网是在08年左右,但我还小,懂个屁。

网络审查的兴起

网络审查制度随着中国互联网的诞生而来,但并非一开始就如当下一般。
网络审查粗略分为两块:
一、中国大陆境内的内部审查:企业和个人需要遵守中国的法律法规,自觉过滤掉政府不希望出现的内容,违规的企业或个人将会受到处罚。(这不是我要说的重点)
二、部署在中国网络国际出口的境外信息过滤机制(GFW)
记得当年和我爹说过百度的好,认为谷歌不好用,在那个不用魔法上网就能使用谷歌搜索的年代,我甚至不喜欢谷歌,更爱百度。回想起来真是想给自己几个大嘴巴子······
2014年5月27日,谷歌正式和中国普通网民说再见。正是在这年后,我开始慢慢探索向那些我不被允许访问的网站。

道高一尺魔高一丈

随着网络审查制度的不断强化和完善,一部分人迫切的希望访问那些不存在的网站,所以希望使用魔法上网的方式站到墙头看看。

传统艺能————VPN

虚拟私人网络(英语:Virtual Private Network,缩写:VPN)是一种常用于连接中、大型企业或团体与团体间的私人网络的通讯方法。它利用隧道协议(Tunneling Protocol)来达到发送端认证、消息保密与准确性等功能。 ——wiki

这是早期登上墙头的常用方法,也是目前一些企业正大光明上墙的办法(备案审批)。其诞生的目的是为了通信的安全而非网络审查。
这种通信方式很安全,但对于上墙有明显缺陷————流量特征过于明显。由于传统的VPN有这一特性所以很快便被墙精准识别了。

后起之秀,当代明星————Shadowsocks类基于socks5代理的协议

2012年4月20日,Shadowsocks出现在广大人民群众的视线中, 但很快在15年原作者被迫删除了项目仓库,得益于git的特性,Shadowsocks在其他志愿者的努力下不断继续前进和发展,并延伸出了v2ray、ssr、trojan这些新的衍生协议。
今日,这批协议仍是大量上墙者在使用且推荐使用的。

浅析软件原理、科普互联网知识

首先我们要了解当我们在上网时我们的机器在干什么,以我在浏览器中访问谷歌为例

无审查环节的访问

在没有网络审查的环境中,当我在浏览器中输入谷歌的域名www.google.com
我的电脑知道了我要访问这个网站,但电脑不知道这个域名背后的IP地址(相当于某人的门牌号)所以要向DNS服务器(相当于当今的缺德地图或是电话黄页)查询这个网址背后的IP地址


DNS服务器收到请求,并将结果返回给我的电脑


解决了要去哪的问题,接下去就是把数据包发向谷歌的服务器了


数据包经过路由器到达外网——到达骨干网——经过国际互联网出口再向对应服务器去


谷歌的服务器收到了我的请求,向我发送网页的数据包,经国际互联网再返回我的电脑,我的电脑中的浏览器将网页呈现在我的面前

有网络审查无魔法上网

有网络审查之后其实就多一步,国际出口处加装了GFW,此时流量在通过国际出口时,由于谷歌的IP被列入了黑名单,所以访问将直接被阻断。
当然,也远不止这个手段。除此之外,审查机制会要求国内的DNS服务器将查询黑名单域名的请求返回错误地址(例如你问我张三的电话但我有意无意地告诉你李四的电话)。同时由于普通的DNS查询时不加密的,且使用udp协议,谁先发回数据就听谁的,所以如果你选用国外的DNS服务器进行查询,墙也能第一时间知道并抢答。还有数据包明文匹配————如果你的信息未经加密且含有其不允许查询的关键字也将阻断访问

有网络审查有魔法上网

这里就要分开说了

传统VPN

VPN思路很简单,我是为了信息安全而生的,主要任务就是加密数据。开始的时候墙还没有那么厉害,以为数据加密监测不到关键字所以也就放过了VPN的流量,但由于这种方式有非常明显的流量特征所以被精准识别了。

Shadowsocks类

这类基于socks5代理的穿透工具的鼻祖是Shadowsocks,框架差不多,都是由其发展而来
类Shadowsocks协议与传统VPN不同在于它的代理方式是:
客户端


本地服务器(可以是在客户端上安装的软件或如网关上安装的软件)


远程服务器
中间多了一个本地的服务器,同时针对墙的识别方式对流量形式上做了优化

Shadowsocks

这是老祖宗,目前依然很稳,许多机场也都提供服务。目前已经发展得非常成熟了。
同时它在速度和延迟上都有着不俗的表现,游戏加速利器。(前提是你的游戏流量能过代理。)

ShadowsocksR

Shadowsocks的一个变种,极富争议,具体自行谷歌。

ProjectV

还有一个比较熟悉的名字叫v2ray,但正确的叫法是projectV。准确的说这不是一个协议,而是一套工具,整合了一堆乱七八糟的协议,其诞生的目的就是为了突破网络封锁,缺点是很难配置(目前有很多懒人脚本可以帮助部署),需要有一定基础知识才能理解配置的含义(都一样)。vmess协议也是目前比较主流的类Shadowsocks协议,其流量伪装的特性极大提高了隐匿程度(只是相对而言),同时ws+tls外套cdn的套娃方法可以复活被墙节点,功能十分强大。
这里着重介绍ws+tls:
说白了就是伪装为正常的https流量,ws一层加密再套上tls一层加密,你还可以加个cdn层层套娃,很大程度上降低流量被识别的可能。(不是100%不会被墙)
同时正是因为这种套娃的形式所以大大增加了访问延迟,也加大了对服务端和客户端算力的要求。

trojan

一个新兴的协议,方式和vmess的ws+tls有些类似,但它少了ws的加密,访问延迟和负载上较ws+tls好不少,同时部署也更为方便。缺点是不方便用ngnix。

个人的猜想

首先我们知道了,每逢重大会议或“六月大扫除”墙都会拔高一截,有些机场被打的死去活来,选择自建的小伙伴也非常惨,但依然有些人能毫无阻碍的使用。
所以这里我们要做一个假设。
假设墙还无法做到对类Shadowsocks协议的精准识别
从上面我们知道了,只是力度大了而已,而非完全封锁,所以可以猜测墙还无法做到精准识别。
既然识别算法上有缺陷,那么必定会通过行为的分析,对流量进行判定。
比如我使用trojan,从协议上来看无懈可击,完全就是伪装成了一个普通的https流量,但如果24小时都连接着,那么就显得非常不正常没人会一天到晚盯着一个网站看,而且流量还那么大。所以我推测如果表现的很不正常,一样会触发墙的判定。
按照这个思路,我们再往回思考,除了做到协议的无懈可击外,我们还可以在客户端和服务端入手,让我们的流量看着更普通。
服务端上,可以用v2ray,同时真的在vps上搭建真正的网站(例如云盘或者流媒体服务),同时将就伪装为访问这个网站的流量,这样可以让流量看着非常正常,因为表面上它确实就是在看这个网站。
客户端方面,保证不长时间的链接,同时流量尽量不要过大。最好是多台服务器配合clash使用,clash自动选择节点可以将流量分散到各个节点,也保证了不长时间连接各个节点,更大程度上流量会显得更为正常。
以上,仅仅只是猜测。
万一人家真的只是不想管呢?


浅谈魔法上网的那些事
https://blog.xianyu.one/2020/05/27/cyber-security/
作者
咸鱼
发布于
2020年5月27日
许可协议