TTL (Time to Live) — время в секундах, в течение которого DNS-резолверы и браузеры кэшируют ответ на DNS-запрос. После истечения TTL кэш сбрасывается и клиент делает новый запрос к DNS-серверу.
Как работает TTL
Пример: у A-записи example.com установлен TTL = 3600 (1 час). Пользователь открывает сайт — его браузер запрашивает IP у DNS. Следующий час этот IP хранится в кэше. Если вы сменили IP-адрес, пользователь ещё час будет попадать на старый сервер.
Рекомендуемые значения TTL
| Тип записи | Стабильный TTL | Перед миграцией |
|---|---|---|
| A (IP-адрес) | 3600 (1 час) | 300 (5 мин) |
| AAAA (IPv6) | 3600 (1 час) | 300 (5 мин) |
| CNAME | 3600 (1 час) | 300 (5 мин) |
| MX (почта) | 86400 (24 часа) | 3600 (1 час) |
| TXT (SPF/DKIM) | 86400 (24 часа) | 3600 (1 час) |
| NS | 86400 (24 часа) | 86400 (не менять) |
Проверка TTL записей
# Проверка TTL A-записи
dig example.com A
# Ответ покажет TTL
;; ANSWER SECTION:
example.com. 3600 IN A 192.168.1.1
# ^^^^
# TTL в секундах
Минимальный TTL в cPanel
В cPanel (Зона DNS → Simple DNS Zone Editor) минимальный TTL по умолчанию — 14400 секунд. Для более быстрого распространения изменений:
- Перейдите в Advanced DNS Zone Editor
- Выберите запись → изменить TTL
- Минимально допустимый cPanel TTL — 14400
Частые ошибки, связанные с TTL
| Симптом | Причина | Решение |
|---|---|---|
| После смены IP часть пользователей всё ещё видит старый сервер спустя сутки | TTL не снизили заранее, резолверы удерживают старую запись весь исходный срок кэширования | Перед следующей миграцией снизить TTL за 24–48 часов заранее, а не в момент переезда |
| cPanel показывает TTL 14400, хотя в зоне указано 300 | cPanel применяет собственный минимальный TTL для Simple DNS Zone Editor независимо от введённого значения | Использовать Advanced DNS Zone Editor, где можно задать точное значение TTL |
| Резолвер провайдера отдаёт старую запись дольше объявленного TTL | Некоторые резолверы округляют или увеличивают TTL сверх авторитетного значения — это разрешено RFC как элемент кэширования, а не ошибка | Заложить дополнительный запас времени при планировании миграции (реальный TTL ≥ объявленного) |
| После изменения TTL с 300 на 86400 распространение всё равно быстрое | Новое (увеличенное) значение TTL вступает в силу только после истечения предыдущего, более короткого TTL — поэтому эффект заметен не сразу | Ожидаемое поведение, увеличивать TTL стоит уже после завершения миграции |
TTL при использовании CDN и failover
Для схем с автоматическим переключением IP при аварии (DNS failover) низкий TTL — не разовая мера перед миграцией, а постоянная настройка.
# Типичная конфигурация для failover-схемы
@ A 60 203.0.113.10 ; основной сервер
@ A 60 203.0.113.20 ; резервный сервер (используется системой мониторинга)
TTL = 60 секунд означает, что при аварии основного сервера переключение на резервный займёт до минуты вместо часа. Подробнее о самой механике переключения — в статье про DNS failover, а про распределение нагрузки между географически разнесёнными серверами — в статье про Anycast и GeoDNS.
Когда снижение TTL не поможет
- Резолвер интернет-провайдера пользователя принудительно устанавливает собственный минимальный TTL выше вашего — это встречается у части мобильных операторов и не контролируется со стороны владельца домена
- NS-записи родительской зоны (в реестре TLD) имеют собственный TTL, обычно 24–48 часов, и не зависят от TTL записей внутри вашей зоны
- Приложения и мобильные клиенты кэшируют DNS на уровне ОС или библиотеки независимо от TTL записи — например, часть Java-приложений кэширует DNS «навсегда» без явной настройки
networkaddress.cache.ttl - Браузеры имеют собственный внутренний DNS-кэш (обычно 60 секунд у Chrome) поверх системного — снижение TTL записи на это не влияет
SOA Minimum: TTL для негативного кэширования
Поле Minimum в SOA-записи задаёт TTL для негативных ответов — например, для NXDOMAIN, когда запрошенного имени не существует. Это значение отдельно от TTL обычных A/MX-записей и часто остаётся без внимания при настройке зоны.
# Пример SOA-записи
example.com. IN SOA ns1.zevshost.net. admin.example.com. (
2026093001 ; Serial
3600 ; Refresh
900 ; Retry
1209600 ; Expire
3600 ) ; Minimum (негативное кэширование)
| Провайдер DNS | Типичный SOA Minimum |
|---|---|
| cPanel (BIND) | 3600 секунд |
| Cloudflare | 1800–3600 секунд |
| Route 53 (AWS) | 900 секунд по умолчанию |
Если вы удалили запись и ожидаете, что резолверы сразу узнают об этом — учитывайте именно SOA Minimum, а не TTL самой записи: пока не истёк Minimum, некоторые резолверы могут кэшировать ответ «записи нет» отдельно от прежнего значения.