我们都知道,当我询问某个主机名时,我连接到了我的DNS服务器,DNS服务器检查它是否在caching中有相应的logging,如果没有的话,如果有必要的话,它会再次出现该主机名的权威DNS。
现在,原则上权威的DNS可以logging大量的logging。 以这个nodeJS为例:
var dnsd = require('dnsd') dnsd.createServer(function(req, res) { res.end('1.2.3.4') }).listen(53, '')
如果我将其用作域的权威服务器,则对任何子域的任何请求都将导致指向1.2.3.4的Alogging。 这意味着,如果一群用户开始询问我的域的随机子域,他们的DNS服务器将不断询问我的新logging,并caching它们。
但是我的常识说,例如,Google的4.4.4.4不会仅仅因为一些无聊的怪胎用两行节点来存储千兆字节的logging。
那么会发生什么呢? 当某些DNS已经为某个域caching了大量logging而不想存储更多内容时会发生什么? 域名被封锁或禁止? 旧logging是否会在TTL过期之前被丢弃? 有没有官方的政策呢?
正如Calle所说,它是特定于实现的。 尽pipe如此,我还是会详细介绍一下。
域名服务器最常用的方法是基于内存的方法。 定义了一个内存上限(作为默认值或由用户configuration),在正常操作下,数据将被caching直到过期。 当达到内存上限时,软件开始丢弃较less使用的logging,以释放较新logging的内存,通常从caching中最旧的数据开始,并可能考虑最less的请求数据。
许多名称服务器实现不实现任何types的基于IP的查询黑名单。 这主要是由于欺骗UDP中的IP地址是多么容易,这使得对于需要数据的合法IP执行DNS拒绝服务变得太容易了。 我可以假装成你的IP,敲击Google的域名服务器,直到他们忽略你的IP,然后你无法访问Google.com。 这会很糟糕,因为如果没有Google Runbook,那么贵公司的大部分人都将失去假装他们知道如何完成工作的能力。 一旦考虑到攻击者可以简单地改变他们在被阻止的情况下进行欺骗的IP地址,那么对于大多数服务器运营商而言,IP黑名单就变得不具吸引力。
由于针对recursionDNS服务器的标签/主机名循环攻击越来越stream行(我不会在这里进行讨论),越来越多的软件包开始启用基于几个标准的速率限制传入查询的选项。 这里的想法并不是完全阻止IP(因为IP可能是欺骗性的,而且很容易欺骗不同的IP),而是使其效率下降,因此在这类攻击中使用DNS服务器并不具吸引力。
无论如何,简短的版本是,你通常不需要担心有人获得你的域名,甚至你的IP“被”从recursionDNS服务器“禁止”。 如果有关各方没有经常受到攻击,这当然是可能的,因此不知道为什么禁止域名或IP地址通常是一个坏主意 ,但却不常见。 有经验的人只会暂时禁止你的域名,如果他们的平台被用来攻击你域名的域名服务器,在这种情况下,他们认为他们不会为你发送查询而帮你。
caching行为完全是实现的。 唯一的要求是caching的信息必须是正确的(自然),不能比TTL说的更早。 因此,在你的例子中,服务器可以自由地将logging尽可能快地和随意地丢弃。