Разработывая сайты под Ubuntu, я столкнулся с необходимостью постоянно править файл /etc/hosts каждый раз, создавая новый сайт. Есть много средств, которые могут упростить этот процесс. Bind достаточно серьезный инструмент и подробностей по его использованию, лично я, пока не изучил. Здесь я представлю только один способ его использования, не особо подробный.
Практически все русскояычные howto скопипащенны с официальной документации и дают не рабочую конфигурацию. И если Вы пришли сюда из поисковика и вероятно Вы уже натыкались на одну и ту же пасту, где bind советуют запускать в chroot окружении, а так же опускают вопрос настройки зоны обратного просмотра, оставляя этот вопрос не решённым.
Bind очень чувствителен к ошибкам, и малейшие синтаксические ошибки не дадут загрузить файл зоны.
Если bind уже был установлен, то лучше сделать:
$ sudo apt-get purge -f bind9 && sudo apt-get install -f bind9
Создадим зону прямого просмотра для doomgate.local и зону обратного просмотра 0.168.192.in-addr.arpa, всё это будет происходить на системе Ubuntu (так же это должно работать на Debian Squeeze, CentOS и FreeBSD). Сервер имеет имя dns и в домене должен представляться как dns.doomgate.local
Ставим bind:$ apt-get install bind9
Отредактируем /etc/bind/named.conf.options:$ vim /etc/bind/named.conf.options
Приведём его в следующий вид:
acl mynetwork { 192.168.0.0/24; 127.0.0.1; };
options {
directory "/var/cache/bind";
auth-nxdomain no;
listen-on-v6 { none; };
allow-query { mynetwork; };
};
Опция acl ограничивает адреса, которые могут запрашивать зоны с нашего сервера. В данном примере это разрешено подсети 192.168.0.0/24.
И сразу же отправляемся редактировать файл /etc/bind/named.conf.local.
$ vim /etc/bind/named.conf.local
Добавляем в него файлы наших зон:
zone "doomgate.local" {
type master;
file "/etc/bind/db.doomgate.local";
};
zone "0.168.192.in-addr.arpa" {
type master;
file "/etc/bind/0.168.192.in-addr.arpa.zone";
};
Зона прямого просмотра
Создадим файл для зоны прямого просмотра:
$ vim /etc/bind/db.doomgate.local
Со следующим содержимым:
$TTL 30
$ORIGIN doomgate.local.
@ IN SOA dns.doomgate.local. hostmaster.doomgate.local. (
2011100902 ;Serial
1d ;Refresh
1h ;Retry
1w ;Expire
2h ) ;Negative Cache TTL
;
@ IN NS dns.doomgate.local.
@ IN A 192.168.0.20
server IN A 192.168.0.2
serverkvm IN A 192.168.0.5
webserver IN A 192.168.0.10
dns IN A 192.168.0.20
avto-diagnostika IN CNAME webserver
pma IN CNAME webserver
project-e1 IN CNAME webserver
Где:
$ORIGIN - оригинальное имя зоны;
dns.doomgate.local. - как я уже говорил имя днс-сервера (обязательна точка в конце);
hostmaster.doomgate.local. - email администратора сервера, только вместо символа @ используется точка;
Serial - серийный номер зоны в формате ГГГГММДД и номер текущего изменения за этот день. (Важно, при каждом изменении, нужно редактировать этот номер увеличивая его в большую сторону) Пример: 2011100901;
Refresh - период времени с которым вторичный сервер днс обращается к основному;
Retry - период с которым вторичный сервер будет повторять попытки при неудачном обновлении;
Expire - максимальное время использования данных на вторичном сервере, после которого делается обязательное обновление;
Negative Cache TTL - время актуальности данных в кэше запросов.
Далее идут записи имён хостов с ip-адресами или псевдонимами.
В конце этого файла нужно обязательно оставить пустую строку!
Зона обратного просмотра
Создадим файл для зоны обратного просмотра:
$ vim /etc/bind/0.168.192.in-addr.arpa.zone
И запишем туда следующее:
$TTL 30
$ORIGIN 0.168.192.in-addr.arpa.
@ IN SOA dns.doomgate.local. hostmaster.doomgate.local. (
2011100907 ;Serial
1d ;Refresh
1h ;Retry
1w ;Expire
2h) ;Negative Cache TTL
;
NS dns.doomgate.local.
2 PTR server.doomgate.local.
5 PTR serverkvm.doomgate.lcoal.
10 PTR webserver.doomgate.local.
20 PTR dns.doomgate.local.
В этом файле должны быть только записи типа PTR, никаких IN тут быть не должно.
И в конце этого файла так же должна быть пустая строка.
Обновим информацию о зонах
$ rndc reload
И проверим файлы зон на наличие ошибок командой:
$ named-checkconf -z
Мы должны получить примерно вот такой вывод:
zone doomgate.local/IN: loaded serial 2 zone 0.168.192.in-addr.arpa/IN: loaded serial 1 zone localhost/IN: loaded serial 2 zone 127.in-addr.arpa/IN: loaded serial 1 zone 0.in-addr.arpa/IN: loaded serial 1 zone 255.in-addr.arpa/IN: loaded serial 1
Если никаких ошибок нет, то продолжаем дальше, если же есть, то вероятнее всего Вы допустили ошибку где-то в конфигурационном файле.
Теперь необходимо отредактировать resolv.conf для того, чтобы наш сервер брал настройки сам с себя:
$ vim /etc/resolv.conf
Приводим его в следующий вид:
search doomgate.local domain doomgate.local nameserver 127.0.0.1
И наконец настало время проверить работу нашего днс-сервера!
Проверим зону прямого просмотра:
$ nslookup webserver.doomgate.local
Server: 127.0.0.1 Address: 127.0.0.1#53 Name: webserver.doomgate.local Address: 192.168.0.10
И зону обратного просмотра:
$ nslookup 192.168.0.2
Server: 127.0.0.1 Address: 127.0.0.1#53 2.0.168.192.in-addr.arpa name = server.doomgate.local.
Если у Вас обе эти команды отработали с аналогичным результатом, то поздравляю, Вам удалось настроить bind!