史海钩沉
那一次,Verisign 抢注了所有的 .com 和 .net 域名
20多年前,Verisign 做了一件非常邪恶的事情:他们实际上抢注了 .com 和 .net 顶级域名中所有未注册的域名。他们之所以能做到这一点,是因为他们从注册处控制了这些域名,而且让它们解析起来很容易。
像我这样的系统管理员和反垃圾邮件人士的反应是迅速而一致的,因为它造成了很多附带的损害。这里有一个它造成的情况:有时你会遇到一个认为自己很聪明的用户,他们会在电子邮件客户端中的发件人地址里加上一些东西,比如 “nospam”。于是,他们就会试图以 luser@nospam-example.com 而不是 @example.com 的方式发送邮件。
在 Verisign 搞出那个玩意儿之前,当时的邮件服务器只会把它作为一个无效的域名而拒绝(在 DNS 中)。一旦它上线了,它就会解析,所以邮件系统就会接受它。一片混乱。
或者,所有那些随便打错了什么的人呢?他们不会从浏览器和/或组织的网络代理那里得到一个解析失败的错误,而是直接跳到那个愚蠢的 Verisign 网站上。
这不应该让任何人感到惊讶,我们这些不满的系统管理员很快就在接下来的一两天里做了一些事情。我现在还有当时用来放到 sendmail.cf 里的一段代码片段。我是从 Usenet 上得到的:
Local_check_mail
R$* $: $>canonify $1
R$*<@$*.> $: $1<@$2> strip the trailing . if present
R$*<@$+> $: $(verisign $2 $)
R64.94.110.11 $#error $: "550 Real domain name required for sender address"
顺便说一句,如果你们中有人还能通过阅读来解析那个语法,我很抱歉。相信我,这种能力最终会消失的,但你必须停止给它提供新的数据。
无论如何,这个代码片段的作用是利用 sendmail 的配置语言的无限可编程性来解析提供的域名。如果它返回 64.94.110.11,它就会马上拒绝它。那是他们用来实现他们的小市场营销热梦的 IP 地址,我敢打赌,20年后还有很多系统在屏蔽它(而且他们可能不知道为什么)。
在接下来的几天里,还发生了很多其他的事情。ISC 为 BIND(又名 named,偶尔的远程 sudo 实现)写了一个 “delegation-only” 的功能。你可以用它来说,“com.” 或 “net.” 区域只允许委派给其他区域。也就是说,在 “com.” 的范围内,它可以说 “example.com.” 有一个位于 <foo> 的域名服务器,其 IP 地址为 <bar>,但仅此而已。它不能直接说某个东西有一个 A 记录。
现在,这个功能很好用,但是他们要绕过它也不是很难。他们本可以让所有这些东西都委派到另一个级别,然后在那个级别上对任何传入的问题都给出一个统一的答案。幸运的是,这没有发生。
这整个愚蠢的行为持续了大约三个星期,然后就消失了。他们再也没有做过这样的事情,但是从那以后,很多其他的递归解析器的提供者都把它当作一种惯例来做。为了讨好广告商而搞乱 DNS 的工作方式?太棒了!
还记得这个吗?那是 2019 年的事情。
我觉得这件事在这些年里获得了一个维基百科的条目,让我感到很满足。希望人们永远不会忘记 2003 年发生的关于 DNS 的事情。
本文译自 rachelbythebay,由 BALI 编辑发布。