Полный FAQ по настройке PDNSD

Потратил ооочень много времени на изучение оного. Напомню, что все работает на Kubuntu с провайдером Вебстрим (используются их DNS-серверы). Итак, начнем.


pdnsd - это небольшой локальный кэширующий dns-сервер, который используется в основном на пк с медленным соединением.

Ставим пакет pdnsd:
sudo aptitude install pdnsd

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

Далее идем в /etc/default/pdnsd и закомментируем следующий блок, как показано ниже:

/*
server {
label="resolvconf";
}
*/

Если вы не закомментируете указанный блок, программа будет использовать вместо конфиг. файла /etc/pdnsd.conf файл конфигурации, расположенный в /usr/share/pdnsd/pdnsd-recurse.conf. Нам это нафиг не надо.

Теперь сразу за ним добавим этот блок:

server {
label= "myisp";
ip = 195.46.96.1 //ip-адрес первичного DNS сервера Вебстрима
,    195.46.116.1 //ip-адрес вторичного DNS сервера Вебстрима
,    195.206.40.177 //ip-адрес первичного DNS сервера ДСИ
,    208.67.220.220 //ip-адрес  DNS сервера OpenDNS
,    208.67.222.222; //ip-адрес  DNS сервера OpenDNS
proxy_only=off;
uptest=query;
interval=15m;
timeout=30;
caching=on;
lean_query=on;

//Дальше - интересней. Если у вас комп в домене и у домена динамически выдаются свои ip и dns, то нужно раскомментировать эти строки:
//policy=excluded;
//exclude=.my-domain.local; //Укажите ваш домен
}

Для того, чтобы pdnsd принимал и обрабатывал запросы от других компьютеров локальной сети нужно в секции global указать

server_ip = any;

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

Продолжаем…

perm_cache=81920; // Выключает дисковый кэш или задаёт максимальный размер кэша в килобайтах.
cache_dir="/var/cache/pdnsd"; // Задаёт каталог, в котором Вы хотите хранить кэш.

status_ctl = on;
paranoid=on;
query_method=tcp_udp;
min_ttl = 1d;
max_ttl = 2w;
timeout = 10;  //Настройки которые стоят у меня. Подробнее можно почитать в мануале

Остальное - без изменений.

Тем, у кого ip-адрес статический, останется лишь отредактировать файл:
sudo kate /etc/resolv.conf
где в самом начале добавим строку:
nameserver 127.0.0.1

и перезапустить демон pdnsd командой:

sudo /etc/init.d/pdnsd restart

Для тех - у кого ip выдается динамически есть небольшая трудность. В этом случае данный файл (/etc/resolv.conf) будет каждый раз при перезапуске соединения сбрасывать все изменения.

Из этой ситуации я вышел довольно просто - добавил небольшой скрипт перезаписи resolv.conf на мое подключение в Wicd Manager (Скрипты -> поле Post-Connection Script). Пример скрипта:

#!/bin/sh
rm /etc/resolv.conf
echo nameserver 127.0.0.1 >> /etc/resolv.conf
echo nameserver 192.*.*.* >> /etc/resolv.conf
// первый DNS-сервер, выдаваемый динамически в локалке
echo nameserver 192.*.*.* >> /etc/resolv.conf
// второй DNS-сервер, выдаваемый динамически в локалке
echo `date +%d.%m.%y` `date +%X` Перезапись resolv.conf окончена >> /home/script/resolv_work.log

UPD. [Как это работает в данной ситуации: Допустим, мы пытаемся выйти через браузер на http://lapitoop.ru. Первым делом обращение пойдет к нашему локальному DNS-серверу (т.к. он первый в списке resolv.conf). Если в его базе есть эта запись - то он мгновенно возвращает ip. Если нет - говорит, что нужно сходить к следующему DNS-серверу, либо, если это возможно, сам разрешает в ip доменное имя и кэширует на будущее от прописанных в его настройках DNS-серверов.]

Теперь проверим работу нашего DNS`а:

dig google.ru

в конце отчета смотрим:

;; Query time: 99 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)  <– Используется наш локальный DNS
;; WHEN: Wed Sep 30 10:49:37 2009
;; MSG SIZE  rcvd: 221

Запускаем повторно dig google.ru

;; Query time: 0 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Wed Sep 30 10:50:21 2009
;; MSG SIZE  rcvd: 221

Теперь сравним время выполнения запроса и делаем выводы.

P.S. Полезные фичи:
sudo ls -l /var/cache/pdnsd/pdnsd.cache
Для интереса можно время от времени проверять размер кэша (/var/cache/pdnsd/pdnsd.cache). С каждым днем использования он должен становиться все больше и больше.

sudo pdnsd-ctl status
Просмотр текущих загруженных настроек.


Также рекомендую следующие записи:


Понравилась статья? Подпишись на обновления по RSS, E-mail или добавляйте меня в Twitter.

Комментарии (3)


Константин пишет:
26.10.2011 в 09:44

У меня стоит pdnsd, работает вполне :)
Но есть трабла, с которой не могу разобраться:
- ip моего dns: 192.168.1.253
- есть другой комп, который смотрит в интернет, и на котором крутится сайт, доступный с того самого интернета, его ip:192.168.1.254

Хочу, что б при обращении внутри сети к этому сайту, у меня открывался именно он (будет несколько сайтов), сейчас же открывается вебморда DSL-модема, который и обеспечивает интернет в мастерской. Собственно из-за этого и ставился свой dns-сервер, что б избавиться от вебморды :)
В какой части и что прописать в конфиге pdnsd?
Не могу найти мануала :(



beast пишет:
08.12.2011 в 05:50

Констинтин почитай про СЕКЦИЮ RR
вот пример для тебя

rr
{
name = *.mydomain;
a = 192.168.1.10;
}
указываеш имя и какой IP при этом открывать



Дмитрий пишет:
17.09.2013 в 17:00

Возникла проблема. Сервер перестает резволвить через несколько минут через после старта. Выдает ServFail :(


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

XHTML: Вы можете использовать эти теги: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>