2014年1月21日中国互联网DNS瘫痪事件原因分析
这一天,全国的互联网都瘫了。百度、新浪等等,什么网站都打不开。这么大范围的严重的事故真的让人瞠目结舌,目瞪口呆,我以为被是美国黑客入侵了。事实嘛……。
什么是DNS?DNS的全称叫域名解析系统,是互联网的一个基础设施。它就像一个电话本,你说你要访问哪个网站,它就负责把这个网站的域名(如www.baidu.com)翻译成一串数字告诉你。然后你的电脑就拿着这串数字去呼叫。这串数字,行话叫IP地址。
今天下午的事故是,这个电话本坏了。它返回的结果是错的。不管你查询什么域名,它返回的结果都是同一串数字:“65.49.2.178”。而这个IP地址其实是未知的。你可以设想下,你打开手机,无论播哪个电话,结果都是的未知在接听(实际上你只能听到忙音,因为大家都在访问这个),哈…… 今天下午的中国互联网就是这么让全世界贻笑大方。
错误的细节:
为了搞清楚到底是怎么回事,有必要把事情的经过从头捋一遍。
当我打开浏览器,输入www.baidu.com,按下回车之后,正常流程应该是这样:
1. 浏览器把www.baidu.com这个字符串发给北京联通的DNS服务器,问它这个到底该对应哪个IP
2. 北京联通DNS服务器也不知道哇,于是它先查看自己的缓存,基本上缓存里有就直接返回缓存里的地址. 但是缓存是有期限的一般设置是12小时,如果超过12小时就去问root-servers.net:”www.baidu.com的IP现在是多少?”。root-servers.net我们称为根域名服务器,在全球有13组,每组很多台,它们是整个互联网的域名系统的老大,中央常委!root-servers.net说:“你去问我下属,gtld-servers.net。”
3. 于是北京联通DNS服务器去问gtld-servers.net:”www.baidu.com的IP是多少?”,gtld-servers.net说:”你去问dns.baidu.com,这是百度的域名服务器,它负责管这个”。
4. 于是北京联通DNS服务器去问dns.baidu.com:”www.baidu.com的IP是多少?” dns.baidu.com说:”是119.75.218.77。”
5. 于是北京联通告诉我:”是119.75.218.77“。
那今天下午实际上是怎样呢?
1. 浏览器把www.baidu.com这个字符串发给北京联通的DNS服务器,问它这个到底该对应哪个IP
2. 北京联通DNS服务器也不知道哇,于是它就去问root-servers.net:”www.baidu.com的IP是多少?”。root-servers.net说:”是65.49.2.178“
3. 北京联通告诉我:”是65.49.2.178”
这中间省去了很多必须有的步骤。我给你打个比方吧:你问温家宝,“那个,新余市实验二中高三6班班主任电话是多少,我找他有点事”。然后温总立刻就说了一串数字告诉你了。你信吗?
出错的原因?
为什么我们得到一个虚假的结果?只有两种可能:
1. root-servers.net服务器本身出错了,或者被黑客入侵了。
2. 有人劫持了北京联通DNS服务器与root-servers.net之间的数据通信,并伪造了答复。
第一条可能性不大,因为root-servers.net负责指挥全世界所有的DNS服务器。它们一旦发生问题,全球的互联网都会瘫痪。所以它们的安全级别极高。并且实际上,这次嗷嗷叫的只有在大陆中国人。国际社会上毫无动静。
所以我就把注意力集中到了第二条。能在全国范围内,密不透风的大规模伪造DNS应答?谁有这能力? 接着我发现这种手法有点眼熟。
你知道你为什么上不去youtube吗?
1. 浏览器把www.youtube.com这个字符串发给北京联通的DNS服务器,问它这个到底该对应哪个IP
2. 北京联通DNS服务器也不知道哇,于是它就去问root-servers.net:”www.youtube.com的IP是多少?”。
3. 有人劫持了北京联通DNS服务器和root-servers.net之间的通信,并伪造答复说:”是203.98.7.65“
4. 北京联通告诉我:”是203.98.7.65”
5. 然后我电脑去连接203.98.7.65,发现根本连不上,因为这数字是错的。
但这中间有个破绽,应答时间。root-servers.net因为位于国外,所以一问一答要在路上走很长时间。而骗子由于就在国内,所以它答复速度要比真实服务器快很多。在我机器上测试,就是0.1秒与5秒的区别,肉眼都能分出来真假…… 最终我测试发现,从每一个细节上,这两个骗子的手法都完全一致,连应答时间都一致。
这次全国性的断网事件,毫无疑问是某墙导致的。
65.49.2.178隶属于某组织的证据:
我们可以公开查到,65.49.2.178属于美国HE公司。根据HE公司的记录,它把65.49.2.1-65.49.2.255这些IP租给了一家叫做Sophidea, Inc.的公司。再查一下这些IP下的具体域名,赫然发现,有一个叫ultrasurf.us的网站,就是著名的翻墙软件,“无界浏览器”。
(上表来源:http://bgp.he.net/net/65.49.2.0/24#_dns)