IT技术博客大学习 共学习 共进步

2014年1月21日中国互联网DNS瘫痪事件原因分析

A programmer's life 2014-05-11 21:28:23 浏览 8,223 次

   2014年1月21日下午,全国的互联网都瘫了。百度、新浪等等,什么网站都打不开。这么大范围的严重的事故真的让人瞠目结舌,我以为被是美国黑客入侵了。事实嘛……你听我慢慢说来。

   什么是DNS?DNS的全称叫域名解析系统,是互联网的一个基础设施。它就像一个电话本,你说你要访问哪个网站,它就负责把这个网站的域名(如www.baidu.com)翻译成一串数字告诉你。然后你的电脑就拿着这串数字去呼叫。这串数字,行话叫IP地址。

   今天下午的事故是,这个电话本坏了。它返回的结果是错的。不管你查询什么域名,它返回的结果都是同一串数字:“65.49.2.178”。而这个IP地址其实是法轮功的。你可以设想下,你打开手机,无论播哪个电话,结果都是法轮功的学员在接听,哈哈哈哈…… 今天下午的中国互联网就是这么搞笑。

   错误的细节:

   为了搞清楚到底是怎么回事,有必要把事情的经过从头捋一遍。

   当我打开浏览器,输入www.baidu.com,按下回车之后,正常流程应该是这样:

   1. 浏览器把www.baidu.com这个字符串发给北京联通的DNS服务器,问它这个到底该对应哪个IP

   2. 北京联通DNS服务器也不知道哇,于是它就去问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之间的通信,并伪造答复说:”是159.106.121.75“

   4. 北京联通告诉我:”是159.106.121.75”

   5. 然后我电脑去连接159.106.121.75,发现根本连不上,因为这数字是错的。

   但这中间有个破绽,应答时间。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的网站,就是著名的翻墙软件,“无界浏览器”。法轮功开发的。

IPPTRA
65.49.2.9 ultrasurf.us, ultrasurfing.com, wujieliulan.com
65.49.2.10 blogwujie.com, wujieblog.com
65.49.2.13 cbzs.info, jqzx.info
65.49.2.28 feitian-california.org
65.49.2.29 symail.org, synewsletter.com
65.49.2.41 epochdaily.com
65.49.2.101 bet888win.com, clgtchat.com, crystalprofit.net, eachother.biz,
eva-funds.biz,freeantiddos.com, kaplan-properties.com,
lizafund.com, profit-finance.com,proxy1.idealhosting.org,
proxy2.idealhosting.org, rekario.com, texinkarbotu.com,
torrenubosa.com
65.49.2.112 ns1.freeantiddos.com
65.49.2.114 ns2.freeantiddos.com
65.49.2.153 dns.chinese1.org
65.49.2.208 fgmtv.org
65.49.2.216 fgmtv.net, hotdownload.org
65.49.2.247 pudumail.com, shenyunmail.org, sycircle.com
65.49.2.253 weiboleak.com

   (上表来源:http://bgp.he.net/net/65.49.2.0/24#_dns)

建议继续学习

  1. 自建DNS以防止GFW干扰 (阅读 12,945)
  2. 强制刷新本地 DNS 缓存记录 (阅读 10,642)
  3. 关于 SOCKS 代理的远端 DNS 解析 (阅读 7,745)
  4. DNS 隧道 (阅读 7,023)
  5. 什么是DNS劫持和DNS污染? (阅读 6,104)
  6. DNS解析过程及DNS TTL值 (阅读 5,903)
  7. CentOS下通过Webmin管理BIND实现DNS轮询 (阅读 5,762)
  8. dig挖出DNS的秘密 (阅读 5,620)
  9. nslookup通往DNS的桥梁 (阅读 5,622)
  10. public DNS servers (阅读 5,241)