Настройка слейв-сервера NSD в Ubuntu 14.04

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

Специальное программное обеспечение, такое как DNS-сервер Bind, невероятно гибкое и может сотрудничать с большинством компонентов в общей иерархии DNS. Однако такая гибкость также значит, что Bind не оптимизирован ни для одной задачи. А это имеет несколько побочных эффектов.

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

Чтобы решить эту проблему, были созданы альтернативные DNS-серверы, которые специализируются на разрешении DNS. Программное обеспечение NSD является полномочным DNS-сервером, который идеально подходит для авторитетного управления зонами DNS. Не заботясь о рекурсии или кэшировании, этот сервер обладает высокой производительностью и сравнительно небольшим объемом.

В этом мануале мы покажем, как установить и настроить мастер-сервер NSD для безопасного управления зонами DNS на серверах Ubuntu 14.04.

Требования и цели

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

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

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

Для этого мануала мы будем использовать условный домен example.com. Вы должны указать вместо него свой собственный домен. Машины, которые мы настроим, будут иметь следующие свойства:

Цель DNS FQDN IP-адрес
Master сервер имен ns1.example.com. 192.0.2.1
Slave сервер имен ns2.example.com. 192.0.2.2
Веб-сервер www.example.com. 192.0.2.3

Закончив этот мануал у вас будут первые два сервера с NSD, которые будут действовать как полномочный сервер для зон. Вы сможете использовать имена хостов для доступа к вашим серверам, а также узнавать имена хостов, запрашивая IP-адреса. Любой разрешающий клиент, способный попасть на эти серверы, сможет получать данные.

Примечание: Начало настойки описано в мануале Настройка мастер-сервера NSD в Ubuntu 14.04

Настройка slave-сервера NSD

Теперь, когда вы настроили главный сервер, можно подготовить ведомый сервер.

Опять же, сначала нужно убедиться, что все SSL-сертификаты и ключи созданы и доступны. Для этого выполните следующую команду:

sudo nsd-control-setup

Она обеспечит наличие всех файлов учетных данных, необходимых для управления демоном.

Настройка файла nsd.conf

Файл nsd.conf для подчиненного сервера мало чем отличается от файла главного сервера. Есть только несколько опций, которые нужно изменить. Сначала скопируйте файл /etc/nsd/nsd.conf с главного сервера в файл /etc/nsd/nsd.conf ведомого сервера.

Файл ведомого сервера теперь должен выглядеть так:

server:
do-ip4: yes
port: 53
username: nsd
zonesdir: "/etc/nsd"
logfile: "/var/log/nsd.log"
pidfile: "/run/nsd/nsd.pid"
remote-control:
control-enable: yes
control-interface: 127.0.0.1
control-port: 8952
server-key-file: "/etc/nsd/nsd_server.key"
server-cert-file: "/etc/nsd/nsd_server.pem"
control-key-file: "/etc/nsd/nsd_control.key"
control-cert-file: "/etc/nsd/nsd_control.pem"
key:
name: "demokey"
algorithm: hmac-sha256
secret: "+kO0Vu6gC+9bxzMy3TIZVLH+fg=="
pattern:
name: "toslave"
notify: 192.0.2.2 demokey
provide-xfr: 192.0.2.2 demokey
zone:
name: "example.com"
zonefile: "example.com.zone"
include-pattern: "toslave"
zone:
name: "2.0.192.in-addr.arpa"
zonefile: "192.0.2.zone"
include-pattern: "toslave"

Это почти то, что нам нужно.

Секции server, remote-control и key  уже полностью настроены. Секретный ключ в разделе key должен соответствовать значению на главном сервере, поэтому его проще скопировать.

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

Во-первых, выберите более описательное имя. Мы будем использовать тот же шаблон и назовем его frommaster. Нам также нужно изменить директивы, которые здесь установлены. Вместо параметра notify ведомым серверам нужен параметр allow-notify, он определяет серверы, которым разрешено уведомлять его. Мы по-прежнему будем использовать тот же ключ, поэтому нам просто нужно изменить имя и IP-адрес.

Также нужно заменить параметр provide-xfr на request-xfr. Формат этого параметра немного меняется. Нам нужно указать передачу AXFR (единственный вид, на который способны мастер-серверы NSD), а также IP-адрес и номер порта мастера.

Раздел pattern будет выглядеть примерно так, когда вы закончите:

pattern:
name: "frommaster"
allow-notify: 192.0.2.1 demokey
request-xfr: AXFR 192.0.2.1@53 demokey

Единственное, что нужно изменить в разделе zone — это include-pattern, он должен соответствовать нашему новому шаблону, который мы только что создали:

zone:
name: "example.com"
zonefile: "example.com.zone"
include-pattern: "frommaster"
zone:
name: "2.0.192.in-addr.arpa"
zonefile: "192.0.2.zone"
include-pattern: "frommaster"

Когда вы закончите, сохраните и закройте файл.

Тестирование файлов и перезапуск сервиса

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

Но сейчас нужно проверить синтаксис основного конфигурационного файла:

sudo nsd-checkconf /etc/nsd/nsd.conf

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

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

sudo service nsd restart

Проверьте логи, чтобы убедиться, что все идет хорошо:

sudo tail -f /var/log/nsd.log

Передача полномочий серверам имен

Теперь официальные NSD-серверы должны быть настроены и готовы обслуживать DNS-информацию о вашем домене. Но вам все еще нужно настроить домен, чтобы он знал, как использовать ваши серверы имен.

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

Здесь мы покажем, как это сделать с помощью Namecheap, популярного регистратора доменных имен.

Нам нужно настроить серверы имен таким образом, чтобы мы могли устанавливать glue records  (добавочные записи) в родительском домене. Это необходимо всегда, когда серверы имен находятся внутри самого домена.

Когда вы делегируете поддомен (например, example.com из домена com), вы должны указать серверы имен, которые являются полномочными для домена. Если серверы имен находятся в домене, вы также должны включить glue record – это просто запись A для каждого из серверов имен, которые являются полномочными для делегированной зоны.

Нам это нужно, потому что без glue records DNS-запросы будут зацикливаться. Клиенты будут запрашивать у регистратора, кто является полномочным для домена example.com, а регистратор (после того, как мы настроим его) вернет ns1.example.com и ns2.example.com. Если мы не включим записи A, чтобы разрешить их в IP-адресах, клиент никогда не сможет выйти за пределы этой точки. У него не будет возможности найти IP-адреса нужных серверов имен, поскольку они обычно определяются на самих серверах имен.

Расположение в интерфейсе регистратора, где вы можете настроить свои серверы имен и связанные с ними IP-адреса, зависит от вашего провайдера. В Namecheap есть раздел Nameserver Registration, который позволяет устанавливать IP-адреса серверов имен для создания добавочных записей.

Здесь вы можете настроить серверы имен и отобразить их на определенный IP-адрес.

Когда вы закончите с этим, вам нужно будет установить активные серверы имен, которые используются для домена. Для этого Namecheap имеет параметр под названием Domain Name Server Setup.

В интерфейсе, который вы получаете при выборе этой опции, вы можете ввести имена хостов серверов имен, которые вы только что зарегистрировали.

На активацию этих изменений может уйти некоторое время. Также дополнительное время уйдет на распространение этих данных на остальные DNS-серверы мира. Как правило, этот процесс должен завершиться в течение ближайших 24-48 часов.

Заключение

Теперь у вас есть ведущий и ведомый DNS-сервер, и их можно использовать для предоставления DNS информации о ваших доменах. В отличие от Bind, NSD оптимизирован, поэтому вы можете получить более высокую производительность, которая будет отвечать потребностям вашей среды.

Tags: , , ,