Свои NS-сервера в DirectAdmin

Для создания своих NS-серверов необходимо располагать как минимум двумя внешними IP-адресами (иногда их называют: "белые", "публичные", "реальные") из разных подсетей класса C: проще говоря, два IP-адреса должны отличаться на третьем и менее от левого края IP знаке. Например: 8.8.8.8 и 8.8.4.8, 8.8.8.8 и 4.4.4.4.4 подойдут для NS, 8.8.8.8 и 8.8.8.4 - уже нет. Для подвязки некоторых доменов, необходимо чтобы IP отличался уже в первой, с левого края, цифре.

Ниже будет рассматриваться вопрос настройки NS на двух различных серверах с установленным DA (на каждый сервер отдельная лицензия) и различными IP при помощи раздела панели управления уровня администратора Multi Server Setup. Следует отметить, что Multi Server Setup на момент написания статьи служит только для синхронизации DNS и проверки дублирующихся имен пользователей DA.

При наличии двух IP адресов на одном сервере тоже можно настроить NS, но такая конфигурация будет менее отказоустойчивой. Также, существует скрипт в DA для выгрузки данных о DNS на другой сервер без DirectAdmin: master2slave.

Краткая информация на английском по поводу синхронизации DSN между несколькими серверами размещена тут: help.directadmin.com/item.php?id=138.

Multi Server Setup - настройка синхронизации DNS между двумя и более серверами с DirectAdmin

Первым делом нужно прописать создаваемые NS-ы у регистратора домена. NS - это по сути обычный поддомен основного домена. Например, чтобы создать NS-ы на основе домена petrenco.com нужно добавить 2 записи типа A в панели управления DNS записями домена у регистратора:

ns1 A 8.8.8.8
ns2 A 8.8.4.8
(IP - адреса приведены в качестве примера - необходимо указывать свои IP)

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

Пока настройки не активны, можно заняться настройкой DirectAdmin. Для связки серверов понадобиться создать 2 пользователей admin2 с уровнем доступа администратор в разделе Create Administrator (Admin Level) на каждом из серверов. Впринципе, логины и пароли учетных записей администраторов, заведенных для синхронизации DSN-данных могут быть любыми - но во всех примерах ниже будет использоваться логин admin2.

На первый взгляд такое решение создает угрозу безопасности: ведь при взломе сервера A пароль администратора admin2 от сервера B может быть легко прочитан, так как он хранится в открытом виде на сервере A. Но предприняв дополнительные шаги по повышению безопасности серверов, можно легко нивелировать эту угрозу.

В DirectAdmin существует два способа существенно сократить права администратора: использовать скрипт all_pre.sh или экспериментальный (на момент написания статьи, доступен с версии DA 1.402) раздел панели управления CMD_LOGIN_KEYS, доступ к которому можно получить по такому адресу https://ip-addr:2222/CMD_LOGIN_KEYS. Поскольку CMD_LOGIN_KEYS еще находится в стадии тестирования, ниже будет рассмотрен пример ограничения доступа администратора с использованием скрипта.

Скрипт all_pre.sh, листинг которого приведен ниже, нужно разместить тут: /usr/local/directadmin/scripts/custom/.

Скрипт ограничения прав администратора admin2 в DA:
/usr/local/directadmin/scripts/custom/all_pre.sh
#!/bin/sh

if [ "$username" = "admin2" ]; then
  if [ "$command" = "/CMD_API_DNS_ADMIN" ]; then
    exit 0;
  fi
  if [ "$command" = "/CMD_API_LOGIN_TEST" ]; then
    exit 0;
  fi
  if [ "$command" = "/CMD_API_USER_EXISTS" ]; then
    exit 0;
  fi
exit 1;
fi
exit 0;
 

После сохранения файла этого скрипта на обоих серверах, необходимо задать ему права доступа 755, в противном случае все пользователи DirectAdmin не смогут работать в панели управления - любое действие будет заканчиваться сообщением "Command Returned".

Если все сделано правильно - под учетной записью администратора admin2 можно будет аутентифицироваться в DA, но выполнить любое действие в панели управления будет невозможно.

Multi Server Setup - свои NS в Directadmin

Теперь необходимо настроить Multi Server Setup на сервере A - добавить удаленный сервер (Add Remote Server): ввести IP и Port сервера B, отметить пункт SSL, ввести логин и пароль администратора admin2 от сервера B и нажать кнопку Add. После этого данные нового сервера отобразятся в списке: "List of External Servers".

Новое соединение следует проверить: отметить в колонке "Select" галочкой проверяемый сервер и нажать кнопку "Test Connection(s)". Если в процессе теста произошли ошибки - необходимо их исправить:

  • You have not selected any IPs - самая часто возникающая ошибка, но и самая легко решаемая - не выбрано проверяемое соединение (не отмечена галочка в колонке Select напротив тестируемого соединения).
  • Unable to connect to secure socket - скорее всего на удаленном сервере с DA не установлен сертификат SSL. Решить эту проблему поможет статья HTTPS для Directadmin.
  • Unable to get api result. Check your configuration options - нет связи с API-интерфейсом удаленного сервера. Нужно проверить:
    • лог-файлы на обоих серверах;
    • наличие IP-адреса сервера A в черном списке запрещенных IP на сервере B (например за многократные попытки неверной авторизации): /usr/local/directadmin/data/admin/ip_blacklist;
    • настройки firewall на обоих серверах (если firewall установлен).

Настройки соединения (Actions) Multi Server Setup:

Zone Transfer - любое изменение в настройках DNS (добавление нового домена/сайта, изменение в настройках DNS домена, удаление домена) сервера A будет отражено на сервере B. То есть если добавить новый домен на сервере A, он будет добавлен на сервере B (на сервер B будет добавлены только DNS записи домена - новый сайт/пользователь создаваться не будет). Если на сервере A есть настройки DNS для 100 доменов, которые необходимо перенести на сервер B, нужно либо вручную вносить изменения в каждый домен или единоразово запустить из консоли сервера A такую команду:

#echo "action=rewrite&value=named" >> /usr/local/directadmin/data/task.queue

В этом случае, если на сервере B был домен example.com, то вся информация о DNS этого домена будет перезаписана информацией, взятой с сервера A.

Domain Check - проверяет наличие записи о домене на сервере B. Например, если на сервере B прописан домен example.com, добавить его на сервере A будет невозможно.

User Check - проверяет существование пользователя на удаленном сервере перед его созданием. Если пользователь с идентичным логином будет обнаружен на сервере B - создать дубликат на сервере A невозможно. Подробнее тут (eng).

После выбора настроек (я рекомендую активировать все три: Zone Transfer, Domain Check и User Check, но выбор зависит от конкретной ситуации) нужно включить сервис Multi Server Setup на сервере A нажатием кнопки "Turn On" - сервис запустится в течении минуты, о чем будет свидетельствовать надпись "Multi Server is currently turned ON" (чтобы обновить нужно выйти и снова зайти в Multi Server Setup).

Проверить, работает ли сервис, достаточно легко: нужно добавить новый сайт пользователю или новый домен в разделе "DNS Administration" на сервере A и посмотреть, добавился ли домен на сервере B в разделе "DNS Administration" (на сервере B Multi Server Setup может быть выключен).

Если "Test Connection(s)" не выдает никаких ошибок, а изменения DNS на сервере A не клонируются на сервер B, возможно причина в том, что в качестве пользователя для подключения используется не администратор (User, Reseller) сервера B. В этом случае в логе admin » Log Viewer » DirectAdmin Error Log: можно будет увидеть такие сообщения об ошибках:

2012:08:19-19:42:05: Cluster ...: Error checking for remote dns zone (xxx.xx): (null)
2012:08:19-19:42:06: Cluster: Error writing remote dns zone: (null)

Повторюсь: для работы Multi Server Setup необходим только административный логин удаленного сервера.

Таким же образом можно привязать сервер B к серверу A, чтобы все изменения в DNS, производимых на сервере B автоматически вносились и в сервер A. Хоть DirectAdmin и использует Bind для DNS - архитектура Master/Slave не используется, то есть нет подчиненного и главного сервера.

Используя материал этой статьи можно "завязать" более двух серверов, что позволит иметь более двух NS: на каждом сервере с DA нужно добавить остальные сервера.

Опубликовано: 2012/08/20
HTML-код ссылки на эту страницу:
<a href="https://petrenco.com/freebsd.php?txt=148" target="_blank">Свои NS-сервера в DirectAdmin</a>
6952
Добавить комментарий
Ваш e-mail: (не виден посетителям сайта)
Ваше имя:
Комментарий:
Символы с картинки:
Только выделенные поля формы добавления комментариев обязательны к заполнению.