DNS-клиент
DNS-клиент — программа (или модуль в программе), обеспечивающий определение адреса узла по его полному имени (точка в конце обычно либо добавляется DNS-клиентом, либо неявно подразумевается, однако, в случае использования доменных суффиксов, возможны различия в поведении клиента при определении имени с точкой в конце и без).
Функция клиента DNS встроена почти в любую программу, предназначенную для работы в сети Internet. Однако, большинство DNS-клиентов не умеют самостоятельно выполнять рекурсию, так как в противном случае их алгоритмы пришлось бы неоправданно усложнять. Помимо этого использование рекурсии DNS-клиентами не позволило бы осуществлять режимы ограничения доступа во внешнюю сеть и кеширования DNS.
Специализированные программы
Для диагностики DNS используются специализированные программы — nslookup и dig. Версия nslookup для Windows (как и многие DNS-клиенты для windows) поддерживает WINS, что может создавать неразбериху при различающихся ответах WINS и DNS серверов. Некоторые версии nslookup в Unix поддерживают помимо DNS ещё и yp (NIS), что так же усложняет диагностику. При проверке интегрированных с Active Directory DNS-серверов может использоваться утилита dcdiag.
Режимы работы DNS-сервера
DNS-сервер, выполняющий запрос клиента может работать в одном из трёх режимов:
* режим форвардинга (передачи) запросов другому DNS-серверу — в этом случае запрос почти не отличается от запроса DNS-клиента. (Такая схема используется при использовании кеширующих DNS-серверов и серверов в DMZ).
* режим самостоятельного выполнения рекурсивного запроса.
* режим обслуживания зоны (в этом случае запросы на посторонние (неавторитативные) зоны не принимаются, вместо этого возвращаются адреса корневых серверов).
Во многих версиях BIND запрос к другим DNS-серверам исходил с 53-го порта (порта, по которому принимаются запросы DNS, как TCP, так и UDP), в отличие от клиентских приложений, использующих произвольный порт отправителя (из незарегистрированного диапазона).
Работа с DNS различных программ
Почтовый сервер использует клиент DNS, для запроса MX, SPF, A-запись (например, sendmail использует MX-записи в порядке возрастания приоритета, но в случае отсутствия подходящего маршрута, в качестве последней попытки использует A-запись), PTR-записей (для определения имени хоста). Кроме того, многие версии почтовых серверов используют имена, полученные через запрос PTR-записи для определения наличия MX-записи у данного имени, это используется для автоматического отказа в доставке у не-почтовых серверов (в большинстве своём бот-нетов).
В общем случае возможна конфигурация, когда для разных серверов и зон DNS-сервер ведёт себя различно (например, из локальной сети принимает рекурсивные запросы, из внешней — только запросы на авторитативные зоны, или форвардит запросы на другой сервер только для заданных зон).
Рабочие станции и серверы в составе Active Directory используют множество DNS-записей типа SRV для определения положения ближайшего контроллера домена в сайте и для выполнения динамического обновления DNS-записи о рабочей станции.
Интерфейс между программой и DNS-клиентом
Большинство программ, использующих функции DNS, не реализуют его функциональность самостоятельно (через сокеты), а используют либо предоставляемые операционной системой функции DNS-клиента, либо используют готовую библиотеку клиента. К меньшинству относятся в основном низкоуровневые утилиты и серверное ПО, которому необходима более специфичная фунциональность, чем предоставляется DNS-клиентом.
|