16

Мое понимание основных функций 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 или для какой цели он служит.

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

3 ответа3

18

У вас есть некоторые заблуждения, поэтому я постараюсь объяснить весь процесс. (Я хорошо разбираюсь в деталях, поскольку участвовал в работе публичной службы динамического 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. Как быстро это происходит: с современным мастером программного обеспечения мгновенно отправит УВЕДОМИТЬ сообщение для рабов, и они будут немедленно получить обновленную запись от мастера. с более старым программным обеспечением у нас были значения REFRESH и RETRY в записи SOA, но сегодня это редко актуально. Конечно, наш 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 - тем больше задержка.

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

3

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

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

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

3

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

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

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

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

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

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

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

TTL

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

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

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .