В сети Интернет каждый компьютер, сервер и тому подобное имеет свой 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 сервера. Успехов.