科学上网入门&基本网络知识科普

科学上网入门&基本网络知识科普



科学上网是一个永恒的话题……

在读本文之前,为了能让您的电脑脱离和谐的环境,请先卸载360危险安全系列软件。

自从第一次接触x片之后,这个问题就一直伴随着我……

或者说因为有了x片所以导致了我现在成为了一个geek……

 

言归正传,大概介绍一下各种翻墙技术吧。

目前常见的翻墙技术有:传统的VPN方式(Virtual Personal Network,虚拟个人网络);SOCKS5(比如如今如火如荼的ShadowSocks);GoAgent;https加密等。

如果算上广义的翻墙,也可以选择搞一个国外的服务器当做一个自己的电脑使用,直接远程桌面(有命令行基础的同学也可以使用命令行)到服务器,更安全更放心。

让我来讲讲以上这些东西的异同以及优缺点吧。

G♂F♀W使用以下几种方法让我们的世界和♂谐:

(啥?问我什么是GFW?算了洗洗睡吧)

1)DNS劫持/污染;

2)封锁IP;

3)链路层劫持,结果之一为返回虚假RST(Reset)包。

当我们连接到国际互联网时,我们肯定是要走我们的ISP(Internet Service Provider)的。他们给我们提供的互联网服务,所以在经过他们的道路时,他们有能力修改任何我们(本机客户端)和远端(远程服务端)的信息。

为了使上面的概念通俗易懂,我在这儿用一些例子来说明。

DNS的用途是将域名(人类比较好记的,如google.com, baidu.com。可以理解成信箱地址,比如“北京市万寿路27号信箱”)转换成IP地址(比如74.125.224.147,也就是比较难记住的门牌号,比如“北京市房山区XX镇XXX小区X区X号楼X单元XXX室”)。我往这个地址发信之后,准备获取它(服务器)给我回复的信息。GFW的一个功能是DNS劫持,也就是说将“北京市万寿路27号信箱”本来真正的映射地址“北京市房山区XX镇XXX小区X区X号楼X单元XXX室”改为一个并不存在的地方,比如“北京市南开区鞍山新村89号楼64单元”,然后我的电脑因为无法收到对方给我的信息,告诉我“我们无法从这个地方获取到你想要的信息”,这就是DNS劫持。

 

封锁IP比较好理解,就是禁止发信到指定门牌号,看到就拒收信件。就这么简单。

 

再说说链路层劫持。假设说我现在投递一封信给美国的朋友。我交给了中国的邮差(中国的ISP),之后中国的邮差会交给美国的邮差(美国的ISP)继续投递。但是,中国的邮差他们的品行素质不是那么好;他们喜欢偷偷拆开我的信,看里面有没有对他们不利的消息。如果里面有不利的消息,那么他们便会给我偷偷篡改掉信件的内容(链路层劫持)然后发给对方,或者告诉我查无此人(发送RST包)。有的时候中国的ISP也会在链路层干一些别的事儿,比如插广告——网络那头的收件人给回信了,这个邮差为了自己的利益于是在信最后加上了别人付费要求他打的广告,最后用户看见的是收件人回信+邮差做的广告。

于是,我们需要一些方法,让中国的邮差无法拆开我们的信件,或者拆开也无法读取:比如说用特殊材料制作信封使其只能用特定的锁打开(加密隧道,如VPN),或者让我们的信件用只有我和收件人知道的方法加密(加密内容,比如ShadowSocks/HTTPS)。

 

VPN 正如其名虚拟个人网络,其本来目的是为了能够让多个处于不同网络的电脑构成一个局域网,就像这些电脑真正地在同一个路由器下一样,拥有一个局域网IP地址。这个网络算是一个局域网,大家的电脑虽然物理上不在一起,但是他们在网络中是“在一起”的。这个时候,服务器就像家里的路由器一样,用户的一切流量都会从那里走。

于是乎,当用户连上VPN的时候,用户就跟那个服务器处于同一个网段,用户就相当于在国外有一个路由器,用户作为一个客户机属于这个路由器,便翻出去GFW了。本机所有流量都会从这个加密的隧道通过。

但是,GFW毕竟一年拿着不知道多少的经费,这点儿雕虫小技目前也是要完蛋。为了能够让VPN服务器认出来这是VPN,这个发送连接VPN的报文头部会遵循一定的标准(也就是信封遵循一定的标准)。为了不让用户连上VPN,ISP会直接向客户端(我)以及服务端(收件人)发送RST包(邮差告诉我查无此人,告诉远端收件人这封信发件人不寄了,同时欺骗两方)。因为现在的GFW已经能够识别出这种协议,所以导致这种翻墙方法逐渐日渐式微。但是翻墙率也是取决于用户的ISP——如果用户的邮差比较好,可能封都不封,直接该怎么给用户送过去就怎么给送过去(这点电信和联通比较靠谱);但是如果这个邮差就是贱(比如移动),那么看见这个信封立刻就告诉用户收件人查无此人。这个其实也是要看心情的(当前政♂治♀环♂境,比如18大时候就不太靠谱了)

 

下面让我们看看别的翻墙方法。

首先是最近常用的Shadowsocks(国内已被墙,请翻墙后访问)。这真心是个好东西。它使用的是SOCKS5协议,将支持这个协议的软件的流量转发到远程服务器上。用户可以选择加密方式,而且默认的加密方式是非常安全可靠的(AES-256)。但是这个东西有一个坏处:并不是所有的app都支持这个协议。但是目前无论是Mac版本还是Windows版本的Shadowsocks客户端均支持全局翻墙(其实Mac系统自带本功能,允许全系统的流量均经由SOCKS流向互联网。)但是,不越狱的iOS系统是不能使用全局翻墙的(没有root权限什么都白搭)。

其工作原理大概如下:我在我电脑上开启了一个SOCKS5路由,其功能是将我要发送给远端服务器的内容加密。这个程序将我的内容加密了之后发往远端的翻墙服务器。翻墙服务器进行了解码之后,再继续发送给真正的提供内容的服务器。

通俗一点解释:我有个机器能够帮我加密我要发送的内容。加密后,我将信放入普通的信封里面。邮差一如既往打开信封,但是看见里面东西看不懂,于是乎就重新封回去,交给在可靠位置的(墙外)自己的机器解码。自己的机器解码后将信交给当地邮差继续处理。

因为Shadowsocks没有特征,无法被GFW识别,于是乎成为了大家翻墙的不二之选。GFW对此暂时束手无策,唯一能干的就是限制不认识的包的流量。另外,由于Shadowsocks在本地存的配置文件为明文,所以某些无良厂商(我才不告诉你是奇虎公司的360系列软件呢)会搜索Shadowsocks的配置文件(里面包含服务器IP和密码等敏感信息),然后上报给☭,之后世界就可以和谐了呢~

 

GoAgent算是一个非常老的翻墙方法了。由于GoAgent很多服务器都是架设在谷歌的云上,而最近谷歌的云又被☭疯掉封掉了,于是GoAgent日渐式微。但是GoAgent其实不光可以架设在谷歌的云上,也可以架设在任何Linux服务器上,所以还是不会死的。其坏处是一般来说只支持指定的软件(比如安装了指定插件的Chrome或者Firefox),并不是所有软件都能支持。

 

HTTPS加密也是一个加密的方法。有两种方法,分别为访问的网站自己带HTTPS证书;或者是有部分网站会帮助用户抓取然后使用HTTPS协议加密这些东西传到本机上。HTTPS也是一种加密了信件的方法。HTTPS的好处是不容易被封锁(因为HTTPS是一个非常重要的协议,保证网购或者是账号不被链路层的人窃取是非常重要的。很多人连接免费Wi-Fi后各种网上账号被盗的原因之一就是因为这些网页没有https加密。),但是某些网站因为整个网站被禁,所以连不上去。

话说前两天GitHub(世界上最大的代码托管网站)有两个页面被GFW攻击了。这已经不是GitHub第一次被攻击了。上一次GitHub被攻击是使用的https证书中间人攻击,☭伪造了GitHub的https证书,然后进行了劫持。通俗点解释,就是☭假装成一个受信任的加密机器(事实上是一个大骗子,有点儿类似于小红帽里面吃掉了老奶奶的大灰狼说自己是老奶奶),说给用户加密(事实上加密了),但是加密后的内容他们是能够解开的。用户在上面输入了用户名和密码都会被☭截获。同理,iCloud也曾经受到过☭类似的攻击。正常的浏览器(IE/Firefox/Chrome/Safari等)都提示了这个证书不受信任(因为是自颁发证书),而某些无良厂商(我还是不会告诉你是奇虎公司的360危险安全浏览器呢)却告诉用户这个网页是安全的。事实上,我国的CNNIC(互联网主管机构)是有颁发受信任证书的权限的(浏览器里都会有一个列表,里面记载着谁颁发的证书是可信的,也就是白名单制度,除了这个白名单以外的人颁发的证书都被认为是不可信的。CNNIC有颁发受信任证书的权限),但是他们没有使用。GFW的攻击者给自己创造了一个证书,然后进行攻击。如果使用正常浏览器是不会出任何问题的。但是总有人使用360危险安全软件是吧……此事件以后,Chrome等浏览器厂商撤除了CNNIC作为一个可靠的颁发机构的权限。

最近的攻击大概是这样的:链路层劫持,墙外所有访问墙内拥有百度联盟广告(由百度作为广告服务商)的代码中,百度联盟广告代码都会被劫持到GitHub上的两个页面——GreatFire(反审查项目)和NYTimes-CN(纽约时报中文版)。因为墙外有大量中国网民,所以导致GitHub流量暴涨然后服务器无法承受这么大的压力。每一个墙外访问了这些网页的人都成了攻击的一份子。如果你在上网的时候收到了一个窗口提示“WARNING: malicious javascript detected on this domain”,那么你就成为了攻击的一份子(这种攻击叫做DDoS攻击,分布式阻断服务攻击,也就是大量流量洪水一般涌入服务器,导致服务器无法正常应对请求最终瘫痪),因为GFW强制替换了脚本。具体详情可看https://www.v2ex.com/t/179698

话说GitHub也不是第一次被弄瘫了——上次弄瘫痪是因为中国网民大量去GitHub下载12306抢票插件导致上的人太多了垮掉了……听说这次攻击之前,

说到12306,12306为啥总是提示证书无效呢?原因是他们自己创造了一个颁发机构,而这个机构是不受任何浏览器承认的。他们其实可以从CNNIC拿到很便宜的证书(几十人民币每年,那个时候CNNIC证书还是受到大家承认的),但是懒政思维放在那儿,也就没人愿意干了。

因为https的加密会导致GFW无法识别用户到底是访问敏感网页还是正常网页,所以有的时候GFW会封锁整个域名(比如谷歌就是;之前几年Wikipedia在国内也是,目前https已经解封;GitHub也被整个封锁过,但是因为国内各种大公司和各种开发者用这个用的太多了所以集体对工信部抗议,最后解封)

这个入门知识就讲这么多了。有啥问题么,就留言就好了……

明天还得两门期中考试呢……以后再写详细点儿……

11 Replies to “科学上网入门&基本网络知识科普”

  1. 博主你好,我是从b站的猫和老鼠那飞过来挖坟的。话说我记得G!F@W&好像是旁路而非干路吧,至于isp干了什么倒是不怎么清楚。个人觉得还是免费主机+GA最靠谱的说。当然美西VPS+ssh隧道什么的嘛|||,架的起来的话也不错呢。自从.co.cc消失了以后,我就已经放弃了我的个人主页了,博主你加油啊!!!

    1. 是旁路,的确是旁路。
      现在用的Shadowsocks,还是相当稳定的~
      竟然有人愿意从那里来看我的博客,真是相当感动啊!
      总之,就是给小白大概讲讲……肯定不明白什么是旁路什么是干路啊……
      主要是马上新一届的同学们要来学校了,都要来美国上学了还不知道如何翻墙你说咋办……
      只能写点儿文章科普……
      对了,我的新作品发布了~欢迎看~高级弹幕比赛~
      http://www.bilibili.com/video/av2594921/

      谢谢支持!

Leave a Reply

Your email address will not be published. Required fields are marked *