GFW是如何阻止我们访问境外网站的?

来源:互联网 发布:核动力研究设计院知乎 编辑:程序博客网 时间:2024/06/09 23:58
从技术角度来看,GFW是如何阻止我们访问境外网站的?
什么是GFW?

Great Firewall,即防火长城。
由 于资本主义国家网络上有大量毒害国人身心健康的内容,所以大陆的网络上有着一套监控和过滤互联网内容的系统,它的作用主要是监控网络上的通讯,对认为不符 合中国官方要求的传输内容,进行干扰、阻断、屏蔽。 其中比较著名的网站包括(Facebook, Google全系列服务, Youtube,Twitter等)。

网友所說的「被墙」即指被防火長城所屏蔽;「翻墙」即是指通过一定的手段突破此限制。

什么是DNS?

关于DNS是什么,我在以前发的一篇文章讲过,这里再简单解释下:我们访问每一个网站最终都是通过IP地址去访问的,但IP地址一串数字不好记,所以我们有了域名比如baidu.com,DNS的作用就是负责将域名“翻译”为IP地址。

什么是DNS污染?

上面说到了我们是通过IP地址去访问网站的,如果DNS给你“翻译”成一个错误的IP地址,是不是就无法找到这个网站了呢?这就是DNS污染的症状:解析出错误的IP地址,用浏览器访问时显示“连接超时或找不到服务器”。

但是,正常的DNS服务器都是老实人,只要他知道就一定会告诉你真实的IP。之所以我们解析出了错误的IP,是因为有人把这返回的正确答案调包了!凶手就是我们的ISP(互联网服务提供商)或GFW,它们冒充成正常的DNS服务器给我们发了错误的IP。

你可能有疑问,为什么我们无法自动识别出这些挨千刀的家伙?

(PS:暂时想不出这俩协议比较生动的例子,大家尽力理解)

这是因为我们的DNS请求默认使用的是:UDP协议。UDP的一个主要特点就是:不保证传递可靠性,不管是否到达目标,只管发出去了就好,所以它容易被中途遭坏人劫持,并且难以被发现。GFW就基于此,拦截了正常的UDP包,调包后把错误的UDP包传给了用户。 而用户这边,我们会接受最先到达的查询结果,并丢弃之后的结果,所以我们的浏览器果断中毒身亡,显示“连接超时或找不到服务器”。

如何防止DNS污染?

传统方法:

1.VPN、代理服务器等通用翻墙方法

设我们是A,目标网站是C。虽然我们无法直接访问C,但是有个家伙B可以访问C,那么我们就可以以B作为传输通道与网站C进行联系,B就是我们的代理服务器。
缺点:严重依赖于代理服务器的状态,而且由于中间多了许多步骤,传输速率往往非常慢。

2.修改Hosts文件 
这相当于把真实的IP记录在自己的小本本上,所以不用经过DNS查询,直接通过小本本上的IP进行访问。换而言之,你需要自己手动维护这个小本本。
缺点:灵活性差,使用不便。如果网站IP发生改变,或者以前使用的IP被禁止访问了,你都需要对hosts文件进行修改。

新思路:

既然我们访问不了网站的原因是因为DNS受到了污染,那么我们有办法做到不被污染吗?

有的,DNS协议同样可以由TCP协议传输。而TCP协议是有连接协议,可以简单理解为与UDP具有相反的特点:保证传递可靠性。
因此如果使用通过TCP的DNS解析服务,就可以应对GFW的DNS污染了。

 

题外话: 
最近非常流行DNS劫持攻击,通过修改你路由器的DNS到黑客指定的服务器,那么黑客就可以控制你所有的访问。比如在你访问QQ空间的时候,被劫持到一个黑客伪造的空间页面中并出来一个登陆框要求你登陆,你输入了帐号密码就……
比较可怕的是这一切可以做到让你毫无察觉。

 


0 0
原创粉丝点击