Что такое DNS-зона?
DNS-зона - это отдельная часть пространства имён DNS, которой управляет конкретная организация или администратор. Зона содержит DNS-записи одного или нескольких доменов и обслуживается авторитетными серверами имён. Домен является именем в дереве DNS, а зона - административной границей, определяющей, какие серверы имён отвечают на запросы.
Домен и зона
Важно понимать различие:
Домен
Домен - это имя в иерархии DNS:
example.com (domain)
└── www.example.com (subdomain)
└── blog.example.com (subdomain)
└── api.example.com (subdomain)
Зона
Зона определяет административное управление записями:
Единая зона для домена и поддоменов:example.com zone contains:
- example.com
- www.example.com
- blog.example.com
- api.example.com
Managed by: ns1.example.com, ns2.example.com
Отдельная зона делегированного поддомена:
example.com zone contains:
- example.com
- www.example.com
- Delegation: api.example.com → different nameservers
api.example.com zone (separate) contains:
- api.example.com
- v1.api.example.com
- v2.api.example.com
Managed by: ns1.apihost.com, ns2.apihost.com
Компоненты зоны
Файл зоны
Текстовый файл со всеми DNS-записями зоны:
; example.com zone file
$TTL 3600
@ IN SOA ns1.example.com. admin.example.com. (
2024010101 ; Serial
7200 ; Refresh
3600 ; Retry
1209600 ; Expire
3600 ; Minimum TTL
)
; Nameserver records
@ IN NS ns1.example.com.
@ IN NS ns2.example.com.
; A records
@ IN A 203.0.113.50
www IN A 203.0.113.50
blog IN A 203.0.113.51
; MX records
@ IN MX 10 mail.example.com.
mail IN A 203.0.113.52
; CNAME records
ftp IN CNAME www.example.com.
; TXT records
@ IN TXT "v=spf1 include:_spf.google.com ~all"
Запись SOA (начало полномочий)
Каждая зона должна содержать ровно одну запись SOA:
example.com. IN SOA ns1.example.com. admin.example.com. (
2024010101 ; Serial
7200 ; Refresh
3600 ; Retry
1209600 ; Expire
3600 ; Minimum TTL
)
Поля SOA:
| Поле | Назначение | Пример значения |
|---|---|---|
| Primary NS | Главный сервер имён | ns1.example.com |
| Admin Email | Контакт (@ → .) | admin.example.com ([email protected]) |
| Serial | Номер версии зоны | 2024010101 |
| Refresh | Интервал проверки вторичными NS | 7200s (2 часа) |
| Retry | Интервал повтора при сбое обновления | 3600s (1 час) |
| Expire | Через сколько вторичный NS прекращает попытки | 1209600s (14 дней) |
| Minimum TTL | Длительность отрицательного кэширования | 3600s (1 час) |
Записи NS (серверы имён)
Указывают, какие серверы являются авторитетными для зоны:
example.com. IN NS ns1.example.com.
example.com. IN NS ns2.example.com.
Эти записи сообщают, к каким серверам обращаться за записями этой зоны.
Типы зон
Первичная зона (master)
Авторитетный источник, в котором редактируются записи зоны:
ns1.example.com (primary)
→ Zone file edited here
→ Changes made directly
→ Notifies secondaries of updates
Вторичная зона (slave)
Доступные только для чтения копии, реплицируемые с первичной зоны:
ns2.example.com (secondary)
→ Retrieves zone data from primary
→ Cannot be edited directly
→ Automatically syncs based on SOA refresh interval
Перенос зоны (AXFR):
1. Secondary checks SOA serial number
2. If primary serial is higher → request full zone transfer
3. Primary sends entire zone
4. Secondary updates its copy
Инкрементный перенос (IXFR):
1. Secondary requests only changes since last serial
2. Primary sends diff
3. More efficient for large zones with small changes
Прямая зона
Сопоставляет имена доменов с IP-адресами (самый распространённый вариант):
example.com → 203.0.113.50
www.example.com → 203.0.113.50
Обратная зона
Сопоставляет IP-адреса с именами доменов (записи PTR):
50.113.0.203.in-addr.arpa → example.com
Используется для:
- проверки почтового сервера;
- журналирования и безопасности;
- поиска и устранения неполадок.
Делегирование зоны
Делегирование создаёт отдельные зоны для поддоменов:
Родительская зона (example.com)
; example.com zone
@ IN A 203.0.113.50
www IN A 203.0.113.50
; Delegate api.example.com to different nameservers
api IN NS ns1.apihost.com.
api IN NS ns2.apihost.com.
; Glue records (if needed)
ns1.api IN A 198.51.100.1
ns2.api IN A 198.51.100.2
Делегированная зона (api.example.com)
Полностью отдельный файл зоны на других серверах имён:
; api.example.com zone (on ns1.apihost.com)
@ IN A 198.51.100.10
v1 IN A 198.51.100.11
v2 IN A 198.51.100.12
Зачем делегировать?
- Организационно: разные команды управляют разными зонами;
- Технически: используются разные DNS-провайдеры (например, API в AWS, сайт в Cloudflare);
- Производительность: распределяется нагрузка DNS;
- Безопасность: изолируются чувствительные сервисы.
Управление зоной
Управление серийным номером
Серийные номера отслеживают версии зоны, обычно в формате ГГГГММДДnn:
2024010101 ; January 1, 2024, version 01
2024010102 ; January 1, 2024, version 02
2024010201 ; January 2, 2024, version 01
Критическое правило: серийный номер должен увеличиваться при каждом изменении, иначе вторичные зоны не обновятся.
Безопасность переноса зоны
Проблема: перенос зоны раскрывает все DNS-записи. Решение: ограничить перенос зоны авторизованными вторичными серверами. Конфигурация BIND:zone "example.com" {
type master;
file "/var/named/example.com.zone";
allow-transfer { 203.0.113.52; 203.0.113.53; }; // Secondary IPs only
notify yes;
};
TSIG (подпись транзакции): аутентифицируйте перенос зоны с помощью общих ключей:
key "transfer-key" {
algorithm hmac-sha256;
secret "base64-encoded-key";
};
allow-transfer { key transfer-key; };
Проверка конфигурации зоны
Запрос записи SOA
dig example.com SOA
; ANSWER SECTION:
example.com. 3600 IN SOA ns1.example.com. admin.example.com. (
2024010101 7200 3600 1209600 3600 )
Запрос записей NS
dig example.com NS
; ANSWER SECTION:
example.com. 86400 IN NS ns1.example.com.
example.com. 86400 IN NS ns2.example.com.
Запрос переноса зоны (AXFR)
dig @ns1.example.com example.com AXFR
# If allowed, returns entire zone
# If denied, returns transfer failed
Большинство общедоступных серверов имён запрещают AXFR, чтобы предотвратить раскрытие информации.
Распространённые конфигурации зон
Простой веб-сайт
example.com zone:
@ A 203.0.113.50
www A 203.0.113.50
@ MX 10 mail.example.com
mail A 203.0.113.51
@ TXT "v=spf1 mx -all"
Зона с несколькими сервисами
example.com zone:
@ A 203.0.113.50
www A 203.0.113.50
blog CNAME hosting.wordpress.com.
shop CNAME shops.myshopify.com.
cdn CNAME d111111abcdef8.cloudfront.net.
@ MX 10 aspmx.l.google.com.
Делегированные поддомены
example.com zone:
@ A 203.0.113.50
www A 203.0.113.50
; Delegate api to AWS Route 53
api NS ns-123.awsdns-01.com.
api NS ns-456.awsdns-02.net.
; Delegate cdn to Cloudflare
cdn NS ns1.cloudflare.com.
cdn NS ns2.cloudflare.com.
Рекомендации по файлу зоны
1. Всегда увеличивайте серийный номер: после каждого изменения, иначе вторичные зоны не обновятся.
2. Используйте даты в серийных номерах: формат ГГГГММДДnn понятен при проверке.
3. Ограничивайте перенос зоны: разрешайте его только авторизованным вторичным серверам.
4. Используйте несколько серверов имён: не менее 2, желательно в разных сетях.
5. Задавайте подходящие TTL: балансируйте пользу кэширования и скорость обновления.
6. Проверяйте перед применением: проверяйте синтаксис файла зоны до загрузки.
7. Контролируйте переносы зоны: убеждайтесь, что вторичные зоны синхронизируются.
8. Документируйте делегирование: отмечайте, какие зоны делегированы и куда.
9. Создавайте резервные копии файлов зон: регулярные копии предотвращают потерю данных.
10. Используйте контроль версий: отслеживайте изменения файлов зон во времени.
Расширенные возможности зоны
DNSSEC (подпись зоны)
Криптографически подписывает записи зоны:
example.com. IN A 203.0.113.50
example.com. IN RRSIG A 8 2 3600 (
signature-data-here )
Защищает от отравления кэша и подмены данных.
Динамический DNS (DDNS)
Разрешает программно обновлять зону:
# Update A record dynamically
nsupdate -k Kupdate.key <<EOF
server ns1.example.com
update delete www.example.com A
update add www.example.com 300 A 203.0.113.51
send
EOF
Полезен для:
- обновления домашнего IP-адреса;
- автоматически масштабируемой инфраструктуры;
- обнаружения сервисов.
Представления зоны (split horizon DNS)
Отдаёт разные данные зоны в зависимости от IP-адреса клиента:
Internal clients: example.com → 10.0.0.50 (internal)
External clients: example.com → 203.0.113.50 (public)
Сценарии использования:
- версии сайта для внутренней и внешней сети;
- ресурсы частной сети;
- ответы с учётом географии.
Устранение неполадок зоны
Сбои переноса зоны
Симптом: вторичные зоны не синхронизированы. Проверка:# Check if primary allows transfers
dig @ns1.example.com example.com AXFR
# Check secondary logs for errors
tail -f /var/log/named.log
Решения:
- проверьте настройки allow-transfer;
- проверьте сетевое соединение между серверами;
- убедитесь, что серийный номер увеличился.
Серийный номер не увеличивается
Симптом: изменения не распространяются на вторичные зоны. Решение: всегда увеличивайте серийный номер при каждом изменении зоны.Делегирование не работает
Симптом: поддомен не разрешается. Проверка:# Verify delegation
dig example.com NS
dig api.example.com NS
# Should show different nameservers for delegated subdomain
Решения:
- проверьте записи NS в родительской зоне;
- проверьте glue-записи, если серверы имён находятся внутри поддомена;
- убедитесь, что дочерняя зона настроена.
DNS-зоны являются основой распределённого управления DNS. Понимание структуры зоны, делегирования и управления позволяет эффективно проектировать DNS для организаций любого масштаба.