Изменили DNS-запись, а кто-то всё ещё видит старую? Как TTL и кеш резолверов вызывают «распространение» и как проверить его по всему миру.
Вы направили домен на новый сервер, а половина пользователей всё ещё попадает на старый. Эту задержку называют распространением DNS. На самом деле ничего не распространяется — старые ответы лежат в кешах по всему миру и ждут, пока истечёт их срок.
Когда кто-то заходит на ваш домен, его устройство спрашивает рекурсивный резолвер (провайдера или публичный, например 1.1.1.1 или 8.8.8.8). Резолвер один раз спрашивает ваши авторитативные серверы имён и кеширует ответ на столько, сколько позволяет TTL записи. Пока TTL не истечёт, все, кто пользуется этим резолвером, получают старый, закешированный ответ.
Значит, максимальная задержка изменения примерно равна старому TTL записи. Запись с TTL 86400 секунд может обновляться до суток, с TTL 300 — около пяти минут.
Смена NS-серверов домена (у регистратора) затрагивает серверы доменной зоны верхнего уровня, у NS-записей которых TTL обычно сутки-двое. Закладывайте до 48 часов.
DNS-запрос опрашивает вашу запись с резолверов во многих странах одновременно, так что видно, где уже отдаётся новое значение, а где ещё старое. Можно запрашивать записи A, AAAA, CNAME, MX, TXT, NS, SOA и PTR и выбирать конкретный резолвер.
Что обычно проверяют после изменения:
Ваш компьютер и браузер тоже кешируют DNS. Очистите кеш (ipconfig /flushdns в Windows, sudo resolvectl flush-caches в большинстве Linux, sudo dscacheutil -flushcache; sudo killall -HUP mDNSResponder в macOS) или проверьте через другой резолвер. Затем убедитесь проверкой сайта, что сам сайт отвечает с нового сервера.