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

22

Мы запускаем серверы имен для нашего домена в нашей сети. Мы используем 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. ком , я вижу изменения сразу.

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

Джейк Уилсон
источник
7
Поскольку jokerville.com - это реальное зарегистрированное доменное имя, если оно не является вашим доменом, используйте example.comего - оно официально зарезервировано для этой цели.
Mattdm
9
Причина, по которой network-tools.com сразу же видит изменения, заключается в том, что это сетевой инструмент, и он НЕ УДАЛЕННО не кэширует результаты. Это инструмент для просмотра ваших серверов имен, а не обычный DNS-клиент, поэтому он подчиняется другим правилам.
Майкл Кохне

Ответы:

42

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

ЗАПИСИ DNS НЕ РАСПРОСТРАНЯЮТСЯ. Они кешируются.

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

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

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

  3. Пользовательский 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-кэша по истечении TTL.

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

joeqwerty
источник
Хорошее объяснение, и я могу добавить пример протокола, где есть распространение (в отличие от DNS): BGP.
Борцмейер
11

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

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

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

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

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

Мэтью Блох
источник
1
+1. Просто для ясности, изменение затронет только те DNS-клиенты, которые уже имеют информацию в своем кэше, для которых срок действия TTL не истек. Любые новые запросы, для которых нет данных в кеше, будут разрешены немедленно.
Joeqwerty
К вашему сведению: мертвая ссылка - squish.net/dnscheck
Аарон Исав,
8

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

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

willbradley
источник
5

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

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

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

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

Эван Андерсон
источник
2

Когда кто-то (или какой-то компьютер) в Интернете, так сказать, хочет подключиться к одному из ваших компьютеров, он запрашивает у своего локального сервера имен 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 у вашего регистратора доменных имен, и все будет готово.

gbroiles
источник
0

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

радиус
источник