Назад | Перейти на главную страницу

Почему наши записи DNS не распространяются в Интернет?

Мы запускаем серверы имен для нашего домена в нашей сети. Мы используем bind / named. Назовем домен example.com. Одна вещь, которую я заметил недавно, когда захожу на сайт вроде http://network-tools.com и выполняю запросы по URL-адресам, определенным на наших серверах имен, я сразу вижу изменения.

Например, если я добавлю на наш DNS-сервер запись для URL-адреса funny.example.com а затем найдите этот URL на http://network-tools.com, Я сразу вижу правильный внешний статический IP-адрес.

Это говорит мне о том, что любые запросы DNS, связанные с example.com приходят каждый раз прямо на наши DNS-серверы.

Мои подозрения подтвердились ранее на этой неделе, когда наши DNS-серверы отключились на очень короткий период. И в этот период, если бы я использовал http://network-tools.com запросить example.com или любой из его поддоменов, я бы не получил никаких результатов. Очевидно, это потому, что DNS-серверы не работают и недоступны.

Итак, это подводит меня к моему вопросу. Я думал, что изменения в наших DNS-серверах должны распространяться в Интернете на другие DNS-серверы. Таким образом, если наш DNS временно отключится, другие серверы в Интернете все равно будут знать, какой IP-адрес example.com указывает на.

Я неправильно понимаю этот DNS? Не разрешено ли DNS-серверам, контролируемым третьими сторонами, таким как наш, распространять информацию DNS на другие серверы в сети?

С чего мне начать расследование, почему изменения не вносятся? На нашем брандмауэре я вижу, что трафик порта 53 правильно поступает на наши DNS-серверы.

ОБНОВИТЬ

  1. Я знаю, что вы, ребята, говорите, что невозможно мгновенно опубликовать настройки DNS, но все, что я знаю, это следующее: если я внесу изменение DNS на нашем DNS-сервере (ах), а затем немедленно проверю его на http://network-tools.com, Я сразу вижу изменения.

  2. Если я отключу наши DNS-серверы, а затем попытаюсь проверить любой из URL-адресов, используя http://network-tools.com, сайт не может найти ни один из URL-адресов. Но если я верну DNS-серверы в режим онлайн, внезапно http://network-tools.com можно снова найти URL ... Это говорит мне, что серверы НЕ кэшируют наши настройки DNS. Я ошибся? Кроме того, наши настройки TTL на данный момент установлены на 900 (15 минут), а наши DNS-серверы работают уже более года. Так что это не похоже на то, что DNS-серверы в Интернете еще не имели возможности кэшировать его. Причина, по которой серверы не кэшируют настройки, заключается в том, что в настоящий момент TTL очень низкий? В этом есть смысл, если причина в этом.

Да, вы неправильно понимаете, как работает DNS. Я собираюсь использовать здесь некоторый акцент, но, пожалуйста, не обижайтесь, поскольку это не предназначено.

ЗАПИСИ DNS НЕ РАСПРОСТРАНЯЮТСЯ. ОНИ ЗАПИСАНЫ.

При этом вот упрощенное объяснение того, что происходит:

  1. Вы создаете новую запись DNS (A, CNAME и т. Д.)

  2. Удаленный пользователь (точнее, процесс \ приложение, запущенное пользователем) пытается получить доступ к службе, доступ к которой осуществляется через эту запись DNS (например, веб-браузер пытается получить доступ к веб-сайту, запущенному на сайте funny.example.com)

  3. Пользовательский DNS-клиент отправляет DNS-запрос своему DNS-серверу, затем DNS-сервер находит ваши DNS-серверы (обычно через серию рекурсивных DNS-запросов) и запрашивает у них информацию о funny.example.com

  4. Ваши серверы имен отвечают ответами

  5. Затем пользовательский DNS-сервер отправляет эту информацию пользователю (точнее, клиентскому преобразователю DNS-сервера), который, в свою очередь, возвращает информацию процессу \ приложению. Эта информация поставляется с так называемым TTL (Time To Live), который сообщает преобразователю DNS-клиента, как долго эта информация может храниться в его DNS-кеше (в памяти) и как долго информация может считаться актуальной и точной.

  6. Затем распознаватель клиента DNS пользователя сбрасывает эту информацию, когда истекает TTL. Любые новые запросы на рассматриваемые записи DNS требуют нового поиска DNS, и вышеуказанный процесс повторяется.

Короче говоря, вот что:

Ваши записи DNS не распространяются. Никакой другой DNS-сервер не имеет копии ваших DNS-записей или зон. DNS-клиент или сервер может кэшировать информацию о ваших DNS-записях или зонах (на основе их DNS-запросов ваших DNS-записей и зон) в свой DNS-кеш. Эта информация временно кэшируется и будет удалена из кеша DNS по истечении срока жизни.

Если ваши серверы имен не работают, только те DNS-клиенты, у которых есть какие-либо из ваших DNS-записей в своем кэше, смогут разрешить эти DNS-записи, и только до истечения TTL. Кроме того, по истечении TTL (при необходимости доступа к новому DNS-локаку) эти DNS-клиенты больше не смогут разрешать ваши DNS-записи.

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

Я склонен доверять http://dns.squish.net/ для быстрой диагностики проблем DNS. Это точно скажет вам, в чем заключаются ваши проблемы после того, как вы внесли изменение - в основном, если ваше делегирование от восходящего потока правильное, и все ваши 2-3 сервера имен дают одинаковый ответ, и кто-то не видит новую запись, им просто нужно будет дождаться, пока их локальная сеть увидит изменения. Если эта программа проверки сообщает, что один из ваших серверов не дает такой же ответ, как другие, вам необходимо исправить эту проблему.

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

Я бы посоветовал, прежде чем вносить какие-либо серьезные изменения в DNS, вы уменьшите свой TTL до 600 (10 минут), чтобы кеши в Интернете не сохраняли старые записи очень долго. Но некоторые кеши игнорируют это или принимают 1 день или даже 1 неделю.

Бессвязный ответ на бессвязный вопрос, надеюсь, в нем было что-то полезное.

Да, старая пословица «Изменения DNS могут занять 24-48 часов для распространения через Интернет» будет более точной: «Изменения DNS могут быть кэшированы на любых DNS-серверах, которые запросили эту запись в течение последних 86400 секунд».

Если вы хотите обеспечить избыточность вашего DNS на случай, если ваш сервер отключится, вам следует изучить службу резервного копирования DNS (например, на dyndns.com) или создать свой собственный вторичный NS.

Все DNS-серверы в Интернете «контролируются третьей стороной» (я полагаю, вы могли бы рассматривать корневые DNS-серверы как «проприетарные» для Интернета, но также нет никаких технических причин, по которым можно было бы создать свой собственный частный корень).

Ваш DNS-сервер указывает предполагаемое «время жизни» (TTL) в каждом ответе. Удаленные преобразователи (другие DNS-серверы, выполняющие рекурсивное разрешение для клиентов, библиотеки клиентского преобразователя и т. Д.) предполагаемый чтобы кэшировать ответ до этого TTL перед тем, как удалить его из своего кеша.

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

Некоторая предыстория сбоя сервера: Почему это называется «распространение DNS»?

Когда кто-то (или какой-то компьютер) в Интернете, так сказать, хочет подключиться к одной из ваших машин, он запрашивает у своего локального сервера имен IP-адрес, соответствующий имени хоста, которое им интересно.

Так что, если вы скажете кому-то: «Эй, взгляните на мой крутой сайт http://www.example.com", компьютер другого парня спросит свой локальный сервер имен:" Эй, а какой IP-адрес у www.example.com? "

Предполагая, что локальный сервер имен никогда раньше не искал ответ на этот вопрос, он попросит корневые серверы имен выяснить, какой сервер (-ы) обрабатывает запросы для ".com". Когда он получит этот ответ, он спросит те серверы, какие серверы обрабатывают запросы для "example.com". Когда он получит этот ответ, if запросит у этих серверов IP-адрес для «www.example.com».

Когда сервер (ы) example.com отвечает IP-адресом для www.example.com, они также дадут запрашивающему серверу имен подсказку о том, как долго он должен помнить ответ на этот вопрос. Эта подсказка называется «TTL», или «время жизни», и измеряется в секундах. Нет никакой гарантии, что какой-либо сервер обратит внимание на TTL - некоторые серверы имен могут быть настроены так, чтобы никогда не запоминать ответы на запросы, и всегда будут повторять процесс, даже если запрос будет несколько раз в секунду. Другие серверы имен могут быть настроены на сохранение ответа в течение длительного времени, даже если вы предложили хранить данные только в течение короткого времени, возможно, потому что они хотят минимизировать сетевой трафик. TTL - это всего лишь предложение, а не требование или гарантия.

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

Кроме того, если вы просматриваете свою собственную информацию DNS, используя сайт, предназначенный для исследования или отладки информации DNS, есть вероятность, что этот сайт не будет кэшировать данные надолго или вообще, независимо от вашего предложения TTL, потому что цель сайта, вероятно, состоит в том, чтобы предоставить информацию о том, что система DNS сообщает ПРЯМО СЕЙЧАС, а не 5, 50 или 500 секунд назад. Вот почему ваши изменения отражаются немедленно, и почему служба перестает работать, как только вы отключите свои серверы имен.

Я подозреваю, что ваш основной вопрос может заключаться в следующем: «Как я могу настроить все так, чтобы в случае перезагрузки моего DNS-сервера или отказа его жесткого диска другие люди в Интернете по-прежнему могли видеть мои веб-страницы?»

Ответ на этот вопрос - настроить несколько серверов имен для вашего домена и запустить их на разных машинах - в идеале, не только на разных физических компьютерах, но и с разными сетевыми подключениями, возможно, даже в разных городах, штатах, странах или континентах. Большинство этих серверов имен будут настроены как «подчиненные», что означает, что они обращаются к «главному» серверу имен за своей информацией, а затем повторяют эту информацию любому, кто запрашивает у них данные.

Итак, в ваших данных WHOIS регистратора доменных имен вы можете настроить четыре сервера имен для своего домена:

ns1.example.com ns2.example.com ns1.otherguy.com ns2.otherguy.com

где ns1.example.com - ваш текущий DNS-сервер. ns2.example.com может быть другой машиной в вашей компании / организации - в идеале не в той же подсети и в той же серверной стойке (или под тем же столом), что и ns1.example.com.

ns1.example.com будет считаться «главным» сервером, и когда вы захотите изменить свой DNS, вы внесете изменения на этом компьютере.

ns2.example.com будет настроен как «подчиненный» сервер, который просто копирует все данные, которые вы установили на ns1.example.com, но внешний мир не заботится о различии главного / подчиненного сервера, ns2.example .com будет считаться таким же "официальным", как ns1.example.com.

ns1.otherguy.com и ns2.otherguy.com - это машины, которые установлены где-то в другом месте - возможно, вы договорились с другом / коллегой из другой организации, чтобы они запускали серверы имен друг для друга, или, может быть, вы настроились на dyndns.com или everydns.net, или любого другого бесплатного или коммерческого поставщика DNS. Как бы вы ни работали, вы настраиваете эти машины как подчиненные, чтобы они извлекали информацию DNS для example.com с ns1.example.com (ваш «главный»), и они будут передавать эту информацию DNS на любую машину на Интернет, который этого требует.

Как только ваш регистратор домена опубликует новые записи NS для вашего домена (что должно произойти примерно мгновенно), тогда, когда кто-то в Интернете спросит, какой сервер доменных имен обрабатывает «example.com», они получат четыре ответа:

ns1.example.com, ns2.example.com, ns1.otherguy.com, ns2.otherguy.com

В зависимости от того, как настроен сервер имен другого парня, он может рассматривать эти четыре как список и спрашивать их по одному, как добраться до "www.example.com" - или он может задавать всем четверым один и тот же вопрос на в то же время, и просто возьмите ответ от той машины, которая ответит первой. В любом случае, если ns1.example.com не работает из-за того, что жесткий диск умер, или вы решили перезагрузить компьютер или что-то еще, тогда другие 3 машины будут доступны, чтобы ответить на вопрос, и ваш веб-сайт будет по-прежнему виден.

Самый простой способ решить эту проблему - зарегистрироваться у поставщика услуг DNS, который будет обрабатывать DNS для вашего домена - цена за это колеблется от бесплатных до тысяч (возможно, даже десятков или сотен тысяч) долларов в месяц, в зависимости от уровень обслуживания, который вы хотите. Вы можете получить достаточно надежное обслуживание за 30 долларов в год или около того. Бесплатные услуги не ужасны и, следовательно, имеют довольно хорошее соотношение цены и качества, но если вы зависите от своего веб-сайта, чтобы зарабатывать деньги, вы должны иметь возможность получить 30 долларов за годовой DNS. .

Затем следуйте инструкциям поставщика услуг DNS, чтобы изменить записи NS у вашего регистратора доменных имен, и все будет готово.

Кеширование, выполняемое другим DNS-сервером, зависит от TTL, назначенного записи. В вашем случае TTL может быть очень низким или высоким. Не могли бы вы предоставить нам дополнительную информацию о вашей конфигурации DNS?