Декабрь 14, 2005

Как правильно настроить DNS (Часть1)

"Доменная система имен (Domain Name System, DNS) - это распределенная база данных, которая содержит информацию о компьютерах, включенных в сеть Internet." (UNIX: руководство системного администратора, Эви Немет и др. Пер. с англ.)

Так начинается описание системы DNS в одной из лучших, на мой взгляд, книг по UNIX. Подобные утверждения можно встретить и во многих других книгах и статьях, посвященных DNS. Неудивительно, что в сознании людей система DNS оказывается неразрывно связанной с Internet. К несчастью, такая ассоциация оказывается крайне опасной для системного администратора. "Обращение к интернет-ресурсам по символическим именам происходит нормально, значит с DNS все в порядке" - администратор легко может впасть в подобное заблуждение под влиянием этой устойчивой ассоциации.

Типичная ситуация. Загружен новый сервер, пробуем зайти на него используя (ssh, ftp, pop3, smtp, telnet…) с соседней машины в локальной сети. Обнаруживаем, что соединения приходится ждать пару минут... В чем дело? Одной из возможных причин может быть неверная настройка DNS на сервере.

Дело в том, что установление соответствия между именами и ip-адресами нужно не только пользователю. Многие программы - сервера пытаются определить имя машины клиента по ее ip-адресу. Зачем? А чтобы в лог записать - осуществлено, мол, соединение с машины с таким-то именем и таким-то ip. А если не удалось ip-адрес в имя преобразовать, то записывают - имя клиента определить не удалось, ip-адрес такой-то. Так работают, например, telnetd, wu-ftpd, postfix, imapd... Встречаются, впрочем, и программы, которые так не поступают, а пишут в логи только ip-адреса. Так работают, в частности, apache, squid, popa3d.

Кроме того, утилиты, предназначенные для диагностики состояния сети, также довольно часто по умолчанию пытаются выполнить трансляцию IP-адресов в символические имена. Так работают, например, netstat, traceroute, ipchains. Трансляцию адресов в них, впрочем, можно отключить, используя при вызове ключ –n. Утилита ping, как правило, по умолчанию подобную трансляцию не выполняет. Впрочем из правила есть и исключения. О них дальше.

Посмотрим на примерах, к каким проблемам может привести некорректная настройка DNS

1. При инсталляции Linux программа установки предложила ввести адрес DNS сервера и при этом установила в этом поле значение по умолчанию, а Вы его оставили. Или же сами ввели ip-адрес DNS-сервера и ошиблись. Теперь Вы пытаетесь зайти с клиентской машины, к примеру, по ftp. Программа ftp-server пытается определить имя машины клиента. Допустим, в /etc/hosts его нет. Тогда она пытается использовать DNS. Шлет запрос к серверу на несуществующий IP-адрес, ждет... снова шлет запрос... снова ждет... наконец понимает, что больше пытаться не стоит, пишет в лог, что установлено соединение с таким-то ip-адресом. Все, теперь можно работать, но задержку в минуту - две таким образом вполне можно поиметь! При этом, что характерно, если на этой же машине запустить apache, то с ним клиенты будут работать без проблем. А если,скажем, после установки соединения с клиентом вызвать, например, netstat -a, то утилита отработает с изрядной задержкой. Все по той же причине - утилита долго и безуспешно будет пытаться определить символическое имя клиента. А вызов netstat -a -n отработает без всяких задержек. (Это, пожалуй, самый простой случай)

2. Вариация на тему: DNS задан правильно, но вот сетевое соединение между нашим сервером и сервером DNS ненадежное, пакетики теряются. Тот же результат.

продолжение следует...

Часть 2

Разместил:

Источник: Docs.Winsov.Ru

Комментарии

1. 04.11.13 20:48 От: andrei

podklyhite dns

Ваш комментарий

Обсудить на форуме?

Подумайте, прежде чем высказать своё мнение. Постарайтесь сделать свой комментарий полезным для других. Не используйте ненормативную лексику. Пользователи, пишущие "от нечего делать" бессмысленные наборы символов, будут блокироваться навсегда.