pdnsd – это локальный кэширующий dns-сервер, который используется в основном на машинах с модемным соединением.
Вы наверняка замечали, что когда даем запрос браузеру на просмотр страницы, некоторое время тратиться на определение ip-адреса сервера, что указан в адресной строке. И это время тем больше, чем хуже работает dns-сервер, который прописан у нас в системе. И зависит также от типа линии, то есть на модемном соединении оно очень велико, так же как и на gprs, а на ethernet линиях уменьшается до приемлемых величин.
Для таких случаев и был создан pdnsd. Он позволяет сохранить в базе все ip-адреса, к которым обращались и использовать в дальнейшем их уже с локальной машины, без обращения в сеть. Установить этот пакет в archlinux не составляет труда:
$sudo pacman -S pdnsd
После чего приступаем к его конфигурированию. Для этого переименовываем файл /etc/pdsnd.conf.sample в /etc/pdsnd.conf и затем его начинаем изменять. В секции global можно ничего не трогать, все настроено на оптимальную производительность и безопасность. Нас в данный момент времени интересуют секции server, важен порядок указания серверов.
В этих секциях достаточно изменить только ip-адреса серверов. В первой секции прописать ip-адрес dns провайдера, затем уже дополнительные.
Приложения обычно узнают адрес DNS-сервера из файла /etc/resolv.conf. Поэтому для использования локального dns-сервера достаточно прописать в самом начале следующую строку:
nameserver 127.0.0.1
Однако, если у вас используется динамическая адресация, то данный файл будет каждый раз при перезапуске компьютера сбрасывать все изменения. Поэтому создаем файл /etc/resolv.conf.head в который прописываем вышеуказанную строчку.
Теперь нужно только прописать запуск данного сервера на автомате при запуске компьютера. Для этого изменяем в файле /etc/rc.conf строку DAEMONS, добавляя в самый конец имя демона, в моем случае данная строка имеет вид:
DAEMONS=(syslog-ng crond @hal @cpufreq @iptables @network !netfs @hddtemp @sensors @pdnsd @xfs @alsa @mpd @lastfmsubmitd @lastmp @vboxnet @xinetd @preload @fam @cups)
Для запуска демона без перезапуска компьютера используем команду:
$sudo /etc/rc.d/pdnsd start
И теперь проверяем работу сервера, для этого можно использовать команду nslookup, которая возвращает ip-адрес указанного доменного имени:
nslookup ya.ru
Server: 127.0.0.1
Address: 127.0.0.1#53Non-authoritative answer:
Name: ya.ru
Address: 213.180.204.8
Как видим 0 используется именно локальный dns-сервер. И при повторном обращении к dns адрес будет возвращен почти сразу, без задержек.
Размер кэша можно определить следующим образом:
$sudo ls -l /var/cache/pdnsd/pdnsd.cache
-rw-r—– 1 nobody root 272860 Мар 17 20:23 /var/cache/pdnsd/pdnsd.cache
Как видим, у меня за несколько дней работы кэш уже порядка 270 Килобайт. Но в дальнейшем, судя по отзывам, размер кэша изменяется не так значительно.
