Настройка DNS · 5 min read · Nov 27, 2025

Идеальная настройка DjbDNS на сервере Ubuntu 8.04 (amd64) Hardy

Идеальная настройка DjbDNS на сервере Ubuntu 8.04 (amd64) Hardy

DjbDNS — это набор инструментов системы доменных имен. Он включает в себя программное обеспечение для всех основных операций DNS:

DNS кэш: Поиск адресов интернет-хостов. Когда браузер хочет связаться с www.hotwired.com, он сначала запрашивает DNS-кэш, такой как dnscache от djbdns, чтобы найти IP-адрес www.hotwired.com. Провайдеры интернет-услуг запускают dnscache, чтобы находить IP-адреса, запрашиваемые их клиентами. Если вы используете домашний компьютер или рабочую станцию, вы можете запустить свой собственный dnscache, чтобы ускорить веб-серфинг.

DNS сервер: Публикация адресов интернет-хостов. IP-адрес www.hotwired.com публикуется DNS-серверами HotWired. djbdns включает в себя универсальный DNS-сервер, tinydns; сетевые администраторы запускают tinydns, чтобы публиковать IP-адреса своих компьютеров. djbdns также включает специальные серверы для публикации DNS-стен и RBL.

DNS клиент: Взаимодействие с DNS-кэшем. djbdns включает в себя библиотеку C для DNS-клиента и несколько утилит командной строки для DNS-клиента. Программисты используют эти инструменты для отправки запросов к DNS-кэшам.

DjbDNS также включает несколько инструментов отладки DNS, особенно dnstrace, который администраторы используют для диагностики неправильно настроенных удаленных серверов.

Функции безопасности:

  • dnscache работает как выделенный не-root uid внутри chroot тюрьмы, поэтому он не может затрагивать остальную часть машины.
  • tinydns работает как другой выделенный не-root uid внутри своей собственной chroot тюрьмы.
  • walldns работает как другой выделенный не-root uid внутри своей собственной chroot тюрьмы.
  • dnscache отбрасывает DNS-запросы снаружи указанного списка IP-адресов.
  • dnscache и библиотека dns используют новый идентификатор запроса и новый UDP-порт для каждого пакета запроса. Они отбрасывают DNS-ответы с любого IP-адреса, кроме того, к которому только что был отправлен соответствующий запрос.
  • dnscache использует криптографический генератор для выбора непредсказуемых номеров портов и идентификаторов.
  • dnscache устойчива к отравлению кэша.

tinydns никогда не кэширует информацию. Он не поддерживает рекурсию.

Предварительная установка

apt-get install build-essential  
mkdir /tmp/downloads  
cd $_  
wget -c  HYPERLINK "http://www.thedjbway.org/patches/djb_errno_patches.tgz" http://www.thedjbway.org/patches/djb_errno_patches.tgz  
tar -zxvf djb_errno_patches.tgz  
wget -c   HYPERLINK "http://cr.yp.to/daemontools/daemontools-0.76.tar.gz" http://cr.yp.to/daemontools/daemontools-0.76.tar.gz  
wget -c  HYPERLINK "http://cr.yp.to/ucspi-tcp/ucspi-tcp-0.88.tar.gz" http://cr.yp.to/ucspi-tcp/ucspi-tcp-0.88.tar.gz  
wget -c  HYPERLINK "http://cr.yp.to/djbdns/djbdns-1.05.tar.gz" http://cr.yp.to/djbdns/djbdns-1.05.tar.gz

Установка всех пакетов

a. Установка ucspi-tcp-src:

cd /tmp/downloads  
tar -zxvf ucspi-tcp-0.88.tar.gz  
cd ucspi-tcp-0.88  
patch -p1 < /tmp/downloads/ucspi-tcp-0.88.errno.patch  
make  
make setup check

b. daemontools

cd /tmp/downloads  
tar -zxvf  daemontools-0.76.tar.gz  
cd admin/daemontools-0.76/  
touch /etc/inittab  
patch -p1 < /tmp/downloads/daemontools-0.76.errno.patch  
package/install
vi /etc/event.d/svscan
# svscan - daemontools

start on runlevel 2
start on runlevel 3
start on runlevel 4
start on runlevel 5
stop on runlevel 0
stop on runlevel 1
stop on runlevel 6

respawn
exec /command/svscanboot

Этот установщик только создает ссылки на все команды svscan в /command, поэтому лучше скопировать их:

cd /command  
rm -rf *  
cp /tmp/downloads/admin/daemontools/command/* /command/

Вот и все… затем (возможно, вам нужно будет перезагрузить) …

initctl start svscan

c. djbdns

cd /tmp/downloads  
tar -zxvf djbdns-1.05.tar.gz  
cd djbdns-1.05  
echo gcc -O2 -include /usr/include/errno.h > conf-cc   
make  
make setup check

Настройка пакетов

Создайте пользователей (если они не были созданы автоматически):

adduser --no-create-home --disabled-login --shell /bin/false dnscache  
adduser --no-create-home --disabled-login --shell /bin/false dnslog  
adduser --no-create-home --disabled-login --shell /bin/false tinydns

Настройка dnscache:

В нашем сценарии нам нужны каждый мастер и слейв сервер(ы) как “авторитетные”, так и “кэшированные”. Поэтому очень важно понять, как достичь этого с помощью djbdns. В отличие от bind, djbdns использует отдельный IP для каждого типа DNS-сервиса. По умолчанию каждая система готова с 2 IP => один host-IP и другой loopback-IP. Таким образом, любая система в LAN должна обращаться к кэшированному DNS, следовательно, host-IP для кэшированного DNS. А мы будем запускать авторитетный на loopback-IP, а затем связывать его с кэшированным DNS, так что хосты LAN могут запрашивать авторитетные записи хостов также.

mkdir /var/lib/svscan  
dnscache-conf dnscache dnslog /var/lib/svscan/dnscache   
ln -sf /var/lib/svscan/dnscache /service

Проверьте, что директория “supervise” была создана в /service/dnscache
Чтобы проверить, работает ли он: просто добавьте только одну запись, такую как ‘nameserver ’ в /etc/resolv.conf и проверьте какой-нибудь публичный веб-сайт с помощью ‘nslookup’ или ‘dig’ из командной строки.

Теперь вам нужно разрешить хостам LAN запрашивать с него. Просто создайте пустой файл с именем вашей сети или подсети:

touch /etc/dnscache/root/ip/

Вот и все. Теперь вы можете запрашивать с любого из хостов этой . Аналогично, вы можете разрешить несколько хостов, сетей или подсетей для запроса.
В отличие от bind, вы можете настроить размер кэша nameserver, отредактировав файл /etc/dnscache/env/CACHESIZE. Также вы можете вручную обновить или очистить кэш, выполнив следующую команду:

svc -t /service/dnscache

Временно вы можете остановить и запустить dnscache с помощью следующих команд:

svc -d /service/dnscache => чтобы остановить службу dnscache  
svc -u /service/dnscache => чтобы запустить службу dnscache

Настройка tinydns:

tinydns-conf tinydns dnslog /var/lib/svscan/tinydns   
ln -sf /var/lib/svscan/tinydns /service

Проверьте, что директория “supervise” была создана в /service/tinydns.

В них еще нет записей зоны для каких-либо доменов, но мы к этому вернемся немного позже. В отличие от bind, информация о зоне записывается в один файл (даже для нескольких зон, включая обратные зоны), и это /var/lib/svscan/tinydns/root/data. Это файл, который можно редактировать, который позже преобразуется в двоичный формат с помощью команды tinydns, и этот двоичный файл называется форматом cdb, так что этот двоичный файл — /var/lib/svscan/tinydns/root/data.cdb, откуда tinydns отвечает на все запросы. Синтаксис для записей зоны очень короткий и компактный по сравнению с bind. Вот некоторые примеры:

a. Для записи сервера имен:

  .in.domain.com:10.20.0.10:ns1.in.domain.com  
  .in.domain.com:10.20.0.12:ns2.in.domain.com

b. Для обратного DNS для вышеуказанного сервера имен:

  .10.in-addr.arpa::ns1.in.domain.com  
  .10.in-addr.arpa::ns2.in.domain.com

c. Для MX записей:

  @in.domain.com:165.212.65.113:mx.usa.net:10  
  @in.domain.com:10.20.0.12:mail.in.domain.com:20

d. A записи:

  =host0001.in.domain.com:10.10.0.101

e. Записи-алиасы для хостов:

  +host01.in.domain.com:10.10.0.101  
  +mysql01.in.domain.com:10.10.0.101

И наконец, преобразуйте /var/lib/svscan/tinydns/root/data в формат cdb с помощью

tinydns-data

или

cd /var/lib/svscan/tinydns/root  
make

В конце, чтобы связать эту информацию о зоне с кэшированным DNS-сервером, создайте файлы с именами, такими как 10.in-addr.arpa, in.domain.com и domain.com и т.д. в директории /var/lib/svscan/dnscache/root/servers/, содержимое которых должно быть 127.0.0.1 (Loopback-IP). Вот и все. Все настроено.

Примечание: Всякий раз, когда вы вносите изменения в данные и создаете измененный файл data.cdb, не забудьте обновить или очистить кэш.

svc -t /services/*

Настройка слейв-сервера с использованием Djbdbs

Просто следуйте http://www.seebq.com/dns-replication-using-rsync и внесите некоторые изменения в некоторые файлы Мастера и Слейвов.

a. Изменения в /var/lib/svscan/tinydns/root/Makefile мастера: отредактируйте файл следующим образом:

remote: data.cdb
  rsync -az -e ssh data.cdb :/service/tinydns/root/data.cdb
  ssh  'svc -t /service/dnscache'
data.cdb: data
  /usr/local/bin/tinydns-data
  svc -t /service/dnscache

b. Изменения в файле /var/libsvscan/tinydns/root/data слейва:

# Не редактируйте данные на этом компьютере! data.cdb скопирован с МАСТЕРА.
# Следующая строка защищает data.cdb, останавливая make.
9

Таким образом, если по ошибке кто-то введет команду make в директории /etc/tinydns/root или команду tinydns-data, это просто очистит кэш, так как в слейвах нет файла данных.

И да, просто настройте авто-ssh вход между мастером и слейвами, чтобы вышеуказанные изменения автоматизировали процесс. Вышеуказанные изменения будут передавать только файл data.cdb на слейвы. Таким образом, не будет шансов на разные данные между серверами имен, что означает согласованность во всех.

Резервное копирование и восстановление

Минимум, нам нужна просто копия файла /var/lib/svscan/tinydns/root/data или, в крайнем случае, весь /var/lib/svscan/dnscache и /var/lib/svscan/tinydns. Вот и все.

Для восстановления просто настройте dnscache или tinydns, это займет немного времени, и скопируйте резервные данные. Наконец, создайте символическую ссылку на /service. Вот и все.

Share: X/Twitter LinkedIn

Get new posts in your inbox

No spam. Unsubscribe anytime.