Установка и настройка DNS-сервера BIND в Linux

BIND – наиболее распространенное open-source приложение, в котором реализованы протоколы DNS, предоставляющие возможность преобразования доменных имен в IP-адреса и наоборот.

Данная статья представляет собой руководство по быстрой настройке DNS-сервера в Linux при помощи BIND. Мы не будем подробно разбирать, что такое система DNS и как она работает, а сосредоточимся на примере настройки своей зоны и файла конфигурации для домена/узла с поддержкой сервисов www и электронной почты.

В нашем примере мы будем использовать следующие параметры:
IP-адрес, на котором будет установлен сервер имен: 172.31.0.122
имя домена/узла: itproffi.ru
авторитативные сервера имен для зоны itproffi.ru: ns1.itproffi.ru (172.31.1.10) и ns2. itproffi.ru (172.31.1.11)
службы www и электронной почты для itproffi.ru будут использовать адрес 172.31.1.10

Установка сервера bind

Установка bind очень проста – нужно воспользоваться менеджером пакетов. В Debian и Ubuntu выполните следующую команду:

apt-get install bind9 dnsutils

В CentOS или Fedora:

yum install bind dnsutils

Пакет dnsutils необязателен для запуска сервера bind, но для тестирования конфигурации мы будем пользоваться командой dig из этого пакета.

Создание файла зоны DNS

Дальнейшие примеры будут для Ubuntu/Debian, но также подходят и для Centos/RedHat, только директория с настройками зон в CentOS будет находиться в /etc/named/ , а основной файл конфигурации /etc/named.conf. Для начала нам потребуется создать новый файл зоны для домена itproffi.ru. Перейдите в директорию /etc/bind/. создайте в ней поддиректорию zones/master/ и перейдите в нее, выполнив следующую последовательность команд:

cd /etc/bind
mkdir -p zones/master
cd zones/master/

Директория /etc/bind/zones/master будет содержать файл зоны для домена itproffi.ru. При желании можно использовать другую директорию. Файл зоны db.itproffi.ru будет содержать запись DNS, которая поможет серверу имен установить соответствие полного доменного имени IP-адресу. Создайте этот файл со следующим содержимым:

;
; Файл данных BIND для itproffi.ru
;
$TTL 3h
@ IN SOA ns1.itproffi.ru. admin.itproffi.ru. (
1 ; серийный номер
3h ; обновление каждые 3 часа
1h ; повторная попытка через час
1w ; срок годности – 1 неделя
1h ) ; хранение кэша отказов 1 час;
@ IN NS ns1.itproffi.ru.
@ IN NS ns2.itproffi.ru.

itproffi.ru. IN MX 10 mail.itproffi.ru.
itproffi.ru. IN A 172.31.1.10
ns1 IN A 172.31.1.10
ns2 IN A 172.31.1.11
www IN CNAME itproffi.ru.
mail IN A 172.31.1.10
ftp IN CNAME itproffi.ru.

Рассмотрим ключевые строки этого файла:

  • Запись SOA: авторитативный сервер имен для itproffi.ru – это ns1.itproffi.ru, адрес ответственного за зону DNS администратора – admin@itproffi.ru
  • Записи NS: два сервера имен для зоны itproffi.ru – ns[1,2].itproffi.ru
  • Запись MX: почтовый сервер для itproffi.ru. Число 10 означает уровень приоритета
  • Записи A: A означает «адрес» (address). Другими словами, ns1 в зоне itproffi.ru будет иметь адрес 172.31.1.10
  • Запись CNAME (Canonical Name – каноническое имя): привязывает одно доменное имя к другому (каноническому), например, устанавливает соответствие mail.itproffi.ru и itproffi.ru.

Настройка обратной зоны

На данном этапе DNS-сервер bind может выдать IP-адрес, связанный с узлом itproffi.ru. Теперь нам нужно научить наш сервер имен обратному процессу, то есть устанавливать соответствие имени IP-адресу. Для этого создадим еще один файл db.172.31.1 со следующим содержимым:

;
; Обратный файл данных BIND для 1.31.172.in-addr.arpa
;
$TTL 604800
1.31.172.in-addr.arpa. IN SOA ns1.itproffi.ru. admin.itproffi.ru. (
1 ; серийный номер
3h ; обновление каждые 3 часа
1h ; повторная попытка через час
1w ; срок годности – 1 неделя
1h ) ; хранение кэша отказов 1 час;
1.31.172.in-addr.arpa. IN NS ns1.itproffi.ru.
1.31.172.in-addr.arpa. IN NS ns2.itproffi.ru.
10.1.31.172.in-addr.arpa. IN PTR itproffi.ru.

Запись PTR: DNS-запись, используемая для определения соответствия IP-адреса имени узла.

Настройка файла конфигурации bind

На данный момент у нас должно быть два файла:

/etc/bind/zones/master/db.itproffi.ru
/etc/bind/zones/master/db.172.31.1

Теперь требуется вставить имена обоих файлов зоны в файл конфигурации bind /etc/bind/named.conf.local. Для этого добавьте в файл следующие строки:

zone "itproffi.ru" {
type master;
file "/etc/bind/zones/master/db.itproffi.ru";
};

zone "1.31.172.in-addr.arpa" {
type master;
file "/etc/bind/zones/master/db.172.31.1";
};

Последний момент перед проверкой конфигурации – внести в файл named.conf.options IP-адрес стабильного DNS-сервера. Он будет использоваться, если локальный DNS-сервер не будет знать ответ на запрос разрешения имени. Часто этот адрес предоставляется интернет-провайдером, но если вы поклонник Google, можно указать адрес 8.8.8.8 или 8.8.4.4.

Замените следующий блок текста в файле named.conf.options:

// forwarders {
// 0.0.0.0;
// };

на блок текста с адресом стабильного DNS-сервера

forwarders {
8.8.4.4;
};

Если вы планируйте что к вашему серверу будут подключаться другие компьютеры, то нужно разрешить в опциях внешние подключения. Для этого в основном файле конфигурации, в секции options добавьте или замените следующие правила

listen-on port 53 { any; };
allow-query { any; };

А лучше, для безопасности вместо any пропишите ваши сети с которых разрешено подключение

listen-on port 53 { 192.168.0.0/24; };
allow-query { 192.168.0.0/24; };

Если этого не сделать, то при попытке обращения к серверу с другого компьютера вы получите ошибку

Query refused

Проверка файлов зоны и конфигурации

Прежде чем попытаться запустить сервер имен с новой зоной и конфигурацией, можно воспользоваться некоторыми инструментами, чтобы проверить, что конфигурация корректна и не содержит ошибок.

Для проверки файлов конфигурации выполните следующую команду:

named-checkconf

С этой командой работает простое правило: отсутствие результата – это хороший результат. Если команда ничего не возвращает, значит ошибок в ваших файлах конфигурации не обнаружено.

Для проверки файлов зоны DNS можно воспользоваться командой named-checkzone:

named-checkzone itproffi.ru /etc/bind/zones/master/db.itproffi.ru
zone itproffi.ru/IN: loaded serial 1
OK

Проверка обратной зоны

named-checkzone 1.31.172.in-addr.arpa /etc/bind/zones/master/db.172.31.1
zone 1.31.172.in-addr.arpa/IN: loaded serial 1
OK

Запуск и перезапуск сервера bind

Теперь мы можем запускать сервер bind:

/etc/init.d/bind9 start

Если сервер уже был запущен, его можно перезапустить командой restart:

/etc/init.d/bind9 restart

Для того что бы перечитать конфигурацию не перезапуская сервер, используйте команду

 rndc reload

Тестирование сервера bind

Для тестирования новой конфигурации сервера имен bind нам пригодится команда dig из пакета dnsutils. Эту команду можно запустить на любом компьютере с сетевым доступом к вашему DNS-серверу, но лучше всего начать тестирование с локального узла. В рассматриваемом нами примере IP-адрес сервера имен 172.31.0.122. Сначала проверим прямое разрешение имени (получение IP-адреса по доменному имени):

dig @172.31.0.122 www.itproffi.ru

Теперь проверим обратную зону:

dig @172.31.0.122 -x 172.31.1.10

Если вы получили аналогичные результаты, то зона DNS настроена правильно. Вместо команды dig для тестирования можно также использовать команду nslookup.

nslookup itproffi.ru 172.31.0.122

nslookup 172.31.1.10 172.31.0.122

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

Понравилась статья? Поделиться с друзьями:
Comments: 1
  1. Алексей

    При nslookup обратной зоны у меня вместо имени моего домена выскакивает имя какого-то левого домена.

Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!:

ИТ Проффи

Сообщить об опечатке

Текст, который будет отправлен нашим редакторам: