# Перенесення DNS-зони між серверами імен: BIND і PowerDNS

> Перенесення DNS-зони між серверами імен: експорт із BIND, передача через AXFR, імпорт у PowerDNS утилітою pdnsutil і перемикання NS без простою.

## Що таке DNS-зона і коли її переносять

DNS-зона — це файл із записами одного домену: A, AAAA, MX, TXT, CNAME, NS. Зону переносять при зміні DNS-хостингу, міграції з BIND на PowerDNS або під час консолідації кількох серверів імен в один.

Перед перенесенням вивантажте поточну зону в текстовий формат — це резервна копія на випадок помилки і джерело для імпорту на новий сервер.

## Експорт зони з BIND

Файли зон у BIND зазвичай лежать у каталозі `/etc/bind/zones/` або `/var/named/`. Перевірте і експортуйте зону командою:

```
named-compilezone -f text -o example.com.zone example.com /etc/bind/zones/db.example.com
cat example.com.zone
```

Якщо зона зберігається в базі (BIND з DLZ) або доступ до файлів обмежений, вивантажте зону через AXFR-запит із сервера, який має право на трансфер.

## Перенесення зони через AXFR між BIND-серверами

AXFR — це протокол повної передачі зони між серверами імен. На старому сервері дозвольте трансфер для нової IP-адреси в `named.conf`:

```
zone "example.com" {
    type master;
    file "/etc/bind/zones/db.example.com";
    allow-transfer { 203.0.113.10; };
};
```

На новому сервері запросіть зону:

```
dig axfr example.com @203.0.113.5
```

Отриманий вивід збережіть у файл зони і підключіть як master на новому сервері.

## Імпорт зони в PowerDNS

PowerDNS зберігає зони в базі даних (MySQL, PostgreSQL або SQLite), а не в текстових файлах. Імпортуйте зону утилітою `pdnsutil`:

```
pdnsutil create-zone example.com
pdnsutil load-zone example.com example.com.zone
pdnsutil rectify-zone example.com
```

Команда `rectify-zone` обов'язкова для зон із DNSSEC або великою кількістю записів — вона перераховує службові поля в базі PowerDNS.

## Перевірка зони перед перемиканням

Звірте кількість записів і вміст ключових полів на старому і новому сервері:

```
dig +short A example.com @old-ns
dig +short A example.com @new-ns
dig +short MX example.com @new-ns
```

Перевірте також серійний номер зони (SOA) — він має бути вищим, ніж на старому сервері, інакше вторинні сервери імен відмовляться приймати оновлення. Загальний підхід до перенесення без простою описано в статті про [керування DNS під час міграції](https://www.zevshost.net/uk/kb/migratsia-dns-bez-prostoya/).

## Як уникнути простою при зміні NS-серверів

Знизьте TTL записів до 300 секунд за 24-48 годин до перенесення — це прискорить поширення змін. Тримайте старі сервери імен робочими щонайменше 72 години після зміни NS у реєстратора: частина резолверів кешує старі записи NS довше належного.

## Підсумок: чек-лист перенесення DNS-зони

- Експортуйте поточну зону в текстовий файл як резервну копію.
- Перенесіть зону через AXFR або ручний імпорт у PowerDNS.
- Знизьте TTL записів за 24-48 годин до перемикання.
- Перевірте серійний номер SOA і вміст записів A, MX, TXT.
- Тримайте старі сервери імен активними щонайменше 72 години після перемикання.
- Збережіть список піддоменів з окремою делегацією — такі NS-записи перевіряють окремо, це часте джерело розбіжностей після перенесення.

Якщо щось пішло не так після зміни NS, порядок дій для повернення описано в [плані відкату міграції](https://www.zevshost.net/uk/kb/migratsia-plan-otkata/). Після повного перемикання виконайте перевірку сайту за загальним [чек-листом перевірки після міграції](https://www.zevshost.net/uk/kb/migratsia-proverka-posle/).

---

Джерело: https://www.zevshost.net/uk/kb/migratsia-dns-zony-bind-powerdns/
