Разработывая сайты под 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!