Настройка NS сервера на BIND в Linux.

В сети Интернет каждый компьютер, сервер и тому подобное имеет свой IP-адрес. Все обращения к тому или иному участнику сети идут именно по IP-адресу. Но это очень не удобно для человека, по этому придумали DNS (Domain Name System). Основная цель DNS — это отображение доменных имен в IP адреса и наоборот — IP в DNS.  В статье я рассмотрю работу NS сервера на BIND. Основу BIND составляет демон named, который для своей работы использует порт UDP/53 и для некоторых запросов TCP/53. Начнем немного с теории :

Ресурсные записи

Ресурсные записи это собственно та информация которую передает DNS. Каждая запись несет в себе информацию соответствия какого то имени и служебно информации DNS, например имени домена — IP адреса.

Поля записи :
  • имя (NAME) — доменное имя, к которому привязана данная запись, либо IP адрес.
  • TTL(Time To Live) — время хранение записи в кэше DNS (после указанного времени запись будет удалена). Данное поле может быть не указано, но тогда она должна быть указана в начале файла зоны и будет наследоваться всеми записями.
  • класс (CLASS) — определяет тип сети. В 99% это будет IN обозначает Internet.
  • тип (TYPE)— тип записи.
  • данные (DATA) — различная информация.

Со всем набором ресурсных записей можно ознакомиться в wikipedia. Наиболее частые записи :

  • А — (запись адреса) отображает имя хоста(доменное имя) на адрес IPv4. Пример следующая запись отражает доменное имя в  IP адрес хоста  (NAME test.ru, TTL 86400, CLASS IN, DATA 192.168.0.10) :

test.ru     86400       IN     A     192.168.0.10

  • AAAA (IPv6 address record) аналогична записи A, но для IPv6.
  • CNAME (каноническая запись имени (псевдоним)) — отображает алиас на реальное имя домена.

www        86400     IN    CNAM    test.ru

  • NS (сервер имен) указывает на DNS сервер, обслуживающий данный домен.
  • PTR (pointer) — отображает IP-адрес в доменное имя.
  • SOA (Start of Authority/начальная запись зоны) — самая главная запись. Описывает основные/начальные настройки зоны. Для каждой зоны должна существовать только одна запись.  Поле Name содержит имя домена/зоны, поля TTL, CLASS — стандартное значение, поле TYPE принимает значение SOA, а поле DATA состоит из нескольких значений, разделенных пробелами: имя главного DNS (Primary Name Server), адрес администратора зоны, далее в скобках — серийный номер файла зоны (Serial number). При каждом внесении изменений в файл зоны данное значение необходимо увеличивать, это указывает вторичным серверам, что зона изменена, и что им необходимо обновить у себя зону. Далее — значения таймеров (Refresh — указывает, как часто вторичные серверы должны опрашивать первичный, чтобы узнать, не увеличился ли серийный номер зоны, Retry — время ожидания после неудачной попытки опроса, Expire — максимальное время, в течение которого вторичный сервер может использовать информацию о полученной зоне, Minimum TTL — минимальное время, в течение которого данные остаются в кэше вторичного сервера). Ниже в примере приведено 2 одинаковые записи SOA (хотя вторая и записана в несколько строк), но они одинаковы по значению и формат записи второй более понятен в силу его структурированности:

test.ru   86400 IN SOA ns1.test.ru. hostmaster.test.ru. 2011032003 28800 7200 604800 86400

         tets.ru 86400 IN SOA ns1.test.ru. hostmaster.test.ru. 
                                       2011032003 ; serial (серийный номер)
                                       28800 ; refresh (обновление)
                                       7200 ; retry (повторная попытка)
                                       604800 ; expire (срок годности)
                                       86400) ; minimum TTL (минимум)

Установка и настройка BIND.

Про BIND мы уже писали. Так что опустим общие подробности и перейдем сразу к настройке NS сервера. Первым делом на Master сервере надо создать/отредактировать файл зоны test.zone :

$TTL 3600      ; // Time to live время жизни, по умолчанию ставим 1 час
test.ru.        IN      SOA     ns01.test.ru. root.test.ru. ( //Не забываем что указывать точки в конце URL обязательно!
                                1               ; Serial
                                600             ; Refresh
                                3600            ; Retry
                                1w              ; Expire
                                300             ; Minimum TTL
                        )
        IN      NS      ns01.test.ru. // ns записи
        IN      NS      ns02.test.ru.
        IN      A       192.168.10.20 // IP адрес сайта
ns01    IN      A       192.168.10.50 //IP адрес ns серверов
ns02    IN      A       192.168.10.60

Теперь добавим нашу зону в файл настройки /etc/bind/named.conf :

 
zone "test.ru" IN {
 type master; // Тип сервера , мастер.
 file "/etc/bind/test.zone"; // Путь к файлу зоны
 allow-transfer {192.168.10.60;}; // Указывает список серверов, которым разрешено брать зону с сервера
 allow-update {192.168.10.60;}; // Разрешаем обновление.
 notify yes; // Уведомлять slave сервера об изменениях в зоне
};  

Так же можно добавить  allow-recursion { none; }; в параметры options . Для отключение рекурсивных запросов, мы же сами отвечает за свою зону и опрашивать вышестоящие сервера DNS нету смысла.

Slave сервер.

Настройка дополнительный серверов еще проще. К стати для нормальной работы требуется как минимум Два сервера NS, главный и вспомогательный.

Отредактируем файл /etc/bind/named.conf :

zone "test.ru" IN {
 type slave;  // slave сервер
 file "/etc/bind/zone/mastet.zone"; // файл куда записывать параметры зоны.
 masters { 192.168.10.50; }; // IP адрес главного сервера
 allow-transfer {"none";}; // Не передавать зону другим серверам
 };

Создадим новую папку zone и сделаем ее владельцам bind.

mkdir /etc/bind/zone

chown bind:bind /etc/bind/zone

Перезапускаем сервер bind и он сам получает файл зоны с мастер сервера. Вот и вся настройка.

Не забываем поменять ns сервера у Регистратора домена! Так же создать запить типа А для главного ns сервера. Успехов.