Концепция
DNS-разрешение объединяет две разные роли, которые часто путают: рекурсивные резолверы (провайдер, 1.1.1.1, 8.8.8.8) проходят по цепочке делегирования от вашего имени и кэшируют результат; авторитативные NS-серверы (ваш DNS-провайдер) хранят исходную запись и ничего не кэшируют — они просто отвечают. TTL (Time To Live) определяет, сколько времени резолвер может отдавать кэшированный ответ, прежде чем повторно обратиться к авторитативному источнику. Каждый уровень между вами и авторитативным сервером — ОС, роутер, провайдер, публичный резолвер — может держать собственный независимый кэш со своим отсчётом TTL.
DoH (DNS over HTTPS) и DoT (DNS over TLS) не меняют ничего из этого — они лишь шифруют транспорт между вами и выбранным резолвером, скрывая запросы от локальных наблюдателей (провайдера, оператора Wi-Fi в кафе), при этом сам резолвер по-прежнему видит всё.
Распространённое заблуждение
«Я изменил запись, значит теперь она должна быть видна везде». Нет — каждый уровень кэша, у которого уже есть старый ответ, продолжит его отдавать, пока не истечёт именно его TTL, независимо от остальных уровней. «Распространение» — это не единое глобальное событие, а десятки независимых, асинхронных истечений кэша по своим расписаниям. Запись может быть верной на авторитативном сервере и одновременно неверной с трёх разных точек наблюдения — и все три при этом правы.
Практическое упражнение
Лабораторное окружение для этого урока не нужно — проверьте распространение прямо на marinadns.io:
- marinadns.io/prop — запрашивает ваш домен одновременно с нескольких резолверов и показывает, где именно ещё кэшируется старый ответ. Самый быстрый способ увидеть концепцию этого урока без какой-либо настройки.
- marinadns.io/dig — выполните ручной запрос к конкретному резолверу и посмотрите значение TTL прямо в ответе.
Более глубокое упражнение в терминале (сравнение рекурсивного и авторитативного ответов, наблюдение за отсчётом TTL в реальном времени, сравнение транспортов DoH/DoT) — см. Урок 1 на странице Лабораторное окружение курса — для этой части нужен собственный лабораторный сервер или локальный терминал.
Команды для выполнения
# Запросите свой домен через резолвер провайдера/по умолчанию, отметьте TTL
dig yourdomain.com A
# Запросите ту же запись напрямую у публичного резолвера, сравните TTL
dig @1.1.1.1 yourdomain.com A
dig @8.8.8.8 yourdomain.com A
# Запросите авторитативный NS-сервер напрямую (минуя всё кэширование)
dig @ns1.yourdnsprovider.com yourdomain.com A +norecurse
# Наблюдайте убывание TTL: повторяйте запрос каждые 10с и сравнивайте поле TTL
watch -n 10 "dig @1.1.1.1 yourdomain.com A | grep -A1 ANSWER"
Измените IP-адрес A-записи в панели управления, затем повторно выполните рекурсивный запрос до и после истечения TTL — убедитесь, что видите СТАРОЕ значение, пока TTL не достигнет нуля, а затем НОВОЕ.
Итоговая проверка
Вы должны уметь объяснить, не подглядывая:
- Почему два человека, запрашивающие один и тот же домен из разных сетей, могут в один момент увидеть разные ответы — и оба будут «правы».
- Разницу между TTL кэша резолвера и локальным DNS-кэшем вашей ОС — это два разных уровня с двумя разными способами сброса.
- Почему DoH/DoT улучшают приватность запросов, но никак не влияют на скорость распространения изменений.
Если вы можете ответить на все три пункта без повторного чтения урока — переходите к Уроку 2.
← Курс администрирования DNS Лабораторное окружение