У меня есть *
запись на одной из наших зон и я ее поменял. Но когда я запросил определенные случайные имена в этой зоне с общедоступных DNS-серверов, я все равно получил старый IP-адрес.
Для меня это не имеет смысла. Запрошенный мной сервер не мог знать правильный IP-адрес для имени, если они не знали, что существует запись с подстановочными знаками. В противном случае им пришлось бы спросить наши серверы имен.
Когда я запрашиваю одно и то же имя у наших собственных серверов имен, они возвращают новый IP-адрес.
Так что же происходит?
Я быстро посмотрел, все ли авторитетные серверы имен синхронизированы.
$ dig +nssearch fm.mg
SOA ns1.hartwig-at.de. hostmaster.hartwig-at.de. 2015022400 86400 10800 2419200 3600 from server 217.70.177.40 in 8 ms.
SOA ns1.hartwig-at.de. hostmaster.hartwig-at.de. 2015060502 86400 10800 2419200 3600 from server 2a00:1158:3::b6 in 25 ms.
SOA ns1.hartwig-at.de. hostmaster.hartwig-at.de. 2015060502 86400 10800 2419200 3600 from server 134.119.4.37 in 26 ms.
SOA ns1.hartwig-at.de. hostmaster.hartwig-at.de. 2015060502 86400 10800 2419200 3600 from server 37.200.99.108 in 28 ms.
SOA ns1.hartwig-at.de. hostmaster.hartwig-at.de. 2015060502 86400 10800 2419200 3600 from server 2a00:1158:3::87 in 28 ms.
$
Кажется, что 217.70.177.40
обслуживает более старую версию зоны, что, вероятно, объясняет различия в результатах.
Если вы не используете DNSSEC, у клиента нет окончательного способа узнать, был ли получен ответ *
запись в зоне или по точному совпадению.
Клиент мог использовать эвристику, сравнивая ответы, полученные при поиске желаемого имени, с ответами, полученными при поиске случайной строки символов. Если ответы идентичны, вероятно, *
запись, и если ответы разные, скорее всего, это не *
запись.
Если зона подписана в автономном режиме с помощью DNSSEC, однако клиент может увидеть, *
запись была использована. Это потому, что имя, используемое в подписи, на самом деле будет содержать буквальный *
символ, который докажет, что ответ был произведен с использованием *
запись. Кроме того, NSEC3 может предоставить подпись, показывающую, что на запрошенное имя нельзя ответить без использования *
запись.