SOA запись
SOA-запись (Start of Authority, запись начала полномочий) — это тип ресурсной записи в системе доменных имён (DNS), который содержит ключевую административную информацию о зоне DNS. Она определяет, какой сервер является основным (авторитативным) источником данных для данной зоны, задаёт параметры кэширования, репликации и обновления зоны, а также указывает контактный адрес ответственного лица. SOA-запись является обязательной для каждой корректно настроенной зоны DNS и всегда располагается первой в её файле.
Структура и синтаксис
SOA-запись имеет строгий формат и состоит из нескольких полей, разделённых пробелами или табуляцией. В стандартном представлении (например, в файле зоны BIND) она выглядит следующим образом:
`` example.com. IN SOA ns1.example.com. admin.example.com. ( 2025031501 ; serial 3600 ; refresh 1800 ; retry 604800 ; expire 86400 ; minimum TTL ) ``
Основные элементы записи:
- Имя зоны (owner name) — домен, к которому относится запись (например,
example.com.). - Класс (class) — обычно
IN(Internet). - Тип —
SOA. - Основной сервер имён (MNAME) — полное доменное имя (FQDN) первичного (основного) сервера, который содержит эталонную копию зоны. Обычно указывается с точкой в конце.
- Почтовый ящик администратора (RNAME) — адрес электронной почты ответственного лица, закодированный в формате DNS (символ
@заменяется на точку). Например,admin.example.com.соответствуетadmin@example.com. - Серийный номер (serial) — 32-битное целое число, которое увеличивается при каждом изменении данных в зоне. Используется вторичными (подчинёнными) серверами для проверки необходимости обновления копии зоны.
- Время обновления (refresh) — интервал в секундах, через который вторичные серверы должны запрашивать у первичного сервера серийный номер для проверки изменений.
- Время повторной попытки (retry) — интервал в секундах, через который вторичный сервер повторяет запрос, если предыдущая попытка обновления не удалась.
- Время истечения (expire) — интервал в секундах, по истечении которого вторичный сервер перестаёт обслуживать запросы к зоне, если ему не удалось связаться с первичным сервером.
- Минимальное время жизни (minimum TTL, ранее — negative caching TTL) — время в секундах, которое кэширующие серверы должны хранить отрицательные ответы (например, запись NXDOMAIN) для данной зоны. В современных реализациях DNS это поле также может интерпретироваться как TTL для SOA-записи.
Назначение и функции
SOA-запись выполняет несколько критически важных функций в работе DNS:
- Определение авторитативности — указывает, какой сервер является основным источником данных для зоны. Все остальные серверы, обслуживающие зону, считаются вторичными и получают данные от первичного.
- Управление репликацией — параметры refresh, retry, expire и serial задают протокол взаимодействия между первичным и вторичными серверами, обеспечивая синхронизацию данных (зонный трансфер, AXFR/IXFR).
- Кэширование и кэш-негатива — поле minimum TTL определяет, как долго резолверы могут хранить отрицательные ответы, что влияет на нагрузку на серверы и скорость обнаружения несуществующих доменов.
- Административная информация — контактные данные администратора позволяют решать технические проблемы владельцам других зон или провайдерам.
История и стандартизация
SOA-запись была впервые определена в RFC 883 (1983 год) как часть оригинальной спецификации DNS. Впоследствии её формат и семантика были уточнены в RFC 1034 и RFC 1035 (1987 год), которые остаются основными стандартами для DNS. Позднее, в RFC 2308 (1998 год), было введено понятие «отрицательное кэширование» (negative caching), и поле minimum TTL стало использоваться именно для этой цели, а не для указания TTL самой SOA-записи, как это было ранее.
Практическое использование
Настройка зоны
При создании новой зоны DNS администратор обязан корректно заполнить SOA-запись. Типичные рекомендации для значений:
- Serial — часто используется формат
YYYYMMDDNN, гдеNN— номер изменения за день (например,2025031501). Это упрощает отслеживание изменений. - Refresh — обычно от 3600 (1 час) до 86400 (24 часа). Для динамически меняющихся зон может быть меньше.
- Retry — обычно меньше refresh, например 1800 (30 минут) или 3600.
- Expire — от 604800 (7 дней) до 1209600 (14 дней). Слишком малое значение может привести к отказу в обслуживании при временных проблемах с сетью.
- Minimum TTL — от 300 (5 минут) до 86400. Для стабильных зон можно устанавливать большие значения, чтобы снизить нагрузку на серверы.
Проблемы и критика
Некорректно настроенная SOA-запись может привести к серьёзным проблемам в работе домена:
- Слишком малый expire — при длительном сбое первичного сервера вторичные серверы перестанут отвечать на запросы, и зона станет недоступной.
- Слишком большой refresh — изменения в зоне будут долго распространяться на вторичные серверы.
- Ошибки в серийном номере — если серийный номер не увеличивается при изменении зоны, вторичные серверы не узнают о необходимости обновления. Если он случайно уменьшается, вторичные серверы могут отказаться принимать обновления.
- Неверный формат RNAME — приводит к тому, что письма администратору не доставляются.
Примеры в реальных системах
В DNS-серверах BIND, PowerDNS, NSD, Microsoft DNS и других SOA-запись является обязательным элементом конфигурации зоны. В BIND она обычно задаётся в файле зоны, а в PowerDNS может храниться в базе данных. При использовании облачных DNS-провайдеров (например, Яндекс.Облако, Cloudflare, AWS Route 53) значения SOA-записи часто задаются автоматически с возможностью ручной корректировки.
Интересные факты
- Поле
minimum TTLв старых реализациях (до RFC 2308) использовалось как TTL для самой SOA-записи. Современные серверы обычно игнорируют это значение для кэширования SOA-записи, используя отдельный TTL, указанный в начале записи. - Серийный номер может быть любым 32-битным числом, но стандарт рекомендует использовать монотонно возрастающую последовательность. В BIND есть возможность автоматического увеличения серийного номера с помощью директивы
serial-query-rate. - В некоторых DNS-серверах (например, в BIND) для проверки корректности SOA-записи используется утилита
named-checkzone.
Источники
- RFC 1034 — Domain Names — Concepts and Facilities
- RFC 1035 — Domain Names — Implementation and Specification
- RFC 2308 — Negative Caching of DNS Queries (DNS NCACHE)
- DNS and BIND, 5th Edition — Paul Albitz, Cricket Liu
- Документация BIND 9 (Internet Systems Consortium)
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →