Назад | Перейти на главную страницу

Может ли DNS-клиент определить, был ли полученный ответ основан на записи с подстановочным знаком или на конкретном совпадении?

У меня есть * запись на одной из наших зон и я ее поменял. Но когда я запросил определенные случайные имена в этой зоне с общедоступных 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 может предоставить подпись, показывающую, что на запрошенное имя нельзя ответить без использования * запись.