18 июн. 2008 г.

кеширующий dns proxy под ubuntu

В случае, если вам необходимо настроить всё же кеширующий dns-прокси, рекомендую воспользоваться пакетом pdnsd, благо теперь при установке пакета из репозитария Ubuntu возможно определить, какими функциями должен он обладать.

Для начала установим пакет pdnsd:
sudo aptitude install pdnsd

При установке пакета выберете функцию кеширующего прокси - recurse, автонастройки будут прописаны в файле /etc/default/pdnsd строка: AUTO_MODE=recurse

Если вы не закомментируете указанную строку, программой не будет использоваться конфигурационный файл /etc/pdnsd.conf, а будет использован файл /usr/share/pdnsd/pdnsd-recurse.conf
Поэтому стандартно pdnsd будет принимать запросы от локальных клиентов, вам придётся закомментировать строку автонастроек и прописать настройки в файле /etc/pdnsd.conf, указав параметр server_ip на нужное значение либо any - любой локальный интерфейс, и перезапустить демон pdnsd командой:
sudo /etc/init.d/pdnsd restart
При этом пакет resolvconf, который может быть установлен вместе с pdnsd, предлагаю удалить: sudo aptitude remove resolvconf и в файле /etc/pdnsd.conf закоментировать строки следующим образом:
/*
server {
label="resolvconf";
}
*/


и добавить следующий фрагмент:

server {
label= "myisp";
ip=X.X.X.X;
proxy_only=off;
uptest=query;
interval=15m;
timeout=90;
caching=on;
lean_query=on;
}


где вместо X.X.X.X укажите адрес dns-сервера вашего провайдера.

Останется отредактировать файл:
sudo nano /etc/resolv.conf
где в начале добавим строку:
nameserver 127.0.0.1

Перезапускаем демон pdnsd:
sudo /etc/init.d/pdnsd restart

И всё, теперь проверяем пользу от использования pdnsd, для этого запустим к примеру команду:
dig yandex.ru
Смотрим результат в конце вывода, строки должны примерно выглядеть так:
;; Query time: 139 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
где первая строка время ответа на запрос от указанного во второй строке сервера, в данном случае как раз установленный нами pdnsd.

Теперь вновь повторим команду:
dig yandex.ru
Получаем примерно такой результат:
;; Query time: 1 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
где видно, что время запроса составило всего лишь 1 милисекунду, нежели первоначальные 139 милисекунд, что подтверждает результативность кеширующего dns-прокси pdnsd.