time2die 30.10.2010 16:41
Я рекомендую — pdnsd - легкий кэширующий dns сервер для дома за 5 минут
pdnsd - это легкий кэширующий dns сервер, которые отлично подойдет людям с узким каналом, повышенной любознательностью и свободным временем.Почему он ? Его довольно легко ставить\настраивать + имеет возможность сохранять\восстанавливать кэш при перезагрузке.Установка
Пакет pdnsd давно входит в репозитарии большинства распространённых дистрибутивов, так что с установкой оного проблем быть не должно.
Настройка
мною будет рассмотрена минимальная рабочая "домашняя" конфигурация.Пример pdnsd.conf с обширными коминтариями можно найти в /etc/pdnsd.conf.sample(в arch'е он был там)
- копируем /etc/pdnsd.conf.sample в /etc/pdnsd.conf
- открываем любимый редактор и правим
вот что получилось у меня
- сохраняем и добавляем в /etc/resolv.conf
nameserver 127.0.0.1
- запускаем демон специфическим для вашего дистрибутива способом
- проверяем работу
pdnsd-ctl status
Opening socket /var/cache/pdnsd/pdnsd.status
pdnsd-1.2.8-par running on desktop.
Cache status:
=============
2048 kB maximum disk cache size.
9780 of 2107392 bytes (0.464%) memory cache used in 36 entries.
Thread status:
==============
server status thread is running.
pdnsd control thread is running.
tcp server thread is running.
udp server thread is running.
23 query threads spawned in total (0 queries dropped).
0 running query threads (0 active, 0 queued).
Configuration:
==============
Global:
-------
Cache size: 2048 kB
Server directory: /var/cache/pdnsd
Scheme file (for Linux pcmcia support): /var/lib/pcmcia/scheme
Server port: 53
Server ip (0.0.0.0=any available one): 127.0.0.1
Ignore cache when link is down: off
Maximum ttl: 604800
Minimum ttl: 900
Negative ttl: 900
........................приведены только первые 30 строк
pdnsd-1.2.8-par running on desktop.
Cache status:
=============
2048 kB maximum disk cache size.
9780 of 2107392 bytes (0.464%) memory cache used in 36 entries.
Thread status:
==============
server status thread is running.
pdnsd control thread is running.
tcp server thread is running.
udp server thread is running.
23 query threads spawned in total (0 queries dropped).
0 running query threads (0 active, 0 queued).
Configuration:
==============
Global:
-------
Cache size: 2048 kB
Server directory: /var/cache/pdnsd
Scheme file (for Linux pcmcia support): /var/lib/pcmcia/scheme
Server port: 53
Server ip (0.0.0.0=any available one): 127.0.0.1
Ignore cache when link is down: off
Maximum ttl: 604800
Minimum ttl: 900
Negative ttl: 900
........................приведены только первые 30 строк
на прекрасном сайте http://translated.by давно есть переведенная man страница с описанием всех опций конфигурационного файла
Проверяем
утилиту dig можно найти в пакете dnsutils
1 |
|
; <<>> DiG 9.7.1-P2 <<>> welinux.ru
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 15278
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 2, ADDITIONAL: 0
;; QUESTION SECTION:
;welinux.ru. IN A
;; ANSWER SECTION:
welinux.ru. 900 IN A 77.222.56.31
;; AUTHORITY SECTION:
welinux.ru. 900 IN NS ns2.spaceweb.ru.
welinux.ru. 900 IN NS ns1.spaceweb.ru.
;; Query time: 41 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Sat Oct 30 20:34:27 2010
;; MSG SIZE rcvd: 89
1 |
|
; <<>> DiG 9.7.1-P2 <<>> welinux.ru
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 3182
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 2, ADDITIONAL: 0
;; QUESTION SECTION:
;welinux.ru. IN A
;; ANSWER SECTION:
welinux.ru. 896 IN A 77.222.56.31
;; AUTHORITY SECTION:
welinux.ru. 896 IN NS ns2.spaceweb.ru.
welinux.ru. 896 IN NS ns1.spaceweb.ru.
;; Query time: 0 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Sat Oct 30 20:34:31 2010
;; MSG SIZE rcvd: 89
Радуемся
5 минут клацанья по клавиатуре помогло сэкономить нам до 40мс на каждом запросе(мелочь а приятно)
Только неделю назад выбирал себе на рабочий сервер кеширующий dns для связки с прозрачным squid. Остановился на dnsmasq. Цитата из вики:
Dnsmasq это DHCP и DNS сервера в одной программе. Она может быть использована для создания подключения к интернету с возможностью автоматической выдачи IP адреса и одновременным кэшированием соответствия доменов их IP адресам (DNS-кэширование). Это кэширование дает отличный прирост скорости работы с интернетом, т.к. не нужно постоянно обращаться за IP адресом к DNS-серверу - он держит эти параметры у себя в кэше. Dnsmasq легковесное приложение, разработанное для персонального использования, или как DHCP сервер для сети, в которой не более 50 компьютеров.
в squid есть вроде встроенные возможности кэшировать dns запросы, хотя сам этой возможностью никогда не пользовался
Да собственно мне это кеширование было по барабану, просто Squid 3 в прозрачном режиме без dns-сервера упорно отдавал страницы только по ip, вот и пришлось поставить.
Только неделю назад выбирал себе на рабочий сервер кеширующий dns для связки с прозрачным squid. Остановился на dnsmasq.
а мне с ним не повезло -- на двух разных машинах, на разных дистрах (debian lenny и debian squezee) регулярно падал. приходилось регулярно по крону делать ему restart. в итоге остановлися на pdns-recursor.
немного работы напильником и оно у меня заработало стабильно. DHCP-сервер из него слабый, а как прокси DNS - ничего так.
Хорошая статья спасибо. Тоже маялся кешированием dns, но dnsmasq работает нормально только в том случае если задействовано dhcp, да и кеш после перезагрузки стирается. pdnsd тоже вроде хорош, но раз в 2-3 недели виснет и лишь рестарт службы помогает ему развиснуться. Хотя может я не так тыкаю.
P.S. Остановился на nscd.
P.S. Остановился на nscd.
посмотрю на досуге, на обоих, с pdnsd познакомился ещё когда на openbsd сидел, в chroot окружении он у меня работал месяцами без сбоев,посмотрим как теперь себя на arch покажет
У меня как раз dhcp отключен на dnsmasq и проблем не замечено. А по поводу стирания кеша при перезагрузке, то для сервера это не особо актуально, да и не вижу особого смысла в длительном хранении dns-записей.
Аналогично - без dhcp dnsmasq пашет без проблем. хранить кеш dns не вижу смысла - один запрос всего ;)
у меня тоже пашет, но как-то странно. dig ya.ru возвращает через 150 ms. Второй запрос dig ya.ru возвращает моментально 1 ms. Через минуту dig ya.ru возвращает опять через 150 ms. ЧЯДН
на вскидку - стоит маленькое время хранения положительных ответов
я сначала возился с pdnsd - но понял, что он не умеет вставать на два интерфейса???, либо один, либо все. Но так, как я на Вы с iptables, смотрел в сторону pdns-recursor. Провозился с ним очень-очень долго, но нормально резолвить он так и не смог. В конченом счёте пришел к bind, а так не хотелось юзать эту дырявую глыбу. Вот мой конфиг рекурсивного, кэширующего днс. Всё работает, как по маслу:
/etc/named.conf
/etc/named.conf
acl homenet { 127.0.0.0/8; 192.168.0.0/24; };
options {
# use local (free) dns
forwarders { 85.158.48.34; 85.158.50.50; };
# forwarders { 213.234.192.8; 85.21.192.3; };
listen-on { 127.0.0.1; 192.168.0.1; };
#listen-on-v6 { 2001:470:9dcd::2; 2001:470:1f0a:d56::2; };
# and fix interfaces list!!
interface-interval 0;
allow-query { homenet; };
#allow-query-cache { any; };
allow-recursion { homenet; };
allow-transfer { none; };
allow-update { none; };
directory "/var/named";
pid-file "/var/run/named/named.pid";
version none;
hostname none;
server-id none;
};
zone "localhost" IN {
type master;
file "localhost.zone";
allow-transfer { any; };
};
zone "0.0.127.in-addr.arpa" IN {
type master;
file "127.0.0.zone";
allow-transfer { any; };
};
zone "." IN {
type hint;
file "root.hint";
};
logging {
channel "log_default" {
file "/var/log/named.log" versions 10 size 5m;
severity info;
print-time yes;
print-severity yes;
print-category yes;
};
channel "log_security" {
file "/var/log/named-security.log" versions 5 size 5m;
severity info;
print-time yes;
print-severity yes;
print-category yes;
};
channel "null" {
null;
};
category "default" { "log_default"; };
category "security" { "log_security"; };
category "unmatched" { "null"; };
};
Добавлю мой текущий конфиг кеширующего рекурсора для unbound. Отлично работает. Хочу попробовать djbdns
server:
username: "unbound"
directory: "/etc/unbound"
use-syslog: yes
num-threads: 1
do-ip6: no
# interface: 0.0.0.0
# interface: ::0
interface: 127.0.0.1
interface: 192.168.0.1
# access-control: 0.0.0.0/0 refuse
# access-control: ::0/0 refuse
# access-control: 127.0.0.1/8 allow
access-control: 192.168.0.1/24 allow
# access-control: 2001:DB8::/64 allow
# access-control: ::1 allow
# access-control: ::ffff:127.0.0.1 allow
remote-control:
control-enable: yes
## MTS
#forward-zone: name: local forward-addr: 85.158.48.34 forward-addr: 85.158.50.50
forward-zone: name: stream-tv.ru forward-addr: 85.158.48.34 forward-addr: 85.158.50.50
forward-zone: name: ttel.ru forward-addr: 85.158.48.34 forward-addr: 85.158.50.50
forward-zone: name: tensortelecom.ru forward-addr: 85.158.48.34 forward-addr: 85.158.50.50
## Beeline
forward-zone: name: local forward-addr: 213.234.192.8 forward-addr: 85.21.192.3
forward-zone: name: beeline.ru forward-addr: 213.234.192.8 forward-addr: 85.21.192.3
forward-zone: name: corbina.ru forward-addr: 213.234.192.8 forward-addr: 85.21.192.3
forward-zone: name: corbina.net forward-addr: 213.234.192.8 forward-addr: 85.21.192.3
forward-zone: name: yaroslavl.biz forward-addr: 213.234.192.8 forward-addr: 85.21.192.3
forward-zone: name: yarunlim.ru forward-addr: 213.234.192.8 forward-addr: 85.21.192.3
forward-zone: name: golden.ru forward-addr: 213.234.192.8 forward-addr: 85.21.192.3
man pdnsd (8) - DNS прокси демон
P.S. перенес в "я рекомендую" + теги