В этой статье мы рассмотрим один из вариантов развертывания DNS сервера для локальной сети на базе Ubuntu (у меня 14.04.3 LTS) и bind9. Для большинства других дистрибутивов отличия будут минимальны, для Debian-подобных их не будет совсем. Если вы уже ознакомились с предыдущей статьей по настройке DHCP сервера , то знаете, что изначально у меня был установлен неподдерживаемый дистрибутивом dnsmasq, который было решено заменить. Поскольку в прошлый раз я удалил dnsmasq (а он был как DHCP, так и DNS - сервером, который, кстати, не был должным образом сконфигурирован и не работал), то появилась потребность в DNS, чем я и решил на досуге заняться. Настройка DNS занимает немногим больше времени, но только из-за большего числа конфигурационных файлов.

И так, приступим. Первым делом актуализируем систему (обновим пакеты):

sudo apt-get update && sudo apt-get upgrade -y

Теперь установим DNS сервер bind9:

sudo apt-get install bind9

Теперь можно создать ключ для того, чтобы другие демоны могли обновлять DNS-записи этого сервера. Это могут быть как другие серверы в сети, так и другие сервисы этого же сервера. У меня это будет локально же установленный DHCP сервер. В теории, безопасности для, каждому сервису или серверу нужно сгенерировать свой ключ, тогда при компрометации одного из них, его можно просто заблокировать, а остальные продолжат работать. Но в моем случае обновлять записи будет только мой же DHCP сервер, так что я генерирую только один ключ:

dnssec-keygen -a HMAC-MD5 -b 128 -r /dev/urandom -n USER DHCP_UPDATER

В домашнем каталоге пользователя, от которого была запущена команда появится 2 файла:

Rw------- 1 user user 54 янв. 21 12:17 Kdhcp_updater.+157+55379.key
-rw------- 1 user user 165 янв. 21 12:17 Kdhcp_updater.+157+55379.private

Файлы пусть так и лежат, они не потеряются. Чтобы посмотреть необходимый ключ, выполните:

tail Kdhcp_updater*.private

Вы увидите примерно такое содержимое, кде значение "Key" и есть требуемый ключ:

Для начала сделаем наш DNS сервер кэширующим сервером имен, то есть заставим его разрешать доменные имена, запрашивая их у вышестоящего сервера. При первом запросе доменного имени от клиента сервер будет пересылать запрос на вышестоящий сервер, а затем уже будет возвращать его из своего кэша, что несколько увеличит скорость обработки DNS-запросов для клиентов в нашей сети. Так же мы укажем серверу, на каких адресах наш DNS будет обслуживать клиентов. Для этого нужно отредактировать файл /etc/bind/named.conf.options:

sudo cp /etc/bind/named.conf.options /etc/bind/named.conf.options.dist && sudo nano /etc/bind/named.conf.options

Добавим туда следующие строки:

forwarders {
212.120.160.130;
8.8.8.8;
};
listen-on {
127.0.0.1;
192.168.0.231;
};

Рассмотри эти секции:

  • forwarders - тут указываем вышестоящие серверы имен. Их количество не ограничено, при недоступности одного из них запросы будут пересылаться на следующий в списке. Я указал DNS своего провайдера и Google Public DNS;
  • lisnen-on - адреса локальных интерфейсов, на которые сервер будет принимать DNS-запросы клиентов.

В nano это выглядит примерно так:

Сохраняем конфигурацию. Теперь можно перезапустить DNS службу:

sudo service bind9 restart

Теперь наш сервер работает в качестве кэширующего DNS, что уже позволяет указать его в качестве DNS-сервера любому клиенту в нашей сети. Проверим его работу, для этого сгодится любой компьютер в сети или сам сервер. Я покажу на примере рабочей станции с Windows 7. Нажимаем Win+R, в появившемся окне пишем cmd, запустится командная оболочка windows. Пишем туда следующее:

nslookup - 192.168.0.231

Вы, естественно, пишете IP своего сервера. Запустится консольная утилита диагностики DNS для Windows - nslookup, а в качестве DNS сервера будет использован не системный DNS, а указанный в параметре. Nslookup хорош тем, что отсылает запросы на требуемый сервер минуя DNS-кэш Windows. Первым делом проверим работоспособность прямых DNS запросов:

Затем работоспособность обратных запросов:

В cmd.exe выглядит примерно так:

Если у Вас все точно так же, значит Ваш DNS уже отлично работает в качестве кэширующего сервера. В случае с google.ru мы так же можем видеть, что наш сервер способен разрешать и IPv6.

Теперь нам надо указать своему серверу использовать в качестве DNS самого себя. Делать это он будет по loopback-интерфейсу. Для этого нам надо изменить файл /etc/resolv.conf, но менять его самостоятельно смысла нет, поскольку перезагрузки его всеравно исправит network manager. Поэтому мы будем редактировать /etc/network/interfaces:

sudo nano /etc/network/interfaces

Находим там секцию с интерфейсом локальной сети (у меня это eth0) и добавляем или изменяем следующие строки:

dns-nameservers 127.0.0.1
dns-search ordaupfin.local

*вместо ordaupfin.local Вы указываете свой домен или рабочую группу.

Должно получиться примерно как у меня:

Теперь, если Вы находитесь непосредственно за консолью сервера физически, достаточно перезапустить сервис networking командой:

sudo service networking restart

А если вы подключены к серверу по SSH (как я), то активная сессия не позволит сервису перезапуститься, поэтому сервер придется перезагрузить:

Теперь можно проверить, действительно ли сервер направляет DNS-запросы самому себе, в терминал пишем:

Если в последних строчках пишет SERVER: 127.0.0.1 - значит все настроено правильно. Вот как должен выглядеть выхлоп dig на google.ru:

Если вы выполните dig google.ru повторно, то увидите, что время выполнение запроса существенно сократилось. Это связано с тем, что все последующие запросы по тому же домену сервер будет брать из кэша, не пересылая запрос на вышестоящий сервер.

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

Создаем зону прямого просмотра. Сервер уже содержит типовые файлы настроек, поэтому их нужно лишь скопировать в рабочую директорию и изменить под себя. Я использую свои данные, Вы, само собой, должны подставить свои. Копируем файл конфигурации зоны прямого просмотра и открываем его на редактирование:

sudo cp /etc/bind/db.local /var/lib/bind/db.ordaupfin.local && sudo nano /var/lib/bind/db.ordaupfin.local

Приведем его к такому виду (не забываем указывать свои данные вместо исходных):

; BIND data file for local loopback interface
;
$TTL 604800
20150122 ; Serial
604800 ; Refresh
86400 ; Retry
2419200 ; Expire
;
@ IN NS ubunturoute.ordaupfin.local.
@ IN A 192.168.0.231
@ IN AAAA::1
ubunturoute IN A 192.168.0.231

Теперь подобным образом создаем и редактируем файл зоны обратного просмотра:

sudo cp /etc/bind/db.127 /var/lib/bind/db.192 && sudo nano /var/lib/bind/db.192

И приводим его к следующему виду:

; BIND reverse data file for local loopback interface
;
$TTL 604800
@ IN SOA ubunturoute.ordaupfin.local. root.ubunturoute.ordaupfin.local. (
20150122 ; Serial
604800 ; Refresh
86400 ; Retry
2419200 ; Expire
604800) ; Negative Cache TTL
;
@ IN NS ubunturoute.
231 IN PTR ubunturoute.ordaupfin.local.

Обратите, пожалуйста, внимание на то, что "231", с которого начинается последняя строка - это последняя секция в IP-адресе моего сервера, В вашем случае, она, скорей всего, будет иной.

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

sudo cp /etc/bind/named.conf.local /etc/bind/named.conf.local.dist && sudo nano /etc/bind/named.conf.local

И добавляем туда такое содержимое:

key DHCP_UPDATER {
algorithm HMAC-MD5.SIG-ALG.REG.INT;
secret "s5Efp/-/-/-/wQtvg9rR7Q==";
};

zone "ordaupfin.local" {
type master;
file "/var/lib/bind/db.ordaupfin.local";
};

zone "0.168.192.in-addr.arpa" {
type master;
file "/var/lib/bind/db.192";
allow-update { key DHCP_UPDATER; };
};

  • key DHCP_UPDATER - информация для обновления записей, сюда Вы вписываете сгенерированный ранее свой ключ;
  • zone "ordaupfin.local" - зона прямого просмотра;
  • zone "0.168.192.in-addr.arpa" - зона обратного просмотра.

Выглядеть будет примерно так:

Сохраняем и перезапускаем сервер:

sudo service bind9 restart

Проверяем работу сервера:

nslookup ubunturoute.ordaupfin.local

Выхлоп должен быть таким:

Server: 127.0.0.1
Address: 127.0.0.1#53

Name: ubunturoute.ordaupfin.local
Address: 192.168.0.231

Подобным образом проверяем работоспособность зоны обратного просмотра:

nslookup 192.168.0.231

И получаем:

Server: 127.0.0.1
Address: 127.0.0.1#53

231.0.168.192.in-addr.arpa name = ubunturoute.ordaupfin.local.

Если у Вас все точно так, дело почти сделано. Почти, потому что теперь нам надо, чтобы наш DHCP сервер мог обновлять DNS-записи при появлении новых клиентов. Я буду рассматривать настройку на примере установленного у меня isc-dhcp-server. Редактируем /etc/dhcp/dhcpd.conf:

sudo nano /etc/dhcp/dhcpd.conf

И вставляем туда следующее содержимое:

ddns-update-style interim;
update-static-leases on;
key DHCP_UPDATER {
algorithm hmac-md5;
secret "s5EfpF53BBE9/-/tvg9rR7Q==";
} zone ordaupfin.local. {
primary 127.0.0.1;
key DHCP_UPDATER;
} zone 0.168.192.in-addr.arpa. {
primary 127.0.0.1;
key DHCP_UPDATER;
}

Вы, конечно, должны подставить свои значения. После этого перезапустим DNS и DHCP сервер. Если сервер запустился без ошибок - все отличено. Если сервер не запускается - внимательно смотрим в конфиги, кроме того в диагностике ошибок Вам очень поможет syslog:

tail -f /var/log/syslog

Спасибо за внимание!

Предложения и обсуждения данной статьи ведется в комментариях

Сервера DNS используются системой для преобразования сложных для запоминания IP адресов в простые доменные имена. Это делается потому что людям сложно запоминать несколько никак не связанных цифр, но очень просто запомнить слово.

Когда компьютеру нужно узнать IP адрес какого-либо домена, он отправляет запрос известному ему DNS серверу. Эти сервера могут быть получены автоматически от роутера по DHCP или же заданы в ручную. В этой статье мы рассмотрим как выполняется настройка DNS Ubuntu 16.04 и более старых версиях.

Раньше, для настройки DNS серверов, которые будут использоваться системой было достаточно внести адреса нужных серверов в файл /etc/resolv.conf. Но сейчас всей конфигурацией сети в Ubuntu управляет NetworkManager, а этот файл теперь представляет собой только ссылку на файл NetworkManager.

Этот способ до сих пор работает, но в нем вы можете настроить DNS на LiveCD, или до перезагрузки. После перезагрузки все настройки собьются и придется все делать заново. Поэтому, чтобы все сохранилось нужно выполнять все действия через интерфейс NetworkManager. Сначала откройте контекстное меню для значка сети на панели и выберите "Изменить подключения" :

Выберите ваше подключение и нажмите "Изменить" :

В открывшемся окне перейдите на вкладку "Параметры IPv4" :

Затем, в поле "Способ настройки" выберите "Автоматически (DHCP, только адрес)" :

Теперь немного ниже появиться поле "Серверы DNS" , где вам нужно прописать нужные серверы, можно несколько адресов через запятую. Например, можно указать сервера от Google:

Собственно, это все, но есть еще один способ настройки через консоль, если этот не сработал или вы предпочитаете работать из консоли.

Настройка DNS через терминал Ubuntu

В Ubuntu есть унифицированный интерфейс настройки сети, который настраивается через конфигурационный файл /etc/network/interfaces. Сначала смотрим список сетевых интерфейсов:

ls /sys/class/net/

Откройте файл для редактирования и найдите в нем имя своего сетевого интерфейса, например, auto enp0s3, если такой секции нет, ее нужно добавить:

sudo vi /etc/network/interfaces

auto enp0s3
iface enp0s3 inet dhcp

Затем, добавьте в эту секцию строчку:

dns-nameserver 8.8.8.8

Здесь адрес 8.8.8.8 - это адрес вашего DNS сервера. Но эта настройка сработает, только если ваш DHCP клиент не пытается назначить адрес самостоятельно. Чтобы указать DNS адрес на уровне DHCP сервера нужно добавить такую строчку в конфигурационный файл /etc/dhcp/dhclient.conf:

sudo vi /etc/dhcp/dhclient.conf

supersede domain-name-servers 8.8.8.8

Здесь тоже адрес 8.8.8.8 означает адрес DNS сервера. Для верности, вы можете добавить свои адреса DNS серверов в файл /etc/resolvconf/resolv.conf.d/base:

sudo vi /etc/resolvconf/resolv.conf.d/base

nameserver 8.8.8.8

Чтобы настройки вступили в силу необходимо перезапустить сеть:

sudo systemctl restart networking

Возможно, даже лучше будет если вы полностью перезагрузите компьютер. Теперь вы можете открыть /etc/resolv.conf и посмотреть применялся ли новый адрес DNS:

Как видите, в моем примере все заработало. Подобно этому выполняется настройка dns linux для любого дистрибутива.

Выводы

В этой небольшой статье мы рассмотрели как выполняется настройка DNS Ubuntu 16.04 через графический интерфейс или терминал. В Ubuntu автоматической настройкой DNS могут заниматься множество утилит и это создает некоторые проблемы при настройке, но со всем можно разобраться. Надеюсь, эта информация была полезной для вас.

Об авторе

Основатель и администратор сайта сайт, увлекаюсь открытым программным обеспечением и операционной системой Linux. В качестве основной ОС сейчас использую Ubuntu. Кроме Linux интересуюсь всем, что связано с информационными технологиями и современной наукой.

Настройка кеширующего DNS сервера

Устанавливаем службу DNS сервера Bind9 , командой:

sudo apt-get install bind9

При установке сервера Bind9 система может потребовать от вас вписать свое согласие Yes , а не просто нажать кнопку Y .

Генерируем ключ для обновления DNS записей, следующей командой:

dnssec-keygen -a HMAC-MD5 -b 128 -r /dev/urandom -n USER DHCP_UPDATER

Показать этот ключ можно командой:

cat Kdhcp_updater.*.private|grep Key

Отобразится ключ вида вида sWAQagEOVTtRQpCekhNsJQ== , данный ключ понадобится нам позже. Либо скопируйте данный ключ, либо запомните команду отображения ключа.

Ununtu Server: Установка DNS сервера Bind9 и генерация ключа обновления записей

Открываем файл конфигурации Bind9, командой:

sudo nano /etc/bind/named.conf.options

Именно в этом файле прописываются внешние DNS сервера, к которым будет обращаться наш локальный сервер.

forwarders — вы можете установить сервера своего провайдера, или DNS сервера компании Google (8.8.8.8 и 8.8.4.4 . в некоторых случаях они работают стабильней или снимают ограничения вашего провайдера) .

Так как я настраиваю сервер школы, я буду использовать «семейные» DNS сервера компании Яндекс ().

Это будет самым первым уровнем защиты и первым фильтром контента школы.

listen-on — адреса через которые будет обслуживаться наш DNS сервер.

Закомментируем строку dnssec-validation auto .

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

forwarders {
77.88.8.7 ;
77.88.8.3 ;
};
listen-on {
127.0.0.1 ;
192.168.137.1 ;
};

Ununtu Server: Конфигурирование DNS сервера используя Яндекс DNS

Перезапускаем службу DNS, командой:

sudo service bind9 restart sudo nano /etc/resolvconf/resolv.conf.d/tail

Вносим в него следующие значения, для нашей сети.

domain school.loc
search school.loc
nameserver 127.0.0.1

Ubuntu Server: Настройка DNS сервера, файл resolv.conf

Сохраняем и закрываем файл. Перезагружаем DNS сервер, командой:

sudo service bind9 restart

Проверяем работу нашего DNS сервера, командой:

dig ubuntu.com

После чего повторно вводим эту же команду:

dig ubuntu.com

Нас интересует поле Query time (Время запроса) обеих команд, если время выполнения второго запроса уменьшилось, значит наш DNS сервер работает нормально.

Ubuntu Server: Проверка командой dig работы DNS сервиса

Для проверок используйте менее популярные домены, чем mail.ru, ya.ru, google.com.

Перезагрузите сервер (команда reboot ) и выполните проверку еще раз (необязательно, но поможет диагностировать на каком этапе настройки появилась ошибка)

Создание зон прямого и обратного просмотра

Указываем зоны прямого и обратного просмотра и прописываем их в файле конфигурации.

Создаем зону прямого просмотра.

Копируем образец файла по адресу /etc/bind/ db.local в наше расположение, одновременно переименовывая его в /var/lib/bind /prime_zone :

sudo cp /etc/bind/db.local /var/lib/bind/prime_zone

и открываем его:

sudo nano /var/lib/bind/prime_zone

Изменяем файл, приводя к следующему виду, не забывая вставлять свои значения (если название сервера, домена и IP адресация отличается от моего примера):

Ubuntu Server: Файл конфигурации зоны прямого просмотра

Внимание: Linux очень «нежная» ОС, пропущенная или удаленная точка в файле конфигурации, приведет к ошибкам.

Создаем зону обратного просмотра.

Так же копированием и переименованием файла образца, командой:

sudo cp /etc/bind/db.127 /var/lib/bind/reverse_zone

Открываем его:

sudo nano /var/lib/bind/reverse_zone

Приводим файл к виду:

Ubuntu Server: Файл конфигурации зоны обратного просмотра

Внимание: Любой файл зоны, должен оканчиваться пустой строкой.

В файле конфигурации Bind9 указываем зоны просмотра (используемый мною в этом примере ключ, отличается от созданного в начале статьи, ваш отличаться не должен) :

sudo nano /etc/bind/named.conf.local

key DHCP_UPDATER {
algorithm HMAC-MD5.SIG-ALG.REG.INT;
};
zone «school.loc » {
type master;
file «/var/lib/bind/prime_zone «;
};
//reverse zone
zone «137.168.192 .in-addr.arpa» {
type master;
file «/var/lib/bind/reverse_zone «;
allow-update { key DHCP_UPDATER; };
};

Где:
secret — указываем ключ обновления DNS записей, созданный ранее
zone «school.loc « — название вашего домена с указанием пути до файла конфигурации зоны прямого просмотра
zone «137.168.192 .in-addr.arpa» — зона обратного просмотра (обратите внимание, адресация указывается «задом наперёд») с указанием пути до файла конфигурации зоны.

Перезапускаем службу Bing9 сервер, командой:

Проверяем работу созданных зон, зоны прямого просмотра (преобразования имен):

nslookup gate.school.loc

Если зона настроена правильно, то будет отображен следующий результат:

Ubuntu Server: Правильная работа зоны прямого просмотра

И проверяем зону обратного просмотра:

nslookup 192.168.137.1

Если обратная зона настроена правильно, то будет отображен следующий результат:

Ubuntu Server: Правильная работа зоны обратного просмотра

DNS сервер — настроен.

Дополнительно и полезно:

named-checkzone school.loc /var/lib/bind/prime_zone — проверка корректности работы зоны прямого просмотра;

named-checkzone 137.168.192 .in-addr.arpa /var/lib/bind/reverse_zone — проверка корректности работы зоны обратного просмотра;

Поиск проблем в Bind9: После попытки рестарта сервиса командой sudo /etc/init.d/bind9 restart , выполните команду tail /var/log/syslog для просмотра возможных ошибок;

Команды службы Bing:

  • sudo service bind9 start — запуск службы
  • sudo service bind9 stop — остановка службы
  • sudo service bind9 status — статус службы (с выводом имеющихся ошибок)
  • sudo service bind9 restart — перезапуск службы

Настройка динамического обновления зон DHCP сервером

Настроим автоматизацию создания прямых и обратных зон DNS для клиентов, с помощью DHCP.

Открываем конфигурационный файл DHCP, командой:

sudo nano /etc/dhcp/dhcpd.conf

Закомментируем в файле строку:

#ddns-update-style none;

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

ddns-update-style interim;
update-static-leases on;
key DHCP_UPDATER {
algorithm hmac-md5;
secret «c0fLwUnt918/w5F+a1xrqQ== «;
}

zone school.loc . {
primary 127.0.0.1;
key DHCP_UPDATER;
}

zone 137.168.192 .in-addr.arpa. {
primary 127.0.0.1;
key DHCP_UPDATER;
}

Перезапускаем службы DNS и DHCP:

sudo /etc/init.d/bind9 restart sudo /etc/init.d/isc-dhcp-server restart

С клиентского ПК с названием teacher проверим работу прямой и обратной зоны, командами nslookup:

Ubuntu Server: Проверка корректной работы зоны прямого и обратного просмотра с клиентского ПК

Если получен отклик, как на скриншоте, то на этом эту часть настройки Ubuntu Server будем считать законченной.

Переходим к следующей части настройки Ubuntu Server — .

Большинство «не работает» вызвано невнимательностью! Внимательно проверяйте команды и не допускайте в файлах конфигурации лишних символов.

От автора:

Если проблема решена, один из способов сказать «Спасибо» автору — .

Если же проблему разрешить не удалось и появились дополнительные вопросы, задать их можно на нашем , в специальном разделе.

Существует много способов настроить BIND9. Наиболее распространенные конфигурации - это кэширующий сервер имен, первичный мастер и вторичный мастер.

    Когда BIND9 настроен как кэширующий сервер, он ищет ответы на запросы имени и запоминает ответ на случай, если запрос придет повторно.

    В качестве первичного мастера BIND9 читает данные зоны из локального файла и является ответственным за эту зону.

    В качестве вторичного мастера BIND9 получает данные по зоне (целиком) с другого сервера имен, отвечающего за эту зону.

Обзор

Файлы настройки DNS сохраняются в каталоге /etc/bind. Основной файл конфигурации - это /etc/bind/named.conf.

Строки include определяют имена файлов, которые содержат DNS опции. Строка directory в файле /etc/bind/named.conf.options говорит DNS где искать файлы. Все файлы, используемые BIND, будут относительными к этому каталогу.

Файл с именем /etc/bind/db.root описывает корневые сервера имен в мире. Сервера со временем меняются, поэтому файл /etc/bind/db.root должен обслуживаться сейчас и потом. Обычно это происходит в качестве обновления к пакету bind9 . Секция zone определяет мастер сервер и она сохранена в файле, определяемой опцией file .

Существует возможность настроить один сервер как кэширующий сервер имен, первичный мастер и вторичный мастер одновременно. Сервер может быть началом авторизации (SOA) для одной зоны, при этом предоставляя вторичный сервис для другой. И при всем этом предоставлять кэширующий сервис в локальной сети (LAN).

Кэширующий сервер имен

По умолчанию конфигурация настраивается на работу кэширующим сервером. Все что для этого требуется - это добавить IP адреса DNS серверов вашего интернет провайдера. Просто раскомментируйте и исправьте следующее в /etc/bind/named.conf.options:

Forwarders { 1.2.3.4; 5.6.7.8; };

Замените 1.2.3.4 и 5.6.7.8 на актуальные IP адреса серверов имен.

Теперь перегружаем DNS сервер для применения новой конфигурации. Наберите в терминале:

Sudo service bind9 restart

Многие администраторы предпочитают использовать дату последнего редактирования в качестве Serial зоны в виде 2012010100, что соответствует формату yyyymmddss (где ss - Serial Number [за день]).

Как только вы произвели изменения в файле зоны, требуется перегрузить BIND9 для применения изменений:

Sudo service bind9 restart

Файл обратной зоны

Теперь, поскольку зона создана и разрешает имена в IP адреса, требуется создать также обратную зону. Обратная зона позволяет DNS определять имя по IP адресу.

Редактируем /etc/bind/named.conf.local и добавляем следующее:

Zone "1.168.192.in-addr.arpa" { type master; file "/etc/bind/db.192"; };

Замените 1.168.192 на первые три октета адресов сети, которую вы используете. Также соответственно назовите файл зоны /etc/bind/db.192. В нем должен совпадать первый октет вашей сети.

Теперь создаем файл /etc/bind/db.192:

Sudo cp /etc/bind/db.127 /etc/bind/db.192

; ; BIND reverse data file for local 192.168.1.XXX net ; $TTL 604800 @ IN SOA ns.example.com. root.example.com. (2 ; Serial 604800 ; Refresh 86400 ; Retry 2419200 ; Expire 604800) ; Negative Cache TTL ; @ IN NS ns. 10 IN PTR ns.example.com.

Serial Number в обратной зоне также требуется увеличивать при каждом изменении. Для каждой A записи, которую вы настроите в /etc/bind/db.example.com на другой адрес, вы должны создать запись PTR в /etc/bind/db.192.

После создания файла обратной зоны перегрузите BIND9:

Sudo service bind9 restart

Вторичный мастер

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

Для начала на первичном мастере надо разрешить передачу зоны. Добавьте опцию allow-transfer к определениям прямой и обратной зон в /etc/bind/named.conf.local:

Zone "example.com" { type master; file "/etc/bind/db.example.com"; allow-transfer { 192.168.1.11; }; }; zone "1.168.192.in-addr.arpa" { type master; file "/etc/bind/db.192"; allow-transfer { 192.168.1.11; }; };

Замените 192.168.1.11 на IP адрес вашего вторичного сервера имен.

Перезапустим BIND9 на первичном мастере:

Zone "example.com" { type slave; file "db.example.com"; masters { 192.168.1.10; }; }; zone "1.168.192.in-addr.arpa" { type slave; file "db.192"; masters { 192.168.1.10; }; };

Замените 192.168.1.10 на IP адрес вашего первичного сервера имен.

Перегружаем BIND9 на вторичном мастере:

Sudo service bind9 restart

В /var/log/syslog вы сможете увидеть нечто похожее на (некоторые строки разделены для соответствия формату документа):

Client 192.168.1.10#39448: received notify for zone "1.168.192.in-addr.arpa" zone 1.168.192.in-addr.arpa/IN: Transfer started. transfer of "100.18.172.in-addr.arpa/IN" from 192.168.1.10#53: connected using 192.168.1.11#37531 zone 1.168.192.in-addr.arpa/IN: transferred serial 5 transfer of "100.18.172.in-addr.arpa/IN" from 192.168.1.10#53: Transfer completed: 1 messages, 6 records, 212 bytes, 0.002 secs (106000 bytes/sec) zone 1.168.192.in-addr.arpa/IN: sending notifies (serial 5) client 192.168.1.10#20329: received notify for zone "example.com" zone example.com/IN: Transfer started. transfer of "example.com/IN" from 192.168.1.10#53: connected using 192.168.1.11#38577 zone example.com/IN: transferred serial 5 transfer of "example.com/IN" from 192.168.1.10#53: Transfer completed: 1 messages, 8 records, 225 bytes, 0.002 secs (112500 bytes/sec)

Обратите внимание, что передача зоны произойдет только если Serial Number на первичном сервере больше значения на вторичном. Если вы хотите, чтобы первичный мастер DNS сообщал вторичному DNS серверу об изменении зоны, вы можете добавить also-notify { ipaddress; }; в /etc/bind/named.conf.local как показано в примере ниже: zone "example.com" { type master; file "/etc/bind/db.example.com"; allow-transfer { 192.168.1.11; }; also-notify { 192.168.1.11; }; }; zone "1.168.192.in-addr.arpa" { type master; file "/etc/bind/db.192"; allow-transfer { 192.168.1.11; }; also-notify { 192.168.1.11; }; };