Декабрь 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