🗂️
Домены

Экспорт и импорт DNS-зоны: перенос записей без потерь

08.11.2026
← Все статьи

DNS-зона — это совокупность всех записей вашего домена: на каком IP-адресе работает сайт, на какой сервер идёт почта, записи SPF, DKIM и DMARC, коды подтверждения для разных сервисов. Эти записи обычно накапливаются годами, и полного их списка ни у кого нет. При переносе DNS к другому провайдеру или крупной перестройке одна забытая запись может остановить почту или сломать интеграцию с платёжной системой. Поэтому умение правильно экспортировать зону и без ошибок импортировать её на новое место — важный навык.

Из чего состоит файл зоны

Стандартный вид файла зоны называется форматом BIND, и его понимают почти все DNS-программы и панели. Каждая строка описывает одну запись: имя, время жизни (TTL), класс, тип и значение. В начале обычно стоят директивы $ORIGIN и $TTL, затем идут запись SOA с основными параметрами зоны и список серверов имён.

$ORIGIN example.uz.
$TTL 3600
@        IN  SOA  ns1.provayder.uz. hostmaster.example.uz. (
                  2026110401 ; serial
                  3600       ; refresh
                  900        ; retry
                  1209600    ; expire
                  300 )      ; minimum
@        IN  NS     ns1.provayder.uz.
@        IN  NS     ns2.provayder.uz.
@        IN  A      203.0.113.10
www      IN  CNAME  example.uz.
@        IN  MX     10 mail.example.uz.
mail     IN  A      203.0.113.20
@        IN  TXT    "v=spf1 ip4:203.0.113.20 ~all"
_dmarc   IN  TXT    "v=DMARC1; p=quarantine; rua=mailto:dmarc@example.uz"

Символ @ обозначает сам домен. Обратите особое внимание на точку в конце имён: mail.example.uz. — полное имя, а mail без точки автоматически дополняется значением $ORIGIN. Забытая точка — одна из самых частых ошибок, в результате которой появляются имена вроде mail.example.uz.example.uz.

Способы экспорта зоны

Экспорт через панель

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

Передача зоны (AXFR)

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

dig AXFR example.uz @ns1.provayder.uz > example.uz.zone

Сбор записей запросами

Если нет ни панели, ни AXFR, остаётся запрашивать записи по типам. На запрос типа ANY сегодня многие серверы полного ответа не дают, поэтому каждый тип нужно запрашивать отдельно. Главный недостаток способа в том, что найти можно только записи, имена которых вы знаете. Поэтому заранее составьте список имён: селекторы DKIM, _dmarc, autodiscover, записи подтверждения.

for t in A AAAA MX TXT CAA NS; do
  echo "== $t"; dig +noall +answer $t example.uz
done
dig +noall +answer TXT _dmarc.example.uz
dig +noall +answer TXT default._domainkey.example.uz
dig +noall +answer A www.example.uz

Проверка файла

Перед импортом полезно проверить файл зоны на синтаксические ошибки. Утилита named-checkzone из пакета BIND читает файл и показывает ошибки и неверные имена. В Linux она обычно ставится вместе с пакетом bind9-utils или bind-utils.

named-checkzone example.uz example.uz.zone
# zone example.uz/IN: loaded serial 2026110401
# OK

Кроме того, просмотрите файл глазами: правильно ли склеены части длинного ключа DKIM, закрыты ли кавычки в TXT-значениях, нет ли CNAME для самого домена. CNAME в корне домена по стандарту запрещён, потому что там находятся записи SOA и NS.

Импорт на новое место

При импорте не переносите записи SOA и NS из старого файла. Их автоматически создаст новый провайдер, и они должны указывать на новые серверы имён. Если оставить старые NS, внутри зоны появятся противоречивые данные. Остальные записи добавьте через функцию импорта в панели или по одной. После импорта опросите новые серверы имён напрямую и сравните ответы со старыми. На этом этапе домен ещё обслуживается старыми NS, так что сайт и почта никак не затронуты.

for t in A MX TXT; do
  diff <(dig +short $t example.uz @ns1.eski.uz | sort) \
       <(dig +short $t example.uz @ns1.yangi.uz | sort) && echo "$t: совпадает"
done

Планирование дня переезда

За день-два до смены серверов имён снизьте TTL важных записей в старой зоне, например до 300 секунд. Тогда исправление возможной ошибки разойдётся быстро. Учтите, что сами NS-записи хранятся уровнем выше, в зоне домена верхнего уровня, и срок их кеширования от вашего TTL не зависит, поэтому полный переход может занять от нескольких часов до одного-двух дней. Если у домена включён DNSSEC, перед переездом его нужно корректно отключить или перенастроить с ключами нового провайдера, иначе домен может полностью перестать открываться.

Пример: гостиница в Бухаре

Семейная гостиница в Бухаре переносит сайт и почту на новый хостинг. В её зоне есть сайт, почта, поддомен для системы онлайн-бронирования, запись подтверждения для поисковой системы и TXT-код для платёжного сервиса. Администратор экспортирует зону из старой панели, проверяет файл через named-checkzone, убирает из него SOA и NS и импортирует в новую панель. Затем скриптом сравнения убеждается, что старые и новые серверы отвечают одинаково. Только после этого меняются серверы имён, и система бронирования вместе с почтой продолжает работать без перерыва.

После добавления записей в разделе DNS личного кабинета sayt.uz рекомендуется проверить их прямым запросом dig к новым серверам имён и только затем менять NS в настройках домена.

Похожие статьи

🏷️ BIMI: как показать логотип компании в почтовом ящике получателя 📁 Управление доменным портфелем компании: учёт, ответственность и контроль 🔍 Сменили NS, а сайт не открывается: чек-лист проверки 🔑 Ротация ключа DKIM: когда и как менять ключ без потерь
🌐 Язык
🇺🇿 O'zbek 🇺🇿 Ўзбек 🇷🇺 Русский ✓ 🇬🇧 English