DNS сервер · 2 min read · Oct 02, 2025

Чистый DNS-сервер djbDNS на CentOS - dnscache и tinydns - от А до Я

Чистый DNS-сервер djbDNS на CentOS - dnscache и tinydns - от А до Я

Что такое djbDNS? И почему мы используем djbDNS? Существует новая точка зрения на предоставление DNS-сервиса - каждая функциональность DNS-сервера является отдельным сервисом, таким как авторитет, кэш, пересылка и так далее. Другим отличием являются демон-инструменты, которые быстро перезапускают сервисы, чтобы предотвратить зомби.

Требования:

Чистая установка CentOS 5.4

Войдите как root.

# yum update
# yum install gcc
# mkdir pkg
# cd pkg

Первый шаг - установить демон-инструменты:

# cd ~/pkg
# wget http://cr.yp.to/daemontools/daemontools-0.76.tar.gz
# gunzip daemontools-0.76.tar
# tar -xpf daemontools-0.76.tar
# rm -f daemontools-0.76.tar
# cd admin/daemontools-0.76
# vi src/conf-cc

Добавьте следующую строку в конец строки gcc:

-include /usr/include/errno.h
# ./package/install

Еще один пакет, который нам нужно подготовить для функциональности djbdns, это ucspi:

# cd ~/pkg
# wget http://cr.yp.to/ucspi-tcp/ucspi-tcp-0.88.tar.gz
# gunzip ucspi-tcp-0.88.tar
# tar -xf ucspi-tcp-0.88.tar
# cd ucspi-tcp-0.88
# vi src/conf-cc

Добавьте следующую строку в конец строки gcc:

-include /usr/include/errno.h
# make
# make setup check

Следующий шаг - публикация документа:

# cd ~/pkg
# wget http://cr.yp.to/djbdns/doc.tar.gz

Далее мы разархивируем документы в /doc:

# gunzip < doc.tar.gz | (cd /; tar -xf -)

Используйте следующий скрипт для объединения системных документов:

#!/bin/sh
for i in packages commands cfunctions fileformats
do
  sort -f /dev/null `find /doc/merge -name $i.html` > /doc/$i.new
  mv /doc/$i.new /doc/$i.html
done

Сохраните скрипт в файл: script.sh

# chmod +x script.sh
# ./script.sh
# cd ~/pkg
# wget http://cr.yp.to/djbdns/djbdns-1.05.tar.gz
# gunzip djbdns-1.05.tar
# tar -xf djbdns-1.05.tar
# cd djbdns-1.05
# vi src/conf-cc

Добавьте следующую строку в конец строки gcc:

-include /usr/include/errno.h
# make
# make setup check

Все компиляции завершены.

Следующий шаг - конфигурация DNS-сервера.

DNSCACHE

Создайте две системные учетные записи:

# useradd -d /var/dnscache -s /bin/false dnscache
# useradd -d /var/dnscache -s /bin/false dnslog

Настройте кэш:

# dnscache-conf dnscache dnslog /var/dnscache/dnscache 

Пример: dnscache-conf dnscache dnslog /var/dnscache/dnscache 192.168.20.1

Разрешите остальной части вашей сети запрашивать dnscache:

# touch /var/dnscache/dnscache/root/ip/

Пример: touch /var/dnscache/dnscache/root/ip/192.168

Добавьте dnscache в список сервисов, которые будут контролироваться svscan:

# ln -sf /var/dnscache/dnscache /service/

Если вам нравится ms-windows… вы можете перезагрузить систему, чтобы убедиться, что все на месте.

Есть момент, что вы все еще не можете запрашивать с вашего кэш-сервера, потому что ваши клиенты теперь могут быть разрешены в обратном режиме.

Как уже упоминалось, это одна из функций безопасности dns-кэша для обратной проверки клиентов. Поэтому на следующем шаге мы будем работать с tinydns, чтобы он действовал для нас.

DNSTINY

Снова нам нужны две системные учетные записи:

# useradd -d /var/dnscache -s /bin/false tinydns
# useradd -d /var/dnscache -s /bin/false tinylog
# tinydns-conf tinydns tinylog /var/dnscache/tinydns 127.0.0.1

Теперь пришло время добавить узлы в базу данных DNS:

# cd /var/dnscache/tinydns/root
# ./add-ns internal 192.168.20.1
# ./add-ns 20.168.192.in-addr.arpa 192.168.20.1
# ./add-mx internal 192.168.20.2
# ./add-host ns.internal 192.168.20.1
# ./add-host mail.internal 192.168.20.2
# ./add-alias unagi.internal 192.168.20.2
# make

Эти узлы будут добавлены в файл базы данных /var/dnscache/tinydns/root/data, который вы можете редактировать вручную.

Последний шаг - запуск DNS-сервиса:

# ln -sf /var/dnscache/tinydns /service
Share: X/Twitter LinkedIn

Get new posts in your inbox

No spam. Unsubscribe anytime.