Как DynamicDNS действует немедленно?

Мое понимание основных функций DNS заключается в предоставлении службы именования / сопоставления между доменными именами (например, blah-whatever.com) и IP-адреса (например, 100.2.3.4).

Кроме того, мое понимание того, как работают DNS-серверы в Интернете, заключается в том, что при изменении записи сопоставления домена /IP (скажем, при изменении blah-whatever.com чтобы теперь указывать на 105.2.3.4 и т. д.), это изменение необходимо распространить на каждый DNS-сервер в мире, прежде чем можно будет сказать, что оно "завершено". Этот период распространения может иногда длиться до 24 часов.

Итак, для начала, если что-то, что я сказал до сих пор, неверно или неправильно, пожалуйста, начните исправлять меня!

Предполагая, что я более или менее прав, я не понимаю, как такие компании, как CloudFlare или DynamicDNS, могут предлагать услуги типа "мгновенного пролонгации", при которых вы изменяете свою запись DNS и - бум - изменения вступают в силу мгновенно.

Я понимаю, что есть что-то под названием "TTL" (время жить, я полагаю?!?), Которое играет роль в этой способности мгновенного ролловера, но, так как я уже не совсем уверен в способности начать, трудно понять, что этот TTL или какой цели он служит.

Поэтому я спрашиваю: что такое Dynamic DNS и его конкуренты, которые позволяют им мгновенно изменять сопоставления DNS (не затрачивая 24 часа на распространение изменений DNS, как все), и как TTL вписывается в этот процесс? Заранее спасибо.

3 ответа

Решение

Мой предыдущий ответ содержал ложную информацию, потому что у меня было несколько неправильных представлений о том, как распространяются изменения DNS. Итак, вот вторая попытка. Для подробного объяснения, я призываю вас прочитать ответ Алекса.

Насколько я понимаю, существует 2 фактора, влияющих на скорость распространения изменений DNS:

  1. Зональные передачи между DNS-серверами, которые являются авторизированными для зоны.
  2. TTL установлен для отдельных записей в этой зоне.

Зональные трансферы

Учитывая, что для управления зоной вам нужны два разных сервера имен, вы бы хотели, чтобы на этих серверах была доступна последняя версия этой зоны.

Это достигается либо путем извлечения последней версии зоны с фиксированным интервалом, либо ожидания уведомления от авторизованного сервера имен.

Учитывая, что этот механизм находится под полным контролем того, кто запускает серверы имен, любые задержки в этой области можно полностью контролировать.

TTL

TTL - это время ожидания, указанное для каждой записи ресурса в зоне. Это значение определяет продолжительность кэширования записи неавторизированными поставщиками DNS.

Помните, что это значение вступает в силу только в случае изменения существующей записи. Новые записи еще не могут быть кэшированы.

Учитывая, что TTL также находится под полным контролем того, кто контролирует зону, задержка также может полностью контролироваться.

У вас есть некоторые заблуждения, поэтому я постараюсь объяснить весь процесс. (Я хорошо разбираюсь в деталях, так как участвовал в работе публичной службы динамического DNS).

Допустим, ваш домен - example.com, и, скажем, домен example.com, размещенный в какой-то динамической DNS-компании, назовем его lightfastdns.net (вымышленное имя). Ваш домен содержит запись DNS - somehost.example.com, которая в данный момент указывает на 1.1.1.1.

  1. Когда вы вносите изменения в свою DNS-запись, это изменение сначала отправляется на некоторый промежуточный сервер, управляемый lightfastdns.net, например updates.lightfastdns.net. Это происходит почти мгновенно (за доли секунды). Вы можете отправить свое обновление через веб-интерфейс или с помощью клиента динамических обновлений, или через некоторый API. Это не имеет значения, в любом случае это обновление прибудет на некоторый сервер, который обрабатывает обновления DNS.

  2. Этот сервер обновлений отправляет обновленную запись (скажем, 1.2.3.4) на " главный " DNS-сервер для вашего домена. Этот DNS-сервер также обслуживается lightfastdns.net. Как быстро это происходит: зависит от того, как DNS-провайдер разработал свое программное обеспечение. (Это может происходить мгновенно и может происходить каждые 24 часа. Например, gandi.net отправляет обновления DNS раз в час.) Конечно, наш lightfastdns.net сделает это мгновенно.

  3. Этот главный DNS-сервер будет отправлять обновления на подчиненные DNS-серверы для домена example.com. Этими серверами также управляет та же компания lightfastdns.net. Как быстро это происходит: с современным программным обеспечением мастер мгновенно отправит сообщение NOTIFY подчиненным, и они мгновенно получат обновленную запись от мастера. с более старым программным обеспечением в записи SOA были значения REFRESH и RETRY, но сегодня это редко актуально. Конечно, наш lightfastdns.net реализует NOTIFY и обновления распространяются мгновенно.

Теперь мы имеем, что все "авторитетные" серверы для вашего домена получили обновленную запись (1.2.3.4). Для lightfastdns.net это заняло около двух секунд.

  1. Теперь мы переедем в дом Ивана в России, и Иван хочет открыть " somehost.example.com " в своем браузере. Если он никогда не открывал это раньше, его браузер не знает адрес, поэтому браузер спросит его операционную систему. Но, если он недавно посетил сайт, адрес все еще может храниться в браузере, и он будет использовать старый (устаревший) адрес! На сколько долго? - Зависит от браузера, например, Google Chrome хранит записи DNS только до 60 секунд. У нас задержка до 60 секунд. В связи с этим я бы сказал, что изменение DNS еще не распространялось на этот браузер.

  2. В любом случае, через 60 секунд или сразу, браузер в итоге попросит операционную систему получить адрес. Операционная система может уже знать (старый, устаревший) ответ и вернуть его, в этом случае я бы сказал, что новая запись еще не распространялась в ОС Ивана. Как долго ОС будет хранить старое значение - для современных операционных систем это контролируется параметром TTL. TTL в DNS определяет, как долго запись может храниться в кеше. Наш lightfastdns.net позволил использовать довольно низкий TTL - 30 секунд, поэтому мы получили новую задержку до 30 секунд, в целом - до 90 секунд.

  3. Если ОС не знает ответ, или если ответ, который она знала, теперь устарел из-за TTL, ОС запросит распознаватель DNS (провайдер Ивана назначил ему преобразователь DNS dns.moscow-telecom.ru). При этом старая запись может быть кэширована до TTL секунд, или dns.moscow-telecom.ru может не знать адрес. Мы получаем еще 30 секунд, так как dns.moscow-telecom.ru также кэширует DNS не больше, чем значение TTL. У нас задержка 120 секунд. Именно это и привело к тому, что новая запись DNS еще не распространилась на DNS-серверы " Москва-Телеком".

  4. Если DNS-сервер интернет-провайдера не знает ответ или если он знал, что он уже устарел из-за истечения срока действия TTL, dns.moscow-telecom.ru запросит один из авторизованных DNS-серверов для example.net (вы их помните?). Те получили изменение около 118 секунд назад, и они вернут новый ответ, этот ответ будет немедленно отправлен по цепочке в DNS-распознаватель, в ОС и в браузер Ивана.

Таким образом, распространение записи заняло от 2 до 120 секунд, в зависимости от состояния различных кэшей. Чем дольше TTL - тем больше задержка.

Чтобы сделать это полным - некоторые интернет-провайдеры нарушают стандарты и кешируют записи в течение длительного времени. Некоторые старые ОС долгое время хранили старые записи, а также старые браузеры. Но для большинства пользователей все будет работать как положено.

Нет. Изменение не должно распространяться на каждый DNS-сервер в мире.

Если вы что-то измените и кто-то запросит измененную запись на вашем DNS-сервере, результат будет мгновенным.

Проблема в том, что вы запрашивали это имя раньше, и оно было кешировано. Тогда вы получите старый IP-адрес до истечения срока действия кэша. В DNS вы можете указать срок действия старого запроса, и этот период часто устанавливается равным нескольким дням. Для DynDNS это обычно устанавливается ниже, но не все распознаватели DNS соблюдают это.

Другие вопросы по тегам