DNS после изменения записи: сравниваем авторитетный сервер и резолвер

Адрес сайта изменили, но часть клиентов продолжает подключаться к прежнему серверу. Совет «подождать DNS» слишком неточен: ошибочная запись может оставаться на одном авторитетном сервере, а корректная — лежать в кэше резолвера с ещё не истёкшим TTL. Эти ситуации требуют разных действий и сроков.

Найдите источник записи

dig example.org NS
dig @ns1.provider.example app.example.org A +norecurse
dig @ns2.provider.example app.example.org A +norecurse

Имена серверов условные. Возьмите NS своей зоны и проверьте каждый обслуживающий её сервер. У ответа авторитетного сервера обычно будет флаг AA. Если получена делегация, отказ либо ответ не от нужной зоны, уточните цепочку: запрос к случайному DNS-серверу не превращает его в источник истины.

При изменении имени через CNAME проверьте и псевдоним, и конечную запись. У них отдельные TTL, а конечный адрес может находиться в другой зоне. Иначе вы сравните одинаковый CNAME и пропустите устаревший адрес его цели. Сохраните всю секцию ANSWER, чтобы не потерять этот переход.

Сравните ответ клиентского резолвера

dig @192.0.2.53 app.example.org A
dig @192.0.2.53 app.example.org AAAA

Используйте резолвер проблемного клиента. Публичный резолвер удобен как независимое наблюдение, но не объясняет ответ внутри корпоративной сети. Запишите адреса и оставшийся TTL. Если авторитетные серверы согласованы, а рекурсивный отдаёт прежнее значение, разница может соответствовать штатному кэшированию.

Например, оба авторитетных сервера уже показывают новый адрес, а корпоративный резолвер возвращает старый с оставшимися 180 секундами. Повторный запрос через минуту с меньшим TTL поддерживает гипотезу кэша. Если срок снова увеличился и адрес остался старым, исследуйте источники, пересылку запросов и возможные внутренние зоны.

Уменьшение TTL после изменения записи не сокращает срок жизни уже закэшированного ответа. Резолвер получил предыдущий TTL раньше. Для планового переезда низкий TTL устанавливают заранее, выдерживают прежний срок и только затем переключают адрес. После завершения миграции срок можно вернуть к обычному значению.

Выберите правильное действие

Если авторитетные серверы расходятся, проверьте публикацию зоны у провайдера и согласованность экземпляров. Ожидание клиентских кэшей не исправит источник неправильных данных. Если источники верны, оцените срок кэша и сохраните прежний сервер доступным на переходный период, когда это предусмотрено планом миграции.

Если dig показывает новый адрес, а приложение использует старый, переходите к собственному кэшу приложения. Долго живущее соединение тоже может оставаться на старом сервере без нового DNS-запроса. Повторное редактирование зоны здесь лишь добавит неопределённость.

Проверка завершена, когда вы можете показать, какие данные опубликованы, кто возвращает старое значение и почему оно ещё допустимо либо ошибочно. Такая запись превращает неопределённое ожидание в управляемый этап миграции.

Освойте DNS как часть сопровождения приложения. Программа Linux и Bash для DevOps-инженеров включает сеть, DNS и HTTP на учебном сервере. Откройте её, чтобы отработать переход от различающихся ответов к конкретному действию и понятной записи для команды.

Ещё по теме

Продолжить на практике

  • Linux и Bash для DevOps-инженеров ↗

    Linux для работы с серверами: процессы, права, systemd, сеть, диски и логи. Автоматизируйте повседневные задачи на Bash и разберите типичные сбои сервиса — от занятого порта до переполненного диска.