这里的问题是,该链条允许多长时间?
如果xyz.com使用nameserver ns1.xyz.info,
和xyz.info使用nameserver ns1.xyz.co,
和xyz.co使用nameserver ns1.xyz.cc,
和xyz.cc使用nameserver ns1.xyz.co.uk,…等等
…你最终可能会有一条非常长的链条让解析器解开,然后才能解析你原来想要的名字.
据推测,有一个实际的限制 – BIND只应该愿意遍历如此多的链接,否则就有可能遭到拒绝服务.但是有官方限制吗?正式不要求解析器执行的一些步骤?
解决方法
if xyz.com uses nameserver ns1.xyz.info,
在这种情况下,您的本地解析器将首先向服务器请求.com(例如a.gtld-servers.net)在哪里找到xyz.com域的名称服务器. .com域服务器通常会为xyz.com域的名称服务器的IP地址提供粘合记录.
例如:
$dig gmail.com @a.gtld-servers.net ; <<>> DiG 9.9.3-rpz2+rl.13214.22-P2-Ubuntu-1:9.9.3.dfsg.P2-4ubuntu1.1 <<>> gmail.com @a.gtld-servers.net ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY,status: NOERROR,id: 46893 ;; flags: qr rd; QUERY: 1,ANSWER: 0,AUTHORITY: 4,ADDITIONAL: 5 ;; WARNING: recursion requested but not available ;; OPT PSEUDOSECTION: ; EDNS: version: 0,flags:; udp: 4096 ;; QUESTION SECTION: ;gmail.com. IN A ;; AUTHORITY SECTION: gmail.com. 172800 IN NS ns2.google.com. gmail.com. 172800 IN NS ns1.google.com. gmail.com. 172800 IN NS ns3.google.com. gmail.com. 172800 IN NS ns4.google.com. ;; ADDITIONAL SECTION: ns2.google.com. 172800 IN A 216.239.34.10 ns1.google.com. 172800 IN A 216.239.32.10 ns3.google.com. 172800 IN A 216.239.36.10 ns4.google.com. 172800 IN A 216.239.38.10 ;; Query time: 375 msec ;; SERVER: 192.5.6.30#53(192.5.6.30) ;; WHEN: Thu Jul 10 01:10:57 EST 2014 ;; MSG SIZE rcvd: 181
根据我的经验,您的声明“如果域及其名称服务器不共享TLD,则通常无法获取Glue记录”,这是不正确的.但是,它取决于域名注册商提供的数据,其政策也各不相同.有些需要指定IP.有些人将其交给域名所有者.我想我记得在澳大利亚有一个不支持他们的人.如果处理您所在国家/地区域的注册商数量很少,那么在域名空间的这一部分可能也是如此,但对于整个网络而言,这是非典型的.
域名所有者提供胶水记录当然是一种很好的做法,但有时能够通过名称指定DNS服务器而无需确定IP,这被视为提供了灵活性,许多域所有者不了解这会产生的性能问题.
如果您正在提供DNS报告工具,那么您真正对这种错误配置的绝对限制感兴趣吗?当然,如果即使有一个这样的胶水记录缺失问题,你也可以将丢失的胶水记录作为警告报告.你可能想跟踪至少一些如你提供的间接,(并报告丢失的胶水记录),但是你应该遵循多少限制.如果一个DNS报告工具警告前3个左右,我会很高兴,因为我只对将胶水记录添加到我的域名,或者将域名的DNS提供者转换为更有能力的域名感兴趣.
我对你在BIND上建议的DOS方法表示怀疑,因为BIND将缓存它收集的有关名称服务器位置的信息.攻击者必须在没有粘合剂的情况下设置很多域,然后对它们进行大量查询.设置域名的成本可能会使注册商在使用后取消,这可能会使攻击者无法接受.