科学上网主要有两大类:“翻墙”和“穿墙”。“翻墙”主要方式是代理、VPN,需要国外代理服务器,“穿墙”则是读懂GFW的特性,使用特殊方式使得GFW的屏蔽失效。
“翻墙”受代理服务器连接速度的制约,一个日本代理对于东部沿海城市,一个香港代理对于南方城市来说一般速度较好,而最为常见的美国代理往往速度堪忧,毕竟在地球另一边。
而“穿墙”混淆了GFW使得它无法无法屏蔽你的连接,是直连站点的服务器了,通常速度较好,但毕竟能“穿”的站点有限,许多站点光“穿墙”是不行的,因此有许多科学上网工具采用了“穿”、“翻”结合的方式。
穿墙:
1、hosts
原理:GFW的封锁策略中,对启用了cdn的站点不可能进行简单的封IP策略,多采用劫持、污染DNS记录、HTTP阻断、HTTPS干扰等各种方式,个别IP被封锁也是有的。Google、facebook等这类站点,通过DNS查询获取的IP通常位于香港或者美国,而这些IP有不少要么被封、要么速度慢,有的干脆GFW没封锁你也连不上,而修改hosts,就是将这类站点的域名,指向国内服务器、或者国外没有被封、速度尚可的服务器。这样就可以直接避免了GFW的干扰完成“穿墙”。
优点:“穿墙”速度较好,对于google部分站点,是有国内服务器的,甚至可以获得更快的速度。
缺点:google、facebook这些站点通常服务器非常多,采用了CDN,本来通过DNS查询后会连到他们的CDN服务器上,再根据你的地理位置、服务器状态等情况为你跳出一个相对优质的服务器。然而hosts只能选择固定的服务器,你会发现有些网络条件下,诸如smart hosts之类的列表中的IP很多根本就ping不通,导致你无法连接某些服务器,而且不同ISP,不同地区,情况都不同。加上这些服务器老在变,你必须经常更新你的hosts,否则哪天可能网站就上不了了,非常的不便。导致一个hosts难以解决全国各地的需求。
2、流量混淆
原理:其实是加密的一种,只不过这种加密会导致流量所使用的协议都会变得难以分辨,使得GFW无法识别你是使用了HTTPS还是OpenVPN还是说其他的协议类型。局限性较大,需要服务器支持,通常与其他翻墙类科学上网方式相结合,达成防GFW阻断的功能,不单一使用,不再赘述。
3、加密协议
原理:使用加密的协议来进行数据传输,通常针对GFW的关键字审查。加密后的数据GFW无法进行关键字审查,从而避免GFW的连接重置阻断。网页服务通常使用HTTPS协议(SSL加密),而其他软件不少也有自己的自定义加密连接协议。常见的例子是使用 https://www.google.com/ 来进行搜索避免搜索某些敏感关键字时候遭遇连接重置,类似的还有维基百科。chrome浏览器可使用hsts功能强制开启站点的https。
优点:非常直接的穿墙方式,同样是直连,如果能连上的话,速度有保障。
缺点:局限性较大,一是服务器可能不支持HTTPS,二是GFW会特殊照顾一些名气较大的站点,这些站点你开了HTTPS照样会被阻断。
翻墙
1、普通HTTP/socks代理
最常见的代理方式了,利用HTTP,socks等方式进行代理,应用非常广泛,远不止科学上网领域。然而这种连接方式未经加密,依然会遭遇连接重置,基本是完全暴露给GFW,不适合目前的网络环境,随时可能挂掉。
2、变式HTTP/socks代理
这是目前主流的翻墙方式,使用自家协议防止GFW简单识别代理协议并阻断,并且可以使用AES等加密方式加密流量来进行代理,比较出名的有goagent和shadowsocks。
goagent比较特殊,利用Google App Engine(GAE)来做代理服务器,利用了GFW不可能封杀GAE但GAE却可以直连被墙站点的特性。GAE的特性也决定了其速度相当不错,而goagent封装的代理数据包在多数地区就算未加密也没有收到干扰可以无障碍通讯。部分地区可能需要加密数据。
优点:使用谷歌服务器代理,速度快,较稳定。通过代理上网的用户可以配置二级代理也可以翻墙。
缺点:部署略繁琐,受限于GAE,HTTP代理没有问题可是不能实现HTTPS代理,只能采用了伪HTTPS代理,导致必须导入其根证书。安卓下的客户端不是很好用。看网页尚可,其他应用用了自己协议的就有很多无法代理了。
而shadowsocks则是一款轻量级socks5代理,在安卓机子上很出名。使用Linux服务器做代理,必须有国外代理服务器,手机版提供了一个公共代理,速度尚可。
优点:使用完整Linux服务器代理而不是GAE这种功能受限的Web host,shadowsocks可以完整代理你所有类型的流量。跨平台,主流操作系统均有支持的客户端。
缺点:受限于代理服务器的连接速度,除非你使用离你所在地距离较近的国外代理服务器,否则速度上很难达到goagent的速度。
3、混合式代理
这类的代表就是fqrouter,穿墙加翻墙,用到了上面提到的所有方式。穿墙用了流量混淆和类似hosts的技术,翻墙则混用了goagent和shadowsocks,能走goagent的走goagent,HTTPS之类的不能走的走shadowsocks。fqroutwr不使用goagent的伪HTTPS代理。
fqrouter提供了不少公共goagent和shadowsocks代理,并智能判断是否走代理,能直连的直连。简单易用。你也可以添加自己的代理,goagent、shadowsocks、其他HTTP代理都可以添加
优点:混用多种方案,可解决大多数被墙网站,速度较快,稳定
缺点:方式较复杂,虽然效果好但耗电量会大些;只有安卓版;客户端不支持二级代理,可能需要借助第三方软件才能实现。
当然,通过对代理管理软件的配置,自己也能配置出混合代理方式。见这篇文章
4、VPN
这个算是终极方案了,在代理无效的情况下,利用VPN技术进行翻墙。
优点:如果连接没有问题,几乎可以解决任何被墙站点的访问问题。
缺点:许多VPN只在Windows/Linux下有客户端,对于android、ios的支持不是很好。
GFW对于VPN的封杀无时无刻不在进行,最典型的就是GFW早已可以准确识别OpenVPN,原理是利用协议在握手阶段的某些特征来检测,从而可以达成瞬间阻断OpenVPN连接,很有可能你连第一次连接都连不上就被检测到了。而且这还没完,你胆敢用OpenVPN的后果,就是服务器IP立马被照顾,所有不能被识别的加密流量均会被阻断。我就尝试在自己的VPS上部署了一次OpenVPN,然后连不上,接着第二天发现自己部署在VPS上的shadowsocks也连不上了。能连上的加密协议只有SSH、HTTPS(SSL)这类,无奈最终换IP,还好提供商的snapshot功能很好用,很快就搞好了。
所以现在使用VPN,不能使用原生的OpenVPN。必须使用变式的OpenVPN或者其他类的VPN软件。比如说给流量做混淆,再比如使用GFW目前无法识别的VPN,比如:SoftEther VPN(见这篇文章)
VPN很多都是收费的因为要购买服务器,而且很多都是美国VPN速度不怎么样。收费VPN也购买过一些小公司搞的便宜的VPN,网络质量多数不是太好,速度一般,国外有不少大一点的VPN提供商,质量好些但是普遍都比较贵。
而免费的VPN里,VPN GATE是个不错的选择,全球分布式VPN,速度很快。也有人用地下铁之类的,我没用过不知道怎么样,不做讨论了。
GFW对于VPN是坚决封杀的,目前引入的流量检测技术,识别流量类型,导致很多VPN都跪了。加之目前的“有罪推定”这一蛋疼的方式,导致一切加密手段都变成了浮云。无论你使用多复杂的加密手段都没用,GFW会认为所有他认不出来的加密浏览都是“犯罪嫌疑人”,并对这些流量进行监控。如果满足一定的条件,GFW将会判定“罪名成立”并处“暂时截断所有不能识别的加密浏览”等类似处罚,也就是“死缓”,如果屡教不改者判以“死刑立即执行”,予以永久封IP处罚。
总之能代理就先代理,代理不行再挂VPN,VPN要少用,万一被检测出来,后果很严重。。说不定你花钱买的VPN就这么跪了,钱就白瞎进去了。
引用: 在VPS(DigitalOcean)上搭建shadowsocks来科学上网的教程 – goldfish的小窝
引用: 你是Socket,我是HTTP Proxy – My X Files