По умолчанию Plesk играет роль первичного DNS-сервера для размещенных в нем сайтов. Но, как вариант, вы можете использовать для разрешения конфликтов имен доменов, размещенных в Plesk, сторонние DNS-службы, например, Amazon Route 53 (http://aws.amazon.com/route53/), DynECT (http://dyn.com/dns/dynect-managed-dns/) или Godaddy Premium DNS (http://www.godaddy.com/domains/dns-hosting.aspx). Использование таких служб дает некоторые преимущества:

  • Сокращение нагрузки на ваш сервер Plesk.
  • Повышение надежности DNS-хостинга.

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

Чтобы Plesk начал автоматически передавать зоны DNS сторонней службе DNS, вам надо написать интеграционный скрипт.

Интеграционный скрипт для DNS

Интеграционный скрипт – это скрипт (написанный на любом языке, поддерживаемом вашим сервером), который передает изменения, выполненные для зон DNS в интерфейсе Plesk, выбранной сторонней DNS-службе. Этот скрипт должен взаимодействовать с внешней службой с помощью средств API этой службы.

После того как вы зарегистрируете скрипт в Plesk, последний будет передавать скрипту информацию о любом изменении в зонах DNS, например, о добавлении или удалении записей ресурсов или целых зон.

image-76177.gif

Этот скрипт должен отвечать следующим требованиям:

  • Он должен быть способен обрабатывать входные параметры, перечисленные в таблице ниже.
  • Если действия скрипта завершены успешно, он должен возвращать errorcode0.
  • Если вы хотите, чтобы ваш скрипт записывал информацию о своем выполнении в файлы журнала Plesk, отправьте эту информацию в потоки скрипта stdout и sterr.

Пример скрипта для интеграции Plesk с Amazon Route 53 доступен на нашей странице GitHub.

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

  • Скачайте библиотеку для работы с Amazon Web Services на PHP aws.phar с http://aws.amazon.com/sdkforphp/ и поместите ее в ту же папку, где находится скрипт.
  • Укажите свои учетные данные Amazon в строках скрипта 23 и 24:
'client' => array(
 'key' => '<key>',
 'secret' => '<secret>',
),

Входные параметры интеграционного скрипта

Примечание: Все параметры имеют тип string.

Параметр     Описание Пример
command     Операция, которую необходимо выполнить для указанной зоны (create, update, или delete) или для обратной записи (PTR) (createPTRs или deletePTRs). create
zone     Информация о зоне, для которой выполняется операция. Указывается в случае, если commandcreate, update или delete.  
  name   Имя зоны. d10.tld.
  displayName   Имя зоны без конверсии IDN в ASCII. d10.tld.
  soa   Информация о ресурсной записи SOA в зоне. Указывается, если commandcreate или update.  
    email Контактный адрес электронной почты domainowner@samplemail.com
    status Всегда 0. 0
    type Тип сервера DNS. Всегда master. master
    ttl Количество времени в секундах, в течение которого другие DNS-серверы должны хранить запись в кэше. 86400
    refresh Время в секундах, показывающее, как часто вторичный сервер имен посылает запрос первичному серверу имен, чтобы получить информацию о возможных изменениях, которые были внесены в файл доменной зоны. 10800
    retry Время (в секундах) ожидания вторичного сервера перед повторной попыткой получить файл зоны в случае ошибки. 3600
    expire Определяет интервал времени, по истечении которого вторичный сервер прекращает отвечать на запросы, после того как прошел интервал времени обновления, во время которого не удалось обновить файл зоны. 604800
    minimum Период времени, в течение которого вторичный сервер должен хранить в кэше отрицательный ответ. 10800
    serial Число, которое определяет состояние зоны. Plesk использует временную метку Unix момента отправки запроса. 1363228965
    serial_format Всегда "UNIXTIMESTAMP"  
    rr   Информация о ресурсных записях в указанной зоне. Указывается, если commandcreate или update.
  хост   Имя хоста сервера в зоне. www.d10.tld.
  displayHost   Имя хоста сервера без конверсии IDN в ASCII. www.d10.tld.
  type   Тип записи. CNAME
  opt   Часть value без IP-адреса или имени хоста.  
  value   Значение (IP-адрес или имя хоста) ресурса, который доступен для указанного host. d10.tld.
  displayValue   Значение (IP-адрес или имя хоста) ресурса, который доступен для указанного host без конверсии из IDN в ASCII. d10.tld.
ptr     Информация об обратных записях (PTR). Указывается, если commandcreatePTRs или deletePTRs.  
  ip_address   IP-адрес обратной записи. Может быть IPv4 или IPv6 адресом. 10.52.59.29
  hostname   Имя хоста обратной записи. d10.tld

Интеграция Plesk со сторонними службами DNS

Чтобы включить интеграцию Plesk со сторонними службами DNS:

  1. Поместите свой интеграционный скрипт в папку расширения /plib/scripts/

    Например: /plib/scripts/route53.php

  2. Удостоверьтесь в том, что ваш скрипт может быть успешно запущен из командной строки

    В Linux: plesk bin extension --exec <extension_id> <script_name>

    В Windows: <plesk_dir>\bin\extension.exe --exec <extension_id> <script_name>

    Например: plesk bin extension --exec route53 route53.php

  3. Настройте скрипт post-install.php, чтобы зарегистрировать персональный DNS-сервер

    В Linux: plesk bin server_dns --enable-custom-backend <script_execution>

    В Windows: <plesk_dir>\bin\server_dns.exe --enable-custom-backend <script_execution>

    Например:

    $script = 'plesk bin extension --exec route53 route53.php';
    $result = pm_ApiCli::call('server_dns', ['--enable-custom-backend', $script]);
    

Чтобы выключить интеграцию Plesk со сторонней службой DNS и восстановить настройки по умолчанию

Настройте скрипт pre-uninstall.php, чтобы отключить персональный DNS-сервер

В Linux: plesk bin server_dns -—disable-custom-backend

В Windows: <plesk_dir>\bin\server_dns.exe ---disable-custom-backend

Например: $result = pm_ApiCli::call('server_dns', ['--disable-custom-backend']);

Вы можете найти полный пример такой интеграции на github: https://github.com/plesk/ext-route53

Комментарии

Проверка успешной синхронизации зон DNS

При наличии интеграции DNS Plesk со сторонней службой DNS зоны DNS доменов также синхронизируются с этой службой. Успешная синхронизация зоны DNS какого-либо домена означает следующее:

  1. Зона DNS для этого домена создается внешней службой.
  2. Все записи DNS домена корректно копируются во внешнюю службу.
  3. В интерфейсе расширения этот домен отмечен как синхронизированный с внешней службой.
  4. Пользователь получает сообщение о том, что зона DNS для указанного домена успешно синхронизирована с внешней службой.
  5. Если какая-либо запись DNS не поддерживается внешней службой, пользователь видит сообщение об этом в интерфейсе расширения.
  6. Если вся зона DNS не может быть синхронизирована, пользователь видит соответствующее сообщение в интерфейсе расширения.

Особенности синхронизации для разных поддерживаемых типов доменов

Plesk поддерживает большое количество разных типов доменов. Для некоторых из них справедливы дополнительные важные соображения.

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

Тип домена Особенности
Подписка
Дополнительный домен
Субдомен

Синхронизация возможна только для субдоменов со своей собственной зоной DNS.

Субдомены с родительскими зонами DNS не могут быть синхронизированы.

Псевдоним домена Зона DNS псевдонима домена может быть синхронизирована или не синхронизирована с зоной DNS основного домена. Результат синхронизации зоны DNS псевдонима домена с внешней службой не должен от этого зависеть.
Домен без хостинга
Перенаправление
Домен на IPv6 Добавьте IPv6-адрес (если он отсутствует) в разделе Инструменты и настройки > IP-адреса, и используйте его для создания подписки, чтобы проверить синхронизацию такого домена.
IDN-домен Удостоверьтесь в том, что имя домена отображается в интерфейсе расширения в национальной кодировке.

Домены, недоступные для синхронизации

Согласно политике Plesk, зоны DNS следующих доменов не могут быть синхронизированы с внешней службой:

  • домены с отключенной зоной DNS
  • домены со вторичной зоной DNS
  • отключенные домены
  • приостановленные домены

Учет ограничений службы

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

Проверка операций с синхронизированными зонами DNS

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

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

Операции с зоной DNS

  1. Переключение зоны DNS из режима Первичный в режим Вторичный исключает возможность синхронизации. Если зона DNS домена уже синхронизирована с внешней службой, переключение режима из Первичный во Вторичный ничего не меняет, записи зоны DNS остаются на внешнем сервере без изменений. Если зона DNS домена еще не была синхронизирована, переключение в режим Вторичный делает ее синхронизацию невозможной.
  2. Применение шаблона DNS должно быть отражено корректно. Когда пользователь применяет шаблон DNS к активной зоне DNS, записи DNS должны быть соответственно обновлены на внешнем сервере.
  3. Сброс настроек DNS должен быть отражен корректно. Когда пользователь изменяет настройки DNS на настройки по умолчанию для активной зоны DNS, ее записи DNS должны быть соответственно обновлены на внешнем сервере.

Операции с записями DNS

  1. Добавление записи DNS любого типа в Plesk ведет к добавлению записи на внешнем сервере. Это должно работать для всех типов записей DNS.
  2. Редактирование записи DNS в Plesk ведет к изменению соответствующей записи на внешнем сервере.
  3. Удаление записи DNS из Plesk ведет к удалению соответствующей записи на внешнем сервере.

Операции с доменом

Удостоверьтесь в том, что изменения в настройках хостинга домена правильно отражены во внешних записях DNS.

  1. Изменение имени домена. Когда имя домена изменяется, вы можете либо соответственно обновить записи DNS на внешнем сервере, либо полностью удалить их. Это изменение должно быть правильно отражено в интерфейсе расширения Plesk.

  2. Изменение IP-адреса домена в Plesk приводит к обновлению IP-адреса в записях DNS на внешнем сервере.

  3. Отключение синхронизированного домена НЕ приводит к удалению его записей DNS с внешнего сервера.

    Примечание: Если домен был отключен до синхронизации с внешним сервером DNS, он вообще не может быть синхронизирован.

  4. Приостановка синхронизированного домена НЕ приводит к удалению его записей DNS с внешнего сервера.

    Примечание: Если домен был приостановлен до синхронизации с внешним сервером DNS, он вообще не может быть синхронизирован.

  5. Удаление домена из Plesk должно приводить к удалению всех его записей DNS с внешнего сервера.