Настройка 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 checkb. 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/installvi /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 svscanc. 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
Теперь вам нужно разрешить хостам 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.comb. Для обратного DNS для вышеуказанного сервера имен:
.10.in-addr.arpa::ns1.in.domain.com
.10.in-addr.arpa::ns2.in.domain.comc. Для MX записей:
@in.domain.com:165.212.65.113:mx.usa.net:10
@in.domain.com:10.20.0.12:mail.in.domain.com:20d. A записи:
=host0001.in.domain.com:10.10.0.101e. Записи-алиасы для хостов:
+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. Вот и все.
Get new posts in your inbox
No spam. Unsubscribe anytime.