- Slave DNS И Plesk: зачем нужны 2 ДНС сервера и как их настроить
- ВВЕДЕНИЕ
- КАК ЭТО РАБОТАЕТ
- Это расширение работает по следующему алгоритму:
- А ТЕПЕРЬ О ТЕХНИЧЕСКОЙ СТОРОНЕ — КАК РЕШИТЬ ЗАДАЧУ
- Установка BIND
- Несколько DNS-серверов: зачем это хостеру и как это реализовано в Parallels Plesk Panel
- Предыстория
- Как мы это реализовали?
- Как это работает?
Slave DNS И Plesk: зачем нужны 2 ДНС сервера и как их настроить
Из этой статьи вы узнаете зачем нужны 2 DNS сервера и как настроить их в Plesk
ВВЕДЕНИЕ
Существует ряд причин почему вам могут понадобится как минимум 2 ДНС сервера (сеть, куда входят dns1 и dns2) для обслуживания сайтов:
- Вы купили доменное имя у регистратора доменов. Для делегирования домена множество регистраторов требуют, чтобы доменная зона обслуживалась минимум двумя серверами имён в разных ip подсетях.
- Вы арендуете несколько серверов, но ещё не доросли до использования таких продуктов, как PPA (Parallels Plesk Automation) или PA (Parallels Automation), тем не менее, вам нужен единый набор серверов имён для всех доменов на своём хостинге.
- Вам нужны собственные сервера имён, чтобы не прибегать к услугам третьих лиц.
- Вы хотите, чтобы в whois в NS записях доменов отображались ваши сервера имён.
Обычно вы создаёте пару серверов имён в режиме Master/Slave. Затем настраиваете доменные зоны на обоих серверах, но управление ресурсными записями доменных зон происходит только на master сервере. Вторичный (slave) сервер автоматически подгружает изменения с master сервера. Таким образом, у вас всегда есть 2 активных сервера имён с одинаковым набором доменных зон и ресурсных записей.
Единственное неудобство в том, что вам приходится создавать и удалять каждую зону на обоих серверах, так как это автоматически не происходит. Вот почему вы создаёте доменную зону на 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 службой. Такова идея использования данного расширения.
Это расширение работает по следующему алгоритму:
- Регистрируется slave сервер в своих настройках скрипта
- IP адрес slave сервер автоматически добавляется в список адресов разрешённых для трансфера доменных зон из сервера Plesk
- Когда вы создаёте, меняете или удаляете активную зону домена в Plesk , то эти действия происходят на локальном DNS сервере
- После этого скрипт запускается , получает доменное имя и выполняет соответствующую операцию
- Скрипт инициирует команду rndc для каждого подключённого slave сервера
- Slave серверы синхроинизируют доменные зоны с сервером Plesk.
Все настройки, такие как формат зоновых файлов, подключение и перезапуск служб управляются службой DNS. Администратор должен настроить slave сервер для работы с внешним сервером Plesk только один раз. После этого вы можете сообщить регистратору, что теперь Plesk сервер и slave сервер являются серверами имён для ваших доменов. Таким образом мы решили все вопросы обозначенные в начале статьи.
А ТЕПЕРЬ О ТЕХНИЧЕСКОЙ СТОРОНЕ — КАК РЕШИТЬ ЗАДАЧУ
Для установки slave сервера возьмём, к примеру, сервер с Centos 7
Установка BIND
В начале проверим что система имеет все последние обновления.
Если не указать «-y» ключ, то придется отвечать на все вопросы установщика, а с ним все ответы ставятся автоматически по умолчанию.
Установить bind и bind-utils
yum install bind bind-utils -y
Разрешим создание новых зон с помощью rndc. В файле /etc/named.conf, в фигурных скобках <>, напишите директиву:
Укажите 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 не пр оводит техподдержку для для данного расширения . Это расширение лишь пример как можно решить техническую задачу.
Перевод: Сергей Гордеев (Русоникс)
Оригинал
- Поделиться:
Источник
Несколько DNS-серверов: зачем это хостеру и как это реализовано в Parallels Plesk Panel
Предыстория
Озадачившись получением фидбэка и более точной приоритезацией задач, разработчики Plesk завели аккаунт на UserVoice — http://plesk.uservoice.com. Тем самым организовали место, где клиенты могут предлагать свои нововведения, писать, что именно им не нравится, голосовать за нужные им функции (те, что набирают большинство голосов, попадают в разработку). Один из популярных запросов, которые мы получили от наших пользователей – это «Automate slave DNS support». Это довольно старый запрос на функциональность, которую хотят почти все администраторы Plesk-серверов. Чтобы раз и навсегда закрыть этот вопрос, мы решили сделать соответствующее Plesk-расширение. Какие причины были сделать это именно так? Что именно мы сделали?
Существует несколько причин, по которым хостеру могут потребоваться минимум два NS-сервера (или даже больше):
- Вы купили домен у регистратора. Чтобы домен был делегирован, большинство регистраторов (например, российские nic.ru, Reg.ru, webnames.ru и т.д.) требуют, чтобы доменную зону обслуживала минимум пара серверов имен (NS);
- У вас несколько серверов с хостингом, вы еще не «доросли» до использования продуктов уровня Parallels Automation или Parallels Plesk Automation, но хотите использовать единый набор NS-серверов для всех хостящихся у вас доменов;
- Вы хотите иметь свои NS-сервера и не зависеть от третьих лиц;
- Вы хотите, чтобы в whois информации вашего домена были ваши NS-сервера. Вот, например, вывод данных whois по домену parallels.com:
Как видим, причин иметь свои NS-сервера достаточно. Обычно для решения этих задач хостеры настраивают пару серверов имен в режиме master-slave. При этом на обоих серверах создаются доменые зоны, но управление ресурсными записями доменных зон происходит только на мастере. А вторичный (slave) сервер имен загружает изменения автоматически с мастера. Таким образом, у вас всегда активны два сервера имен с идентичным набором доменных зон и с идентичным набором ресурсных записей.
Единственная неприятная мелочь — создавать/удалять зону нужно на обоих серверах. Автоматически этого не происходит. Поэтому создаем доменную зону на мастере. Затем создаем доменную зону на slave, указав адрес master-сервера. Все, теперь, добавляя доменные ресурсные записи на мастере, мы можем быть уверенными, что slave автоматически заберет их оттуда.
Как мы это реализовали?
Интеграция Parallels Plesk Panel и slave DNS много лет была не очень тривиальной задачей. Подразумевается, что Plesk-сервер выполняет роль мастера. В Plesk реализованы режимы slave/master для доменной зоны, существует глобальный список IP-адресов, которым можно делать запрос на получение доменных зон. Но механизма создания новых доменных зон на slave-сервере нет. И не будет. Потому, что концепция Plesk — это панель автоматизации хостинговых операций в рамках одного сервера. Если вам нужна интеграция нескольких серверов, разделение по типам сервисов – то у Parallels есть другие продукты: Parallels Plesk Automation, Parallels Operation Automation, и, в конце концов, большое комплексное решение Parallels Automation.
«Ну и в чем проблема?» — спросите вы. А дело в том, что существует ряд пользователей Plesk, которым перечисленные выше продукты не требуются, они overqualified для решения их конкретных задач. А нужна им только интеграция с slave-сервером имен.
Чтобы решить эту проблему, в свое время каждый администратор Plesk писал свои собственные программные решения. Или покупал коммерческие. Или вручную выполнял операцию создания/удаления доменных зон на slave-сервере.
Казалось бы, что сложного? У Plesk есть локальный NS-сервер, пусть будет мастером, есть система событий, давайте повесим выполнение нашего скрипта на события «создание DNS-зоны» и «удаление DNS зоны». Все будут счастливы. К сожалению, именно таких событий в Plesk нет.
Разработчики Plesk не только разрабатывают Plesk, но еще и сами постоянно пользуются своим продуктом. Поэтому мы сделали для пользователей Plesk расширение, которое позволяет интегрировать Plesk с внешним slave-сервером имен, на котором стоит BIND9. Скачать его бесплатно, без смс, можно по ссылке — autoinstall.plesk.com/extensions/packages/slave-dns-manager-1.0-1.zip
Как это работает?
У Plesk в качестве локального NS-сервера используется BIND. У него есть возможность удаленного управления с помощью штатной утилиты rndc. Никто нам не мешает на удаленном сервере поставить BIND и управлять им через rndc. В Plesk 11.5 появился механизм «Custom DNS backend». Через него можно подключить сторонний DNS-сервис, например AWS Route53. Почитать об этом подробнее можно в документации.
В двух словах смысл этой функциональности можно описать как возможность зарегистрировать в Plesk скрипт, который будет получать JSON описание DNS-зоны, что нужно сделать с зоной, при каждом создании/обновлении/удалении любой активной зоны в Plesk. Это все, что нам нужно. При реализации этой функциональности подразумевалось, что вы не будете ставить локальный BIND с Plesk, а будете использовать внешний сервис. Но! Удалять локальный BIND совсем не обязательно. Скрипт может работать параллельно с локальным DNS-сервисом. Вот эту идею наше расширение и использует.
Алгоритм работы расширения следующий:
- В настройках расширения регистрируем slave-сервер
- IP-адрес slave-сервера автоматически добавляется в список тех, кому разрешен трансфер доменных зон с Plesk-сервера
- Когда в Plesk создается/обновляется/удаляется активная доменная зона, Plesk создает/изменяет/удаляет доменную зону в локальном DNS-сервисе
- Далее запускается скрипт, который получает имя домена, команду (создать/обновить/удалить)
- Скрипт запускает rndc команду для каждого подключенного slave-сервера
- Slave-серверы синхронизируют доменные зоны с Plesk-сервера
Таким образом, мы получили очень простую и очень прочную схему работы со slave-серверами имен. Все проблемы, связанные с форматом файлов зон, соединением и рестартом сервиса, берет на себя сам DNS-сервис. Администратору нужно настроить slave-сервер только 1 раз для работы с внешним Plesk. Теперь можно идти к регистратору и сказать, что Plesk-сервер и slave-сервер являются NS-серверами ваших доменов. И благодаря этому мы решили все задачи, перечисленные в начале поста.
А теперь чуть подробнее, с большим количеством технических деталей.
Настраиваем slave-сервер имен (на примере сервера с Debian 7):
- Ставим BIND
- Разрешаем создание новых зон через rndc. В файл /etc/bind/named.conf.options , внутри директивы options <>, пишем:
- Указываем, с какого IP-адреса можно получать управляющие команды, и говорим BIND слушать все доступные сетевые интерфейсы. В файле /etc/bind/named.conf.local пишем:
- Обязательно запоминаем ключ доступа, он расположен в файле /etc/bind/rndc.key :
Все, на этом настройка slave-сервера имен закончена.
Следующим шагом идем в наш Plesk и ставим расширение (мы уже говорили выше, где его скачать). На странице расширения добавляем наш slave-сервер, указав его IP и ключ. Расширение создаст конфигурационный файл для утилиты rndc, в котором будут настройки нашего slave-сервера. Теперь Plesk все создаваемые, обновляемые и удаляемые зоны будет транслировать на slave-сервер автомагически, выполняя следующие команды для каждого настроенного slave-сервера:
- Создание
Теперь при добавлении доменов в Plesk DNS-зона автоматически создается как на master-сервере, так и на slave-сервере.
Источник