Почему гео-избыточный DNS необходим для небольших сайтов?

31

Это канонический вопрос о гео-избыточности DNS.

Общеизвестно, что гео-избыточные DNS-серверы, расположенные в разных физических местах, очень желательны при предоставлении отказоустойчивых веб-сервисов. Это подробно рассматривается в документе BCP 16 , но некоторые из наиболее часто упоминаемых причин включают в себя:

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

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

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

Я понимаю, что это считается лучшей практикой, но это действительно кажется бессмысленным!

Андрей Б
источник

Ответы:

33

Примечание: содержание спора, обратитесь к комментариям для обоих ответов. Обнаружены ошибки, и этот Q & A нуждается в капитальном ремонте.

Пока я удаляю согласие из этого ответа, пока состояние этого канонического вопроса и ответов не будет должным образом рассмотрено. (удаление этого ответа также приведет к удалению прикрепленных комментариев, что не подходит для IMO. Возможно, после обширного редактирования оно превратится в ответ сообщества вики).


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

Я понимаю, что это считается лучшей практикой, но это действительно кажется бессмысленным!

Это может показаться бессмысленным ... но на самом деле это не так!

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

Вот где мы сталкиваемся с единственной проблемой сервера имен:

  • Период штрафа по характеру реализации всегда будет больше или равен продолжительности проблемы сети. Почти во всех случаях оно будет больше, максимум до пяти минут.
  • Если ваш единственный DNS-сервер попадает в штрафную зону, запрос, связанный с ошибкой, будет полностью мертвым в течение всей продолжительности.
  • Кратковременные прерывания маршрутизации происходят в Интернете чаще, чем большинство людей осознают. Повторные передачи TCP / IP и аналогичные средства защиты приложений хорошо скрывают это от пользователя, но это несколько неизбежно. Интернет хорошо справляется с маршрутизацией этого ущерба по большей части благодаря мерам защиты, встроенным в различные стандарты, которые поддерживают сетевой стек ... но он также включает в себя те, которые встроены в DNS, и наличие гео-избыточных DNS-серверов является часть этого.

Короче говоря, если вы используете один DNS-сервер (это включает использование одного и того же IP-адреса несколько раз в разных NSзаписях), это произойдет. Это также произойдет гораздо чаще, чем вы думаете, но проблема будет настолько спорадической, что шансы неудачи 1) сообщаться вам, 2) воспроизводиться и 3) привязываться к этой конкретной проблеме чрезвычайно близки к нуль. Они в значительной степени были равны нулю, если вы вошли в эти вопросы и ответы, не зная, как работает этот процесс, но, к счастью, этого не должно быть сейчас!

Должно ли это вас беспокоить? Это не мое место, чтобы сказать. Некоторых людей не волнует проблема пятиминутного прерывания, и я здесь не для того, чтобы убедить вас в этом. То , что я нахожусь здесь , чтобы убедить вас в том , что вы на самом деле чем - то жертвовать запуск только один сервера DNS, и все сценарии.

Андрей Б
источник
1
Некоторые системы также безнадежно зависят от сбоев DNS-поиска. Это общая точка отказа, в которой отсутствует избыточность, которая вызывает много проблем.
artifex
18
Кэширование почты является классическим примером того, как вы можете застрять в ногу с помощью DNS в то же время, что и остальная часть вашей инфраструктуры. При избыточном DNS, когда ваш сайт не работает, почта просто ставится в очередь на серверах отправителей и доставляется после восстановления. При использовании одного DNS входящая почта, отправленная во время вашего отсутствия, часто будет навсегда отклонена серверами отправителей с несуществующим доменом или аналогичными ошибками. Исходящая почта, отправленная с периферийных (все еще работающих) систем, также может дать сбой, поскольку домен отправителя в настоящее время не разрешается.
MadHatter поддерживает Монику
5
Кроме того, доменное имя обычно не только веб - это также электронная почта. Если вы используете поставщика услуг электронной почты для своего домена, он может не работать, даже если ваш веб-сервер работает, и если у вас есть избыточный DNS, вы все равно сможете получать электронные письма.
Дженни Ди говорит восстановить Монику
5 м это просто период повторения одного сервера? Не умножится ли это со многими серверами в цепочке, и клиент также будет кэшировать плохие запросы?
Нильс
@ Nils Можете ли вы перефразировать это немного? У меня не получается определить, имеете ли вы в виду много серверов в рекурсивном кластере или много авторитетных серверов. 5-минутный интервал отрицательного кэширования для каждого сервера, поэтому вам нужно получать много запросов, чтобы получить одну запись с отрицательным кэшированием на всем рекурсивном кластере, что делает сбои еще более спорадическими.
Андрей Б
-1

ОП спрашивает:

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

Отличный вопрос!

Лучший ответ дает профессор Дэниел Дж. Бернштейн, доктор философии Беркли , который является не только всемирно известным исследователем, ученым и криптологом, но также написал очень популярный и хорошо принятый набор DNS, известный как DJBDNS ( последний выпущен в 2001- 02-11 , до сих пор популярны по сей день).

http://cr.yp.to/djbdns/third-party.html (2003-01-11)

Стоимость и преимущества стороннего сервиса DNS

Обратите внимание на эту короткую и краткую часть:

Ошибочные аргументы для сторонней службы DNS

...

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

Таким образом, оригинальный ответ на этот вопрос не может быть более неправильным.

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

Любое программное обеспечение, которое свободно реализует консервативное руководство в течение 5 минут, начиная с RFC 1998-03 и заканчивая сбоями в кеше, просто разбито по дизайну, и наличие дополнительного гео-избыточного сервера не помешает.

Фактически, согласно Как долго тайм-аут DNS кэшируется? в BIND SERVFAILусловие традиционно НЕ кэшировалось вообще до 2014 года, а с 2015 года по умолчанию кэшируется всего на 1 секунду , что меньше, чем обычному пользователю, чтобы достичь тайм-аута решателя и снова нажать эту кнопку «Обновить». ,

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

Более того, разработчики BIND даже установили потолок для этой функции, составляющий всего 30 с, который даже в качестве потолка (например, максимальное значение, которое функция когда-либо примет), уже в 10 раз ниже, чем предложение 5 мин (300 с). от RFC, гарантируя, что даже самые благие намерения администраторов (пользователей глазного яблока) не смогут стрелять в ноги своих собственных пользователей.


Кроме того, есть много причин, по которым вы можете не захотеть запускать стороннюю службу DNS - прочитайте djbdns/third-party.htmlвсе подробности , а аренда крошечного дополнительного сервера только для DNS для самостоятельного администрирования вряд ли оправдана, когда в этом нет необходимости. кроме BCP 16 существует для такого усилия.

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


Короче:

Для небольших сайтов гео-избыточный DNS совершенно не нужен.

Если вы запускаете все свои службы с одного и того же IP-адреса , добавление второго DNS, скорее всего, приведет к дополнительной точке отказа и отрицательно скажется на постоянной доступности вашего домена. «Мудрость» того , чтобы всегда делать это в любой мыслимой ситуации, на самом деле является очень популярным мифом; Разорен.

Конечно, совет будет совершенно другим, если некоторые службы домена, будь то веб (HTTP / HTTPS), почта (SMTP / IMAP) или голосовая / текстовая (SIP / XMPP), уже обслуживаются сторонней организацией. провайдеры, и в этом случае исключение вашего собственного IP-адреса как единой точки отказа действительно было бы очень мудрым подходом, и гео-избыточность действительно была бы очень полезна.

Аналогично, если у вас есть особенно популярный сайт с миллионами посетителей, и заведомо требуется дополнительная гибкость и защита гео-избыточной DNS согласно BCP 16, то ... Вы, вероятно, не используете один сервер / сайт для веб / почты / голос / текст уже, так что этот вопрос и ответ, очевидно, не применяются. Удачи!

CNST
источник
Несмотря на то, что я более чем рад пригласить опытных профессионалов для рассмотрения обоих ответов, из этого словоблудия я получаю больше, чем просто небольшую волну театральности. Таким образом, хотя я приму любые мнения, высказанные сторонами, чье мнение я доверяю гораздо большему, чем ваше или мое, я предпочитаю отказать себе в дальнейшем участии в этой ветке комментариев.
Андрей Б
Я не уверен, что ваш комментарий должен сказать. Вы ответили на свой вопрос с аргументом, который просто недопустим согласно пункту, иллюстрированному в моем ответе, цитируемом непосредственно от DJB. Ваш ответ неверен; как таковой, вы оказываете плохую услугу сообществу, поддерживая миф. Если вы хотите отменить свой ответ и принять мой, я с радостью приму конструктивную критику / исправления.
CNST
2
Хорошее программное обеспечение распознает ответ SERVFAIL (сгенерированный рекурсивным сервером, если ни один из авторитетных серверов не может быть достигнут) и обработает его соответствующим образом, т. Е. Помещая SMTP-почту в очередь. К сожалению, не все программное обеспечение хорошо. Есть некий профессор, чей догматический подход к реализации протоколов, как известно, вызывает значительные проблемы взаимодействия ...
Альнитак,
2
Текущее состояние отрасли и то, что в дикой природе, гораздо важнее, чем что-либо с 2003 года, не говоря уже о 2001 году. Именно поэтому соответствующие мнения третьих сторон были более ценными, чем оценка вопроса с помощью устаревшей редакционной статьи, хотя и такой, которая могла бы иметь потенциально пережил испытание временем. Альнитак указал, что моя память о том, как BIND обрабатывал это дело, была ошибочной, и мое подкрепление этой памяти словоблудием из RFC 2308 было действительно ошибочным. Отступление последует на этой неделе, когда я найду время.
Андрей B
2
Дополнительное примечание: я уступил, что не привлекаю вас ради признания фактической ошибки с моей стороны, но, похоже, мы вернулись на территорию пограничной агрессии. Я прошу прощения за распространение дезинформации и признал ошибку, но я не хочу больше привлекать вас. (и я не буду, как у вас, кажется, есть история этого здесь)
Эндрю Б