# Свой DNS-сервер на BIND 9: авторитативная зона с нуля

> Разворачиваем BIND 9 как авторитативный DNS-сервер: конфигурация зоны, файл SOA и NS, проверка синтаксиса и передача зоны на вторичный сервер.

## Когда есть смысл держать собственный BIND 9 вместо DNS-провайдера

Управляемый DNS у регистратора или хостинга закрывает большинство задач, но не все. Свой BIND 9 нужен, если у вас собственный ASN и вы строите [Anycast-сеть](https://www.zevshost.net/ru/kb/anycast-geodns/), если требуется нестандартная логика зоны через скрипты и представления (views), либо если политика безопасности запрещает хранить зону у стороннего провайдера. Плата за это — вы сами отвечаете за обновления, отказоустойчивость и защиту сервера от DDoS.

## Установка BIND 9 и ключевые файлы конфигурации

На Debian или Ubuntu сервер поднимается так:

```
sudo apt update
sudo apt install bind9 bind9utils bind9-doc -y
```

Конфигурация разбита на несколько файлов с чёткой ролью каждого:

| Файл | Назначение |
| --- | --- |
| /etc/bind/named.conf.options | Глобальные параметры: рекурсия, forwarders, слушаемые адреса |
| /etc/bind/named.conf.local | Список зон, за которые отвечает сервер |
| /etc/bind/zones/db.example.com | Содержимое конкретной зоны: записи A, NS, MX и другие |
| /var/log/syslog | Журнал запуска и ошибок named |

## Описание зоны в named.conf.local

Каждая зона объявляется отдельным блоком:

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

Директива `allow-transfer` разрешает передачу зоны только перечисленным IP вторичных серверов, а `also-notify` заставляет мастер сразу уведомлять их об изменении серийного номера, не дожидаясь истечения refresh-интервала.

## Файл зоны: SOA, NS, A и другие записи

Сам файл зоны описывает содержимое домена:

```
$TTL 3600
@   IN  SOA ns1.example.com. admin.example.com. (
        2026092901 ; serial
        3600       ; refresh
        900        ; retry
        1209600    ; expire
        3600 )     ; minimum
    IN  NS  ns1.example.com.
    IN  NS  ns2.example.com.
ns1 IN  A   203.0.113.10
ns2 IN  A   203.0.113.53
@   IN  A   203.0.113.10
www IN  CNAME   example.com.
```

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

## Проверка синтаксиса и перезагрузка зоны

Перед перезапуском named синтаксис стоит проверить утилитами из пакета bind9utils:

```
named-checkconf
named-checkzone example.com /etc/bind/zones/db.example.com
sudo rndc reload example.com
```

Команда `named-checkzone` находит опечатки и нарушения формата до того, как они попадут в продакшен, а `rndc reload` подхватывает изменения без полного перезапуска службы и разрыва текущих сессий.

## Вторичный сервер и передача зоны (AXFR)

Для отказоустойчивости нужен минимум один вторичный сервер на отдельном IP — это же требование лежит в основе [glue-записей](https://www.zevshost.net/ru/kb/glue-records-chto-takoe/), если NS-серверы находятся внутри самого делегируемого домена. Конфигурация slave выглядит так:

```
zone "example.com" {
    type slave;
    file "/var/cache/bind/db.example.com";
    masters { 203.0.113.10; };
};
```

После первого успешного AXFR вторичный сервер хранит копию зоны локально и продолжает отвечать на запросы, даже если мастер временно недоступен. Проверить, что обе версии зоны совпадают, можно сверкой serial через dig, как описано в статье [про проверку DNS-зоны](https://www.zevshost.net/ru/kb/proverka-dns-zony-dig/). Если планируете делегировать часть пространства имён на отдельные NS, изучите также [делегирование поддомена](https://www.zevshost.net/ru/kb/delegirovanie-poddomena/).

## Итог: чек-лист запуска авторитативного сервера

- named-checkconf и named-checkzone проходят без ошибок перед каждым reload.
- Минимум два NS-сервера на разных IP и, желательно, в разных сетях.
- allow-transfer ограничен конкретными IP вторичных серверов, а не открыт всем.
- Serial увеличивается при любой правке зоны, а изменения сразу видны через dig с внешнего резолвера.

---

Источник: https://www.zevshost.net/ru/kb/bind9-avtoritativnyy-server/
