Check-Host.cc

Проверка записи Start of Authority (SOA)

Запись SOA (Start of Authority) выступает в роли административного ядра любой DNS-зоны. Это обязательная запись; без валидной SOA домен прекращает существование в глобальной таблице маршрутизации. Payload SOA диктует основные рабочие параметры для домена, устанавливая, какой сервер является окончательным источником истины, кто им управляет, и строгие механизмы таймеров, которые диктуют, как вторичные, избыточные серверы имен (nameservers) реплицируют данные зоны.

Серийный номер зоны и репликация состояния

Самым критическим целым числом в Payload SOA является Серийный номер (Serial Number). Согласно индустриальным конвенциям, он часто форматируется как штамп даты (например, 2023102401 для первого изменения 24 октября 2023 года). Каждый раз, когда администратор изменяет запись A, MX или TXT, этот серийный номер должен увеличиваться. Вторичные (slave) серверы имен регулярно опрашивают (poll) SOA-запись первичного сервера. Если они обнаруживают серийный номер больше, чем тот, что хранится в их локальном кэше, это инициирует немедленную передачу зоны AXFR или IXFR для получения обновленных таблиц маршрутизации. Если серийный номер не увеличить во время редактирования, вторичные серверы никогда не синхронизируются, что приведет к раздробленным, несогласованным DNS-ответам.

Административные таймеры: Refresh, Retry и Expire

Запись SOA определяет три конкретных таймера, управляющих отказоустойчивостью зоны:

  • Refresh: Интервал (в секундах), который вторичные серверы ждут перед тем, как опросить первичный сервер на наличие изменений серийного номера.
  • Retry: Если первичный сервер недоступен (offline) во время опроса, это определяет, как долго вторичный сервер будет ждать перед повторной попыткой.
  • Expire: Абсолютное максимальное время, в течение которого вторичный сервер будет продолжать обслуживать кэшированные записи, если первичный сервер навсегда уйдет в офлайн. Как только этот таймер достигнут, вторичный сервер прекращает отвечать на запросы, фактически отключая домен, чтобы предотвратить обслуживание сильно устаревших данных.

Негативное кэширование и Minimum TTL

Часто неверно понимаемым параметром записи SOA является значение Minimum TTL. Исторически использовавшееся для установки базового времени кэширования, в RFC 2308 это целое число было перепрофилировано исключительно для Негативного кэширования (Negative Caching). Если пользователь запрашивает поддомен, которого не существует (например, fake.example.com), авторитетный сервер отвечает ошибкой NXDOMAIN. Резолвер использует Minimum TTL из SOA, чтобы определить, как долго именно кэшировать эту ошибку. Низкое значение предотвращает длительные простои, если администратор быстро исправляет опечатку, в то время как высокое значение защищает авторитетный сервер от DDoS-атак, запрашивающих случайные, несуществующие поддомены.