Долгое время настройка DNS сервера, особенно bind мне
казалась большой магией… До тех пор, пока не пришлось настроить его
самому. Под Ubuntu 10.04. В этой статье я постараюсь описать этот
процесс максимально подробно и по шагам.
Чтобы не писать sudo для каждой команды запустим консоль от имени рута:
Затем установим сам DNS сервер bind:
Судя по документациям и советам многих системных администраторов,
bind настоятельно рекомендуют запускать в chroot среде. Не будем
отступать от этого правила. Для этого сначала остановим bind:
Чтобы показать серверу, что он должен запускаться в chroot среде нужно отредактировать файл /etc/default/bind9:
изменив в нем строку
OPTIONS="-u bind" на
OPTIONS="-u bind -t /var/lib/named"
Теперь нужно создать все необходимые для работы bind в croot среде директории:
|
mkdir -p /var/lib/named/etc
mkdir /var/lib/named/dev
mkdir -p /var/lib/named/var/cache/bind
mkdir -p /var/lib/named/var/run/bind/run
|
Далее перемещаем все текущие файлы конфигурации bind в созданный каталог:
|
mv /etc/bind /var/lib/named/etc
|
Чтобы Ubuntu могла найти файлы bind, например для обновления, создадим со старого места конфигов симлинк на новые:
|
ln -s /var/lib/named/etc/bind /etc/bind
|
в chroot-каталоге создадим null и random девайсы и установим права на директории:
|
mknod /var/lib/named/dev/null c 1 3
mknod /var/lib/named/dev/random c 1 8
chmod 666 /var/lib/named/dev/null /var/lib/named/dev/random
chown -R bind:bind /var/lib/named/var/ *
chown -R bind:bind /var/lib/named/etc/bind
|
Теперь нужно удалить настройку bind из apparmor, так как apparmor становится ненужным, при запуске bind в chroot окружении
|
rm /etc/apparmor .d /usr .sbin.named
|
Перезапускаем apparmor:
|
/etc/init .d /apparmor restart
|
и запускаем bind9:
Если все сделано правильно, то ошибок быть не должно. Если bind вдруг
не запустился, то советую проверить /var/log/syslog на наличие ошибок:
Если все работает правильно, то самое время приступить к настройке зоны для нашего домена domain.com
Создадим файл конфигурации зон:
|
nano /var/lib/named/etc/bind/zones .conf
|
со следующим содержанием:
|
zone "domain.com" {
type master;
file "/etc/bind/domain.com";
};
|
и установим его владельца:
|
chown bind:bind /var/lib/named/etc/bind/zones .conf
|
Отредактируем файл конфигурации bind, чтобы он цеплял конфигурацию зон:
|
nano /var/lib/named/etc/bind/named .conf
|
добавим в него строку
include "zones.conf";
Осталось лишь создать файл нашей зоны domain.com:
|
nano /var/lib/named/etc/bind/domain .com
|
со следующим содержанием:
|
$TTL 86400
@ IN SOA ns1.domain.com. root.domain.com. (
2010081301 ; Serial
3600 ; Refresh
900 ; Retry
604800 ; Expire
86400 ; Minimum
);
@ IN NS ns1.domain.com.
@ IN A 192.168.1.1
ns1 IN A 192.168.1.1
ns2 IN A 192.168.1.1
www IN CNAME @
|
domain.com — соответственно имя вашего домена. Поменяйте значение
перед параметром ;Serial на текущую дату. Последние цифры в строке с
датой (01) обозначают сколько раз раз зона редактировалась за текущие
сутки. Так же не забудьте поменять IP адрес, с которым вы связываете
свой домен (в моем случае это 192.168.1.1)
После сохранения файла выставляем его владельца:
|
chown bind:bind /var/lib/named/etc/bind/domain .com
|
Все готово. Теперь осталось обновить конфигурацию bind командой
и проверять работу сервера:
|
nslookup domain.com 127.0.0.1
|
Если все работает верно, вы должны получить от сервера примерно такой ответ:
|
Server: 127.0.0.1
Address: 127.0.0.1#53
Non-authoritative answer:
Name: domain.com
Address: 192.168.1.1
|
На этом настройка завершена. Надеюсь, что у вас все получилось.
Если что-то не получилось, то в первую очередь советую посмотреть лог:
Обычно из него бывает все понятно.
За более полной информацией обращайтесь на
https://www.isc.org/software/bind
Скопипастено для личных целей
отсюда :)