Новости, акции и скидки для нынешних и будущих клиентов, инструкции по настройке сайта и сервера, лайфхаки

29 Ноября 2017
Технологии

Slave DNS И Plesk: зачем нужны 2 ДНС сервера и как их настроить

Введение


Существует ряд причин почему вам могут понадобится как минимум 2 ДНС сервера (сеть, куда входят dns1 и dns2) для обслуживания сайтов:

  1. Вы купили доменное имя у регистратора доменов. Для делегирования домена множество регистраторов требуют, чтобы доменная зона обслуживалась минимум двумя серверами имён в разных ip подсетях.
  2. Вы арендуете несколько серверов, но ещё не доросли до использования таких продуктов, как PPA (Parallels Plesk Automation) или PA (Parallels Automation), тем не менее, вам нужен единый набор серверов имён для всех доменов на своём хостинге.
  3. Вам нужны собственные сервера имён, чтобы не прибегать к услугам третьих лиц.
  4. Вы хотите, чтобы в whois в NS записях доменов отображались ваши сервера имён.


Обычно вы создаёте пару серверов имён в режиме Master/Slave. Затем настраиваете доменные зоны на обоих серверах, но управление ресурсными записями доменных зон происходит только на master сервере. Вторичный (slave) сервер автоматически подгружает изменения с master сервера. Таким образом, у вас всегда есть 2 активных сервера имён с одинаковым набором доменных зон и ресурсных записей.

post img

Единственное неудобство в том, что вам приходится создавать и удалять каждую зону на обоих серверах, так как это автоматически не происходит. Вот почему вы создаёте доменную зону на master сервере и потом создаёте эту же доменную зону на slave сервере и указываете адрес master сервера. После того, как вы добавили ресурсные записи домена на master сервер, можете быть уверены, что slave сервер будет автоматически получать их от master сервера.

На протяжении многих лет интеграция Plesk и slave DNS сервера была непростой задачей. Подразумевается, что сервер Plesk должен быть master сервером. В Plesk есть режимы slave и master для доменной зоны и есть список ip адресов , которые отдаются доменной зоной . Но в плеск нет механизма создания новой доменной зоны на slave сервере. И этого механизма никогда не будет, потому что концепция плеск — это автоматизация хостинговых процедур на одном сервере. Для интеграции нескольких серверов разделённых для работы по видам сервисов, компания Parallels предлагает использовать продукты PPA (Parallels Plesk Automation) и PA (Parallels Automation).

На данный момент существует множество пользователей Plesk для которых решения PPA или РА превосходят их необходимые потребности для работы, так как им необходима только интеграция slave сервера. Ранее для решения этой проблемы каждый администратор Plesk должен был писать скрипты или приобретать коммерческие версии или вручную создавать и удалять доменные зоны на slave сервере.

Казалось бы, какие могут быть трудности. В Plesk есть собственный локальный сервер имён, который, предположим, будет master сервер. И есть система событий — давайте назначим исполнение нашего скрипта на события «создание DNS зоны» и «удаление DNS зоны» и проблема будет решена. Но, к сожалению, Plesk не поддерживает такие события.

Программисты Plesk не только разрабатывают одноименный продукт, но и пользуются своими разработками. Вот почему создали расширение, которое позволяет пользователям интегрировать Plesk с внешним slave сервером с установленным BIND9 . Скачать это расширение можно здесь
 

Как это работает


Plesk использует BIND как локальный сервер имён. Им можно управлять удалённо с помощью штатной утилиты rndc . Нет причин, по которым мы не можем установить BIND на удалённом сервере и управлять им с помощью rndc. В Plesk 12.5 реализован механизм “Custom DNS backend”, который может быть использован для подключения внешнего DNS сервиса, например AWS Route53.

Если вкратце, то этот способ позволяет зарегистрировать в Plesk скрипт, который будет получать описание DNS зоны в JSON формате с инструкциями для исполнения, такими как создание, изменение, удаление любой DNS зоны в Plesk. Это то, что нам нужно. Реализовывая этот функционал, Plesk подразумевали, что будет использоваться внешний DNS сервис вместо того, чтобы устанавливать BIND сервер в Plesk.

Также нет нужды удалять локальный сервер BIND . Этот скрипт может одновременно работать с локальной DNS службой. Такова идея использования данного расширения.
 

Это расширение работает по следующему алгоритму:


  1. Регистрируется slave сервер в своих настройках скрипта
  2. IP адрес slave сервер автоматически добавляется в список адресов разрешённых для трансфера доменных зон из сервера Plesk
  3. Когда вы создаёте, меняете или удаляете активную зону домена в Plesk , то эти действия происходят на локальном DNS сервере
  4. После этого скрипт запускается , получает доменное имя и выполняет соответствующую операцию
  5. Скрипт инициирует команду rndc для каждого подключённого slave сервера
  6. Slave серверы синхроинизируют доменные зоны с сервером Plesk.



Все настройки, такие как формат зоновых файлов, подключение и перезапуск служб управляются службой DNS. Администратор должен настроить slave сервер для работы с внешним сервером Plesk только один раз. После этого вы можете сообщить регистратору, что теперь Plesk сервер и slave сервер являются серверами имён для ваших доменов. Таким образом мы решили все вопросы обозначенные в начале статьи.
 

А теперь о технической стороне - как решить задачу


Для установки slave сервера возьмём, к примеру, сервер с Centos 7
 

Установка BIND



В начале проверим что система имеет все последние обновления.

yum update -y

Если не указать "-y" ключ, то придется отвечать на все вопросы установщика, а с ним все ответы ставятся автоматически по умолчанию.

Установить bind и bind-utils
yum install bind bind-utils -y


Разрешим создание новых зон с помощью rndc. В файле /etc/named.conf, в фигурных скобках {}, напишите директиву:

allow-new-zones yes;

Укажите ip адрес от которого должны быть приняты инструкции управления и установите BIND для прослушивания на всех доступных сетевых интерфейсах. Определите ключ rndc , который будет использоваться Plesk . В файле /etc/named.conf напишите:

key "plesk-key" {
algorithm hmac-md5;
secret "vwOxonI4n4CVRUhKAOAAIA==";
};
controls {
inet * port 953 allow { ; ; 127.0.0.1; } keys {"rndc-key", "plesk-key"; };
};


Вот и всё, slave сервер установлен.

После этого установите расширение на сервере Plesk . В настройках расширения добавьте slave сервер, установите его ip адрес и ключ . Расширение создаст конфигурационный файл с настройками slave севрера для утилиты rndc.

Теперь Plesk будет автоматически передавать все созданные изменённые и удалённые зоны на slave сервер при выполнении следующей команды для каждого slave сервера:

# Создание
/usr/sbin/rndc -c slave.config addzone example.com '{ type slave; file "example.com"; masters { ; }; };'

# Изменение
/usr/sbin/rndc -c slave.config refresh example.com

# Удаление
/usr/sbin/rndc -c slave.config delzone example.com


Сейчас , когда вы добавили домен в Plesk, его ДНС зона автоматически создалась на slave сервер аналогично как на master сервере. Расширение (Slave DNS manager) доступно для загрузки здесь

Обращаем внимание, что Plesk не пр оводит техподдержку для для данного расширения . Это расширение лишь пример как можно решить техническую задачу.

Перевод: Сергей Гордеев (Русоникс)
Оригинал