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 помогает сравнить данные с тем, что видит ваш локальный компьютер, и понять, относится ли проблема к локальному кешу.
Практический сценарий миграции
- Заранее снизить TTL.
- Дождаться истечения предыдущего большого TTL.
- Проверить все авторитетные NS.
- Сменить A и при необходимости AAAA.
- Сравнить несколько публичных resolver.
- Не выключать старый сервер слишком рано.
- После стабилизации вернуть обычный TTL.
Связанные материалы
О задержках после изменений читайте в статье «Почему DNS не обновился».
Основы DNS разобраны в руководстве по DNS-записям.
FAQ
Чем меньше TTL, тем лучше?
Не обязательно. Маленький TTL увеличивает частоту DNS-запросов.
Почему я поставил TTL 300, а старый IP виден сутки?
Старый ответ мог быть получен раньше с большим TTL.
Можно ли поставить TTL 0?
Практическое поведение зависит от DNS-провайдера и resolver. Для обычного сайта лучше использовать разумное поддерживаемое значение.
Как быстро посмотреть TTL?
dig +noall +answer example.com A
Инструменты NexIP
Проверьте на практике
Проверка DNS-записей
Показывает A, AAAA, MX, NS, TXT, CNAME, SOA, CAA и PTR записи.
Диагностика NexIP
Продолжите реальной проверкой
Откройте полный раздел диагностики и проверьте сайт, домен или сетевые параметры.
Читайте дальше
Материалы по теме
Что такое DNS-записи
Подробно разбираем, как работает DNS, за что отвечают A, AAAA, CNAME, MX, TXT, NS, SOA, PTR и CAA, что такое TTL и как диагностировать DNS через dig и NexIP.
ЧитатьПочему DNS не обновился: TTL, кеш и DNS propagation
Почему DNS после изменения показывает старый IP: TTL, кеш recursive resolver, negative caching, DoH, IPv4/IPv6 и проверка propagation.
Читать