2010年5月5日星期三

今夜无人入眠


北京时间今晚午夜,全球十三个根域名服务器的最后一台将完成 DNSSEC 部署。想要知道这是在干什么,先学习一下什么叫做“地址投毒”,这里还有这里。我来换个通俗的说法:

你的地址本(hosts file)容量有限,手工更新也麻烦,去不认识的地方你常需要问别人。你可以问本村的村长(DNS provided by ISP),村长有私心,他知道但不一定告诉你。比方说你要问他信访办的地址他肯定不能告诉你 —— 他干的亏心事太多,怕你检举他呀。于是你试着问村外的人(OpenDNS, Google DNS, etc.)。但你和别人所有的谈话村长都在一旁偷听,不光偷听,在还总抢在别人回答前冒充对方给你个错误的地址。

如何证明村长在偷听?用这篇文章给出的方法,我们来作个简单的实验。打开一个命令行窗口,把下面的命令执行多次:

nslookup -type=A www.youtube.com 129.42.17.103

“129.42.17.103” 是一个不存在的 DNS 服务器(可以把这个地址换成一个其它同样没有 DNS 服务的 IP 地址,效果是一样的)。在墙外执行这个语句不会有返回,而在墙里不但有返回,而且每次的结果还不一样。

“www.youtube.com” 是一个村长不想让你知道地址,不管你问谁这个地址在哪儿,哪怕去问一条狗,心虚的村长都会在对方答话前抢答。鉴于你问的是一条傻狗,正常结果应该是它根本不理你。而现在,你刚问完话,就听见狗叫,你再问同样的问题,狗又叫但叫声和上次不同。至此可以断定,叫声不是来自你问的那条狗,而是村长在学狗叫。而如果把以上命令里的敏感地址换成比如 “www.sina.com.cn” 这样村长认为安全的地址,这回村长就不叫了(当然傻狗也不会回答你)。


DNSSEC
的工作就是要给村长冒充别人说话制造一点困难。接下来根服务器以下的 DNS 服务器也会引入这一技术,用户要做的事就是找一台墙外的 DNS 服务器,设好 IPSEC 和 CA 认证。步骤比较麻烦,不同操作系统方法也不一样,相信不久就会有图文攻略出炉,跟着做就是。

村长那边的最新动向只许我学狗叫鸡叫,村民放个屁都要实名制。以便必要时可按“泄漏机密”或“危害安全”罪给放屁者以惩治。

村中屁民对此条令的反应大概是 ————


翻去年春夏之交的饭否记录,热词之一是“绿坝”,那个夏天没过完,饭否就没了。道消魔长,情况一天比一天糟,但我们总算守住了一城,不是么?

6 条评论:

Freeman 说...

大中华局域网万岁,千秋万载,一统江湖!

herolee 说...

我等屁民只能喊一句:草泥马

虚冥 说...

写得好。

Unknown 说...

讲得好,我了解了。
万岁,万岁,万岁。

匿名 说...

nslookup命令处应使用 www.youtube.com. 作为参数,也就是域名最后有个“."结尾,这样严谨点。当然不加的话也会得到类似的结果。

geoxia 说...

谢谢楼上的指正。

文中方法完全照抄自 GFWrev 去年的一篇旧文,有意思的是这个"."的疏忽是 GFW 的管理员造成的。严谨的原著者发现:

“匹配规则方面,GFW进行的是子串匹配而不是精确匹配,并且GFW实际上是先将域名转换为字符串进行匹配的...因此,事实上就可以观察到,对www.youtube.coma的查询也被劫持了。”