Перенести данные из DNSmanager 5 в DNSmanager 6 можно двумя способами:

  • установить DNSmanager 6 на сервер с DNSmanager 5. Скрипт установки автоматически перенесёт данные из DNSmanager 5. Панель управления будет перенастроена на работу с СУБД MySQL и DNS-сервером; 

  • установить DNSmanager 6 на новый сервер и перенести дамп базы данных DNSmanager 5.

При переходе на DNSmanager 6 не сохраняются настройки брендирования.

Подготовка


Поддержка ОС

Если вы планируете установить DNSmanager 6 на сервер с DNSmanager 5, убедитесь, что DNSmanager 6 поддерживает ОС сервера. Подробнее см. в статье Требования к серверу.

Если ОС не поддерживается, перенесите панель управления на сервер с поддерживаемой ОС по инструкции из документации DNSmanager 5.

Лицензирование

Для установки DNSmanager 6 потребуется ключ лицензии. Если вы приобрели DNSmanager 6 в ISPsystem, вы можете посмотреть эту информацию в личном кабинете на my.ispsystem.com в разделе "Лицензии" → выберите лицензию DNSmanager 6 → поле Ключ лицензии.

Отключение DNSSEC

Текущая версия DNSmanager 6 не поддерживает перенос доменов с защитой DNSSEC. Чтобы отключить защиту:

  1. Удалите все DS-записи из родительской доменной зоны.
  2. Не ранее, чем через два часа, удалите подписи доменной зоны: Учётные записи Доменные имена → выберите домен → кнопка Изменить → включите опцию Удалить подписьOk.
  3. Отключите поддержку DNSSEC: Настройки  Глобальные настройки → отключите опцию

Установка DNSmanager 6 на сервер с DNSmanager 5


Установите DNSmanager 6 по инструкции из статьи Установка. При появлении запроса DNSmanager5 found. Do you want to migrate data from it to DNSmanager6?(y/N) нажмите y

Скрипт установки:

  1. Устанавливает DNSmanager 6 и дополнительные пакеты ПО.
  2. Блокирует DNSmanager 5.
  3. Создаёт дамп БД и всех пространств имён из DNSmanager 5. Дамп сохраняется в директории /opt/ispsystem/dnsmanager6/dump/.

  4. Импортирует дамп БД в DNSmanager 6 и очищает кэш БД.
  5. Восстанавливает пространства имён из дампа.

Для DNSmanager 6 устанавливается новый ihttpd сервер. После установки перевыпустите Let's encrypt сертификат или переустановите существующий, если вы использовали коммерческий сертификат.

Перенос дампа БД на сервер с DNSmanager 6


  1. На сервере с DNSmanager 5:
    1. Подготовьте утилиту для формирования дампа:
      1. Установите ПО для сборки утилиты: 

        yum install coremanager-devel
        BASH
      2. Скачайте исходный код утилиты и выполните сборку: 

        cd /usr/local/mgr5/src && \
        wget https://download.ispsystem.com/extras/dnsmanager/backuptool.tar.gz && \
        tar -xvf backuptool.tar.gz && \
        cd /usr/local/mgr5/src/backuptool && \
        make centos-prepare && \
        make dist DISTDIR=/usr/local/mgr5
        BASH
    2. Сформируйте дамп: 

      1. Заблокируйте панель управления:

        /usr/local/mgr5/sbin/mgrctl -m dnsmgr -l
        BASH
      2. Запустите формирование дампа:

        /usr/local/mgr5/sbin/backuptool --command dump --dump-dir /usr/local/mgr5/dump
        BASH
      3. Разблокируйте панель управления:

        /usr/local/mgr5/sbin/mgrctl -m dnsmgr -u
        BASH
    3. Скопируйте содержимое директории /usr/local/mgr5/dump/ на сервер с DNSmanager 6 в директорию /opt/ispsystem/dnsmanager6/dump/.
    4. Скопируйте конфигурационный файл /usr/local/mgr5/etc/dnsmgr.conf на сервер с DNSmanager 6 в директорию /opt/ispsystem/dnsmanager6/etc/.
    5. Скопируйте все файлы из директории /usr/local/mgr5/var/userconf/ на сервер с DNSmanager 6 в директорию /opt/ispsystem/dnsmanager6/var/userconf/.
  2. На сервере с DNSmanager 6:

    1. Удалите, если присутствуют, из конфигурационного файла /opt/ispsystem/dnsmanager6/etc/dnsmgr.conf:
      1. параметры подключения к PowerDNS — PdnsConfigDir, PdnsDBHost, PdnsDBUser, PdnsDBPassword;
      2. параметры подключения к БД — DBType, DBHost, DBUser, DBPassword, DBName;
    2. Файлы дампа содержат IP-адреса сервера с DNSmanager 5:
      • чтобы использовать новые IP-адреса, замените старые IP-адреса на новые во всех файлах дампа: db.dump.sql, dns.dump.json, ipdb.dump.sql;
      • чтобы перенести IP-адреса на новый сервер с DNSmanager 6, не изменяйте их в файлах дампа;
    3. Заблокируйте панель управления:

      /opt/ispsystem/dnsmanager6/sbin/mgrctl -m dnsmgr -l
      BASH
    4. Подготовьте БД: 

      mysql -e 'DROP DATABASE dnsmgr; CREATE DATABASE dnsmgr'
      BASH
    5. Восстановите дамп: 

      /opt/ispsystem/dnsmanager6/sbin/backuptool --command restore --dump-dir /opt/ispsystem/dnsmanager6/dump
      BASH
    6. Удалите кэш БД: 

      rm -rf /opt/ispsystem/dnsmanager6/var/.db.cache.*
      BASH
    7. Разблокируйте панель управления: 

      /opt/ispsystem/dnsmanager6/sbin/mgrctl -m dnsmgr -u
      BASH
    8. Для первого пространства имён рекомендуем использовать view pdns по умолчанию. Для этого в файле dump/dns.dump.json измените IP-адрес на первый IP-адрес интерфейса:

      dump/dns.dump.json

      [
         {
            "allowtransfer" : "127.0.0.1 185.48.237.3",
            "destip" : "1.1.1.1", // IP-адрес view по умолчанию
            "enabled" : true,
            "name" : "reseller.ru", // имя view по умолчанию
            "zones" : [
            	...
            ],
            ...
         }
      ]
      BASH
    9. Добавьте в etc/dnsmgr.conf параметры для использования view по умолчанию первым пространством имён из dump/dns.dump.json:

      DefViewUsable yes
      DefViewAlias reseller.ru
      CODE
    10. Запустите восстановление данных DNS-сервера: 

      /opt/ispsystem/dnsmanager6/sbin/mgrctl -m dnsmgr restore_dns bind_ip=on
      BASH

      Продолжительность восстановления зависит от количества пространств имён и может занять от нескольких секунд до одного часа.

  3. Заблокируйте панель управления на сервере с DNSmanager 5: 

    /usr/local/mgr5/sbin/mgrctl -m dnsmgr -l
    BASH

Действия после переноса


Активация лицензии

Авторизуйтесь в панели управления по URL https://<ваш_домен>:1501/dnsmgr и введите ключ лицензии.

Проверка пространств имён

  1. Проверьте состояние запущенных пространств имён:

    Пространство имён по умолчанию

    systemctl status pdns
    CODE

     

    Пользовательские пространства имён

    systemctl status "pdns@*"
    CODE

    Если сервисы остановлены, запустите их:

    Пространство имён по умолчанию

    systemctl start pdns
    CODE

    Пользовательские пространства имён

    systemctl start "pdns@<view>"
    CODE

    <view> — пространство имён

  2. Если вывод команды содержит ошибки, выполните диагностику с помощью утилиты journalctl:  

    journalctl -xe
    CODE
  3. Чтобы устранить ошибки, проверьте корректность конфигурационных файлов PowerDNS и перезапустите пространства имён:

    Пространство имён по умолчанию

    systemctl start pdns
    CODE


    Пользовательские пространства имён

    systemctl start "pdns@<view>"
    CODE

    <view> — пространство имён

Проверка DNS-записей

  1. Проверьте ошибки при переносе DNS-записей:

    zgrep "got error while restoring" var/dnsmgr.log
    CODE
    zgrep "got error while restoring" var/logs/dnsmgr.log*
    CODE
  2. Занесите записи или зоны из сообщения об ошибке вручную через интерфейс панели управления DNSmanager.

    Пример ошибок

    Aug 24 03:50:05 [12784:12] dnsmgr WARNING got error while restoring record 'fft.ru.' for zone 'fft.ru': Type: 'exists' Object: 'dns_record' Value: 'fft.ru. TXT  v=spf1 redirect=_spf.yandex.net'
    CODE

Возможные ошибки


ERROR notconfigured(def_view_no_action): An error occurred while executing the request

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

Решение:

  1. Определите IP-адрес сервера по умолчанию:

    ip addr
    CODE

    Пример вывода

    1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
        link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
        inet 127.0.0.1/8 scope host lo
           valid_lft forever preferred_lft forever
        inet6 ::1/128 scope host 
           valid_lft forever preferred_lft forever
    2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
        link/ether aa:bb:cc:dd:ee:ff brd ff:ff:ff:ff:ff:ff
        inet 172.31.48.152/32 brd 172.31.48.152 scope global noprefixroute eth0
           valid_lft forever preferred_lft forever
        inet 172.31.48.153/32 brd 172.31.48.153 scope global noprefixroute eth0
           valid_lft forever preferred_lft forever
    CODE

    Сохраните первый IP-адрес из настроек сетевого интерфейса. В примере выше это IP-адрес 172.31.48.152.

  2. Найдите сохранённый IP-адрес в параметре destip файла /opt/ispsystem/dnsmanager6/dump/dns.dump.json

    Пример файла

    [
       {
          "allowtransfer" : "127.0.0.1",
          "destip" : "172.31.48.152",
          "enabled" : true,
          "name" : "ns.example.com",
          "zones" : [
    ...
    CODE

    Сохраните значение параметра name для этого IP-адреса. В примере выше это ns.example.com.

  3. Добавьте в конфигурационный файл /opt/ispsystem/dnsmanager6/etc/dnsmgr.conf параметры

     DefViewUsable yes
     DefViewAlias <name>
    CODE

    <name> — сохранённое значение name

  4. Перезапустите панель управления: 

    /opt/ispsystem/dnsmanager6/sbin/mgrctl -m dnsmgr -R
    BASH
  5. Перезапустите процесс восстановления:
    • если вы устанавливаете DNSmanager 6 на сервер с DNSmanager 5: 

      /opt/ispsystem/dnsmanager6/sbin/mgrctl -m dnsmgr restore_dns
      BASH
    • если вы переносите дамп БД DNSmanager 5: 

      /opt/ispsystem/dnsmanager6/sbin/mgrctl -m dnsmgr restore_dns bind_ip=on
      BASH
  6. Перезапустите панель управления: 

    /opt/ispsystem/dnsmanager6/sbin/mgrctl -m dnsmgr -R
    BASH

ERROR missed(ips)

Ошибка может возникнуть при восстановлении данных DNS-сервера.

Пример ошибки

ERROR missed(ips):  with  '192.168.1.1' does not exist
CODE

192.168.1.1 — несуществующий IP-адрес

Решение:

  1. В файле /opt/ispsystem/dnsmanager6/dump/dns.dump.json удалите из параметра destip IP-адрес, содержащийся в тексте ошибки. Например, параметр destip имеет вид: 

    "destip": "192.168.1.1 192.168.2.2"
    CODE

    Если ошибка содержит IP-адрес 192.168.1.1, то параметр нужно изменить на: 

    "destip": "192.168.2.2"
    CODE
  2. Перезапустите процесс восстановления: 

    /opt/ispsystem/dnsmanager6/sbin/mgrctl -m dnsmgr restore_dns bind_ip=on
    CODE

Trying restore DNS from dump

Если восстановление данных DNS-сервера заканчивается на строке Trying restore DNS from dump, а панель управления завершает работу, значит на сервере недостаточно оперативной памяти для выполнения операции.

Решение: увеличьте объём оперативной памяти на сервере.

Диагностика


Лог-файлы DNSmanager 5

  • /usr/local/mgr5/var/backuptool.log — утилита для формирования дампа.

Лог-файлы DNSmanager 6

  • /opt/ispsystem/dnsmanager6/var/dnsmgr.log — скрипт установки;
  • /opt/ispsystem/dnsmanager6/var/backuptool.log — утилита для формирования дампа.