«Пинг» по протоколу DNS

Aug 19 2020

Существует ли общепринятая «хорошая практика» для проверки того, что сетевое соединение с DNS-сервером работает, и что сервер отвечает минимально, кроме выдачи запроса поиска? Глядя на код Nagios в качестве конкретного примера, я замечаю, что он ориентирован на «разрешается ли это имя?» а не "сервер в порядке?".

Я пробовал нулевой запрос, но его игнорируют. Я пробовал запросить статус сервера, и хотя некоторые отвечают (обычно «не реализовано»), другие игнорируют запрос. Я бы предпочел что-то получше, чем полагаться на ping, поскольку я видел множество серверных систем, которые игнорируют ping, и из-за дополнительных хлопот, связанных с возможностями и т. Д.

В настоящее время я подозреваю, что единственным стабильно надежным решением было бы поискать что-то вроде google.com, при условии, что сервер будет кэшировать это, и это потребует минимальных усилий, отвечая: поскольку мне нужно делать это каждые несколько минут, я не хочу расстроить своего хозяина.

Ответы

2 telcoM Aug 19 2020 at 16:01

RFC 6303 перечисляет ряд зон DNS, по существу, каждый DNS-сервер должен иметь возможность отвечать, в основном, чтобы предотвратить ненужное распространение этих запросов к корню иерархии DNS, если эти зоны не используются для каких-либо локальных целей.

Самая старая и наиболее известная из них - это обратная зона для петлевой сети и, в частности, запись PTR для IPv4-адреса 127.0.0.1 (т. Е. FQDN 1.0.0.127.in-addr.arpa.). По сути, каждый DNS-сервер должен иметь возможность предоставить это, не запрашивая какой-либо другой DNS-сервер.

Итак, хотя dig -x 127.0.0.1 @dns-server-addressтехнически это запрос для конкретной записи, он эффективно применим как «сервер в порядке?» test, так как это запись, которую каждый DNS-сервер должен уметь разрешать с минимальными усилиями и без обращения к любому другому DNS-серверу.

Запрос имени localhost.должен быть практически таким же хорошим, просто обратите внимание, что вы должны явно включить точку в конце, чтобы указать, что имя, которое вы запрашиваете, уже полностью определено, чтобы инструмент, который вы используете, не мог добавить суффикс вашего локального домена, который может исказить результаты.