вторник, 14 сентября 2010 г.

Настройка кеширующего DNS-сервера (BIND)

Если рассматривать функции кэширующего сервера с точки зрения архитектуры DNS то это "умный" resolver. А точнее, "умный" независимый resolver, который выполняет рекурсивные запросы прикладных программ.

Главное назначение - принимать запросы от клиентов и опрашивать другие (авторитативные) серверы доменных имен на предмет поиска необходимой клиентам информации и хранение найденной информации (записей описания ресурсов) к своем кэше в течение времени жизни этой информации. При этом в кэш должна попадать не только информация о конечном соответствии IP-адреса и доменного имени, но и информация найденная в процессе поиска конечного соответствия, например, информация об авторитативных серверах зон доменных имен.

При этом данный сервер не будет поддерживать никакой зоны, т.е. он не будет авторитативным для какой-либо зоны пространства доменных имен Интернет.


Для начала установим bind9:
apt-get install bind9
Находим файл /etc/bind/named.conf.options и добавляем DNS сервера к которым  будет обращатся наш сервер):
forwarders {
194.187.48.2;
82.144.192.30;
195.189.246.18;
193.193.193.100;
};
Если есть DNS сервер у вашего провайдера, то укажите его первым, для экономии трафика.
Перезапускаем BIND:
/etc/init.d/bind9 restart
Не забываем поменять DNS адрес в /etc/resolv.conf на 127.0.0.1.
Если возникнет ошибка rndc: connect failed: 127.0.0.1#953: connection refused попробуйте открыть 953 порт
iptables -A INPUT -p tcp --dport 953 -j ACCEPT
Если не помогла и эта ошибка повторяется, проверьте конфигурацию named.conf.options
Если на вид там все правильно и не пропущение все точки с запятыми то можно запустить Байнд в режиме дебага
bind -n 9 -g
и посмотреть на какие ошибки он ругается.


Некоторые вопросы, которые могут возникнуть

  • Где хранит BIND свой кэш?\\ В памяти.
  • Хранится ли кэш между перезапусками?\\ Нет.
  • В named.conf.options есть такая строчка auth-nxdomain no (у меня no).\\ Лучше оставить как есть, но если будут проблемы со старыми программами, то исправить на yes.
  • Как можно проверить, кеширует ли DNS?\\ Набираем nslookup www.ru, если в ответе содержится строка Non-authoritative answer, то адрес пришел из кэша.
  • Как еще проверить?\\ Набираем (спросить адрес, например, www.ru. (которого еще нет в кэше) через 5 секунд спросить ещё раз. Время запроса должно быть меньше на несколько секунд):

$ dig @localhost www.ru
...
;; Query time: 3971msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
...
 </code>[ждём 5 сек.]<code>
$ dig @localhost www.ru
...
;; Query time: 2 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
...

Источник, сказать честно, уже не помню.

Комментариев нет:

Отправить комментарий