昨天,我注意到一个客户(他对网络的了解刚好够危险)弄乱了他的一个域名服务器记录。我们最近搬迁到不同的托管服务提供商,ns2.his-domain.com 指向最近空出的机柜中的网络。我指示他,“去您的注册商处,更改此名称服务器指向的 IP,因为在此之前,您的所有客户的域只有一个有效的名称服务器”。
由于时区差异——他住在欧洲,我在美国——我们无法现场交谈。
今天早上,我发现他用霰弹枪解决了这个问题。他不仅将 ns2.his-domain.com 更改为指向正确的 IP,然后他还继续为他曾经使用过的每个主机名创建更多的主机记录 - 在注册商级别,使用他们的 Web 工具创建名称服务器过去用过的,还有一些他觉得以后可能会用到的,都指向同一个IP。
ns3.his-domain.com、ns4.his-domain.com、www.his-domain.com、ftp.his-domain.com、kirk.his-domain.com、spock.his-domain.com、scotty。 his-domain.com 等 - 现在可以使用 Whois 查找所有这些,绕过我们的本地名称服务器,使根名称空间变得混乱。他在域注册表中创建了大约 20 个主机记录,所有这些记录都指向完全相同的 IP。
我的直觉是,这非常非常糟糕。它破坏了 DNS 的基本设计,它应该是分层的!
这有什么后果?标准中是否有任何东西——在 RFC 或其他地方——禁止这样做,并描述了可能发生的结果?
示例(更改名称以保护有罪者:)
$ whois spock.his-domain.com
Whois Server Version 2.0
Server Name: SPOCK.HIS-DOMAIN.COM
IP Address: 22.33.44.55
Registrar: COMPUTER SERVICES LANGENBACH GMBH DBA JOKER.COM
Whois Server: whois.joker.com
Referral URL: http://www.joker.com
有几件事:
我不认为这是非常非常糟糕的,因为在这个问题得到解决之前,除了他的命名空间不会被正确和一致地解析之外,什么都不会发生。
就层次结构而言,这并没有改变。他的命名空间和 DNS 记录在层次结构中仍然处于同一级别。创建多个名称服务器不会改变他的命名空间在层次结构中的位置。
gTLD 服务器不在乎他有多少名称服务器。他们将为他的命名空间寻找 NS,并将他的命名空间的 DNS 请求引用到列出的任何名称服务器。由于 gTLD 服务器不执行递归,因此不会给它们带来额外的负载。DNS 客户端(代表客户端的 DNS 服务器)将询问负责相关 gTLD 域(.com、.edu 等)的 gTLD 服务器在哪里可以找到他的命名空间,gTLD 服务器会将它们引用到名称服务器列出。然后,DNS 客户端将查询列出的名称服务器之一。
除了有一些不稳定的名称解析和失败之外,我不认为这是一个惊天动地的问题。解决方法是重新登录到他的注册商的网站并删除错误记录。
据我所知,标准中没有任何内容禁止他做他所做的事情,但这绝对不是“正确的”——在您的注册商处创建的记录只应该用于 NS 胶水,包括其他记录可能会使过度在根服务器上加载。
在这种情况下,我相信顶级(.com)服务器将返回他们拥有的 A 记录,而不是将查询引用到客户端的名称服务器——这肯定不是他们想要的,因此应该删除错误的记录。
如果有人可以指出禁止或反对这种行为的特定 RFC/STD 文档,那么也能引用它会很好:-)