Как проверить работоспособность DNS-сервера, не имея доступного имени хоста для проверки запросов? (Linux) - PullRequest
0 голосов
/ 05 марта 2020

Я знаю, что вы можете проверить работоспособность DNS-сервера, выполнив:

 dig +short test_hostname @nameserver

Но что, если у нас нет test_hostname для проверки запросов? Например, если система, в которой мы хотим запустить эту команду, находится в сети с ограниченным доступом, и мы не знаем, к каким именам хостов они имеют доступ или доступны в их сети.

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

Или я заметил, что dig, host, nslookup все вернет:

;; connection timed out; no servers could be reached

, если вы введете неверный DNS сервер, независимо от того, какой test_hostname вы вводите, поэтому просто запуск:

dig +short @nameserver

будет надежным способом проверки работоспособности DNS-сервера? Нет необходимости проверять, является ли DNS-сервер поддельным / вредоносным или нет, только если он действителен или недействителен.

Ответы [ 2 ]

0 голосов
/ 05 марта 2020

Вы не говорите, тестируете ли вы рекурсивный или авторитетный сервер имен.

Вам также необходимо определить допустимый. Ожидаете ли вы ответ DNS на ваш запрос?

Вы можете проверить с известными недействительными / несуществующими именами, такими как whatever.test или whatever.example. Вы всегда должны получать ответ DNS, даже если он равен NXDOMAIN, или, возможно, NOERROR в случае восходящего направления.

Обратите внимание, что если вы делаете это с сервером, вы не управляете, в зависимости от скорость, люди могут начать замечать и ограничить вас или даже хуже.

Вы также можете попытаться запросить зону CHaos, однако это часто отключается. Это один из способов «идентифицировать» заданное программное обеспечение сервера имен.

Пример:

$ dig @a.root-servers.net version.bind TXT chaos +short
"NSD"

Даже если функция отключена, вы должны получить ответ DNS с REFUSED или * 1020. * или некоторый код возврата, подобный этому:

$ dig @ns1.google.com version.bind TXT chaos

...

;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOTIMP, id: 57909
;; flags: qr rd; QUERY: 1, ANSWER: 0, AUTHORITY: 0, ADDITIONAL: 0
;; WARNING: recursion requested but not available

PS: обратите внимание, что dig имеет флаг header-only, который позволяет отправить вопрос только с заголовком и без содержимого (указывать не нужно) имя).

Не все серверы имен могут реагировать на это должным образом, хотя, то же самое может просто прерваться и вообще не отвечать.

0 голосов
/ 05 марта 2020

Попробуйте:

dig . ns @nameserver +short

Даже если на сервере не настроены root серверы имен, если он жив, он ответит на это. Если есть root серверов, вы получите действительный список записей NS; если нет, вы получите пустой ответ с rcode=NOERROR.

...