Все мы знаем, что когда я запрашиваю какое-то имя хоста, я подключаюсь к своему DNS-серверу, который проверяет, есть ли у него соответствующая запись в кеше, и если нет, то при необходимости повторяется до авторитетного DNS для этого имени хоста.
Теперь, в принципе, авторитетный DNS может содержать огромное количество записей. Возьмем этот пример nodeJS:
var dnsd = require('dnsd')
dnsd.createServer(function(req, res) {
res.end('1.2.3.4')
}).listen(53, '')
Если я использую его в качестве авторитетного сервера для своего домена, любой запрос любого поддомена приведет к записи A, указывающей на 1.2.3.4
. Это означает, что если группа пользователей начнет запрашивать случайные поддомены моего домена, их DNS-сервер будет продолжать запрашивать у меня новые записи и кэшировать их.
Но мой здравый смысл говорит, что, например, Google 4.4.4.4 не захочет хранить гигабайты записей только потому, что какой-то скучающий компьютерщик поигрался с двумя строками узла.
Что же тогда происходит? Что произойдет, если какой-то DNS уже кэшировал множество записей для некоторого домена и не хочет хранить больше? Будет ли домен заблокирован или забанен? Будут ли удалены старые записи до истечения срока их жизни? Есть ли на это официальная политика?
Поведение кэширования полностью зависит от реализации. Единственное требование - кэшированная информация должна быть правильной (естественно) и не должна быть старше, чем указано в TTL. Таким образом, сервер в вашем примере может выбрасывать записи так быстро и так часто, как он хочет.
Как говорит Калле, это зависит от реализации. Я собираюсь вникнуть немного подробнее.
Наиболее распространенный подход, который используют серверы имен, - это на основе памяти подходить. Максимальный объем памяти определяется (либо по умолчанию, либо в конфигурации пользователя), и при нормальной работе данные кэшируются до истечения срока его действия. Когда достигается предел памяти, программное обеспечение начинает отбрасывать менее используемые записи, чтобы освободить память для новых записей, обычно начиная с самых старых данных в кэше и, возможно, учитывая также и наименее запрашиваемые данные.
Множество реализаций серверов имен не реализовать любой вид черного списка запросов на основе IP. В основном это связано с тем, насколько легко подменить IP-адрес в UDP, что значительно упростило бы выполнение отказа в обслуживании DNS для законного IP-адреса, которому нужны данные. Я мог бы притвориться вашим IP, забивать серверы имен Google, пока они не проигнорируют ваш IP, и тогда вы не сможете попасть на Google.com. Это было бы плохо, так как без Google Runbook большинство сотрудников вашей компании потеряли бы возможность притворяться, что они знают, как выполнять свою работу. Если учесть тот факт, что злоумышленник может просто изменить IP-адрес, который он подделывает, если он заблокирован, занесение в черный список IP становится очень непривлекательным вариантом для большинства операторов серверов.
В связи с возросшей популярностью циклических атак меток / имен хостов, направленных на рекурсивные DNS-серверы (о которых я не буду здесь вдаваться), все больше и больше программных пакетов начинают включать параметры для ограничение скорости входящие запросы по нескольким критериям. Идея здесь не в том, чтобы полностью блокировать IP-адреса (потому что IP-адрес, вероятно, подделывают, и легко подделать другой), а вместо этого сделать менее эффективным и, следовательно, непривлекательным использование DNS-сервера в такого рода атаках.
В любом случае, если коротко, то обычно вам не нужно беспокоиться о том, что кто-то получит ваш домен или даже ваш IP-адрес, заблокированный рекурсивным DNS-сервером. Это, безусловно, возможно, если стороны, о которых идет речь, не очень часто используются в атаках и поэтому не знают, почему это обычно плохая идея для запрета доменов или IP-адресов, но редко. Опытные забанят ваш домен (временно) только в том случае, если их платформа используется для атака серверов имен для вашего домена, и в этом случае они считают, что они делают вам одолжение не посылая вам запросы.