Перейти к содержимому

TTL DNS: что это такое и какое значение ставить

Что такое TTL в DNS, как работает кеш, какое значение выбирать, почему старый IP остаётся после миграции и как проверить TTL через NexIP.

TTL в DNS определяет, как долго полученный DNS-ответ разрешено хранить в кеше. Именно TTL во многом объясняет, почему после смены IP один пользователь уже видит новый сервер, а другой всё ещё попадает на старый.

Разберём, что означает TTL, где он находится, как его проверить через dig, какое значение выбирать для обычного сайта и почему уменьшать TTL непосредственно перед миграцией бывает уже поздно.

Что означает TTL

TTL расшифровывается как Time To Live — время жизни записи в кеше DNS-резолвера.

example.com. 3600 IN A 203.0.113.20

Здесь 3600 означает 3600 секунд — один час.

Кто использует TTL

TTL прежде всего нужен кеширующим DNS-resolver. Получив ответ от авторитетной инфраструктуры, resolver может временно сохранить его и не выполнять полную цепочку DNS-запросов при каждом обращении клиента.

Зачем вообще нужен DNS-кеш

  • уменьшается число запросов к авторитетным серверам;
  • ускоряется разрешение имён;
  • снижается нагрузка на DNS-инфраструктуру;
  • повышается устойчивость системы.

Как посмотреть TTL

dig example.com A

Или компактнее:

dig +noall +answer example.com A

Почему TTL в dig уменьшается

Если запрос отправлен recursive resolver, в ответе часто отображается оставшееся время кеша.

Например:

Первый запрос: 3470
Через минуту:   3410

Авторитетный TTL и остаточный TTL

Чтобы увидеть данные конкретного авторитетного сервера, сначала найдите NS:

dig +short example.com NS

Затем:

dig @ns1.example.net example.com A

Какое значение TTL ставить

Универсального значения нет. Выбор зависит от того, насколько часто меняются данные и насколько критично быстро переключать инфраструктуру.

TTL 300 секунд

Пять минут удобно использовать перед плановыми переключениями и в инфраструктуре, где IP действительно может часто меняться.

Но держать минимальный TTL только потому, что «так быстрее», не всегда необходимо.

TTL 3600 секунд

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

TTL 86400 секунд

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

Почему перед миграцией TTL уменьшают заранее

Представим:

Сейчас TTL = 86400
Завтра меняем сервер

Лучше сегодня уменьшить TTL, дождаться истечения старого значения и только потом менять IP.

Почему уменьшить TTL за минуту до миграции недостаточно

Resolver, который ранее получил запись с TTL 86400, уже имеет право хранить её до окончания этого времени. Новый TTL он увидит только после нового запроса.

Новый TTL не отменяет старый кеш

Это одна из самых частых ошибок при миграциях.

TTL и A-запись

A имеет собственный TTL и определяет кеширование IPv4-ответа.

TTL и AAAA

AAAA также кешируется отдельно. Поэтому после миграции необходимо проверять обе записи.

TTL у MX

MX-записи тоже кешируются. При миграции почтового сервера это нужно учитывать так же, как при смене веб-сервера.

TTL у CNAME

При CNAME в разрешении имени участвует цепочка записей, и кеширование может происходить на нескольких этапах.

Что такое negative TTL

DNS может кешировать и отрицательные ответы — например NXDOMAIN.

Если пользователь запросил имя до его создания, после появления записи конкретный resolver некоторое время всё ещё способен возвращать старый отрицательный результат.

TTL и SOA

Параметры SOA исторически и практически связаны с поведением зоны и negative caching. Поэтому при расследовании длительного NXDOMAIN полезно смотреть не только конкретную A-запись.

Можно ли заставить чужой DNS забыть кеш

Обычно нет. Вы управляете авторитетной зоной, но не кешем всех recursive resolver в интернете.

Можно ли очистить локальный DNS-кеш

Да, локальные кеши операционной системы или приложения иногда можно сбросить. Но это не очистит кеш DNS провайдера или публичного resolver.

Почему два человека видят разные IP

Их resolver могли получить старую запись в разное время, поэтому остаточный TTL отличается.

Как сравнить resolver

dig @1.1.1.1 example.com A
dig @8.8.8.8 example.com A

Когда проблема не в TTL

Не стоит просто ждать, если:

  • авторитетные NS уже сами возвращают неправильный IP;
  • разные NS содержат разные зоны;
  • забыта старая AAAA;
  • ошибка DNSSEC приводит к SERVFAIL;
  • домен делегирован не тем NS.

Как проверить TTL через NexIP

Внешняя DNS-проверка NexIP помогает сравнить данные с тем, что видит ваш локальный компьютер, и понять, относится ли проблема к локальному кешу.

Практический сценарий миграции

  1. Заранее снизить TTL.
  2. Дождаться истечения предыдущего большого TTL.
  3. Проверить все авторитетные NS.
  4. Сменить A и при необходимости AAAA.
  5. Сравнить несколько публичных resolver.
  6. Не выключать старый сервер слишком рано.
  7. После стабилизации вернуть обычный TTL.

Связанные материалы

О задержках после изменений читайте в статье «Почему DNS не обновился».

Основы DNS разобраны в руководстве по DNS-записям.

FAQ

Чем меньше TTL, тем лучше?

Не обязательно. Маленький TTL увеличивает частоту DNS-запросов.

Почему я поставил TTL 300, а старый IP виден сутки?

Старый ответ мог быть получен раньше с большим TTL.

Можно ли поставить TTL 0?

Практическое поведение зависит от DNS-провайдера и resolver. Для обычного сайта лучше использовать разумное поддерживаемое значение.

Как быстро посмотреть TTL?

dig +noall +answer example.com A

Инструменты NexIP

Проверьте на практике

Диагностика NexIP

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

Откройте полный раздел диагностики и проверьте сайт, домен или сетевые параметры.

Открыть диагностику

Читайте дальше

Материалы по теме

DNS

Что такое DNS-записи

Подробно разбираем, как работает DNS, за что отвечают A, AAAA, CNAME, MX, TXT, NS, SOA, PTR и CAA, что такое TTL и как диагностировать DNS через dig и NexIP.

Читать
Вернуться в базу знаний