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
- Мінімально допустимий TTL у cPanel — 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, деякі резолвери можуть кешувати відповідь «запису немає» окремо від попереднього значення.