9.10.2007

Bind 9 и Ubuntu. Кэширующий DNS сервер.

ОС у меня Ubuntu 6.06
Для начала установим bind9:

apt-get install bind9

Находим файл /etc/bind/named.conf.options и добавляем (сети, которым будет разрешено посылать запросы через наш DNS-сервер):
acl "corpnets" { 192.168.1.0/24; 127.0.0.1; };
Ниже раскомментируем строчку и добавим (к какому DNS серверу будет обращатся наш сервер):
forwarders {
194.187.48.2;
82.144.192.30;
195.189.246.18;
193.193.193.100;
};
P.S. Если есть DNS сервер у вашего провайдера, то укажите его первым, для экономии трафика.
Разрешаем запросы тем сетям, которые указаны выше:
allow-query { "corpnets"; };

Перезапускаем BIND:
/etc/init.d/bind9 restart

Не забываем поменять DNS адрес в /etc/resolv.conf на свой.

Некоторые вопросы, которые возникли у меня:
1. Где хранит BIND свой кэш?

> В памяти.
2. Хранится ли кэш между перезапусками?
> Нет.
3. В named.conf.options есть такая строчка auth-nxdomain no (у меня no). Лучше оставить как есть, но если будут проблемы со старыми программами, то исправить на yes.
4. Как можно проверить, кеширует ли DNS?
> Набираем nslookup www.ru, если в ответе содержится строка Non-authoritative answer, то адрес пришел из кэша.
5. Как еще проверить?
> Набираем (спросить адрес, например, www.ru. (которого еще нет в кэше) через 5 секунд спросить ещё раз. Время запроса должно быть меньше на несколько секунд):
$ dig @localhost www.ru
...
;; Query time: 4825 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
...
[ждём 5 сек.]
$ dig @localhost www.ru
...
;; Query time: 2 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
...

Ссылки:
Кеширующий DNS сервер для локальной сети на основе BIND 9
Howto: Setup a DNS server with bind
Home LAN - DNS setup
DNS How-To 8