Это Канонический вопрос о геоизбыточности DNS.
Общеизвестно, что георезервные DNS-серверы, расположенные в разных физических местах, очень желательны при предоставлении отказоустойчивых веб-служб. Это подробно рассматривается в документе BCP 16, но некоторые из наиболее часто упоминаемых причин включают:
Защита от сбоев в дата-центре. Землетрясения случаются. Пожары происходят в стойках и вывозят соседние серверы и сетевое оборудование. Использование нескольких DNS-серверов не принесет вам особой пользы, если физические проблемы в центре обработки данных приведут к отключению обоих DNS-серверов одновременно, даже если они не находятся в одном ряду.
Защита от проблем с вышестоящим узлом. Несколько DNS-серверов не предотвратят проблем, если один из узлов общей вышестоящей сети вздремнет. Независимо от того, выводит ли вас проблема восходящего потока полностью в автономный режим или просто изолирует все ваши DNS-серверы от части вашей пользовательской базы, конечным результатом является то, что люди не могут получить доступ к вашему домену, даже если сами службы расположены в совершенно другом центре обработки данных.
Это все хорошо, но действительно ли необходимы резервные DNS-серверы, если я запускаю все свои службы с одного IP-адреса? Я не понимаю, как наличие второго DNS-сервера принесет мне какую-либо пользу, если в любом случае никто не сможет получить доступ к чему-либо, предоставленному моим доменом.
Я понимаю, что это считается лучшей практикой, но на самом деле это кажется бессмысленным!
Примечание: Спорный контент, см. Комментарии к обоим ответам. Были обнаружены ошибки, и этот вопрос и ответ нуждается в ремонте.
Я удаляю подтверждение из этого ответа на время, пока состояние этого канонического вопроса и ответа не будет должным образом решено. (удаление этого ответа также приведет к удалению прикрепленных комментариев, что не подходит для ИМО. вероятно, превратит его в ответ сообщества вики после обширного редактирования.)
Я мог бы процитировать здесь RFC и использовать технические термины, но эту концепцию упускают из виду много людей на обоих концах спектра знаний, и я попытаюсь ответить на этот вопрос для более широкой аудитории.
Я понимаю, что это считается лучшей практикой, но на самом деле это кажется бессмысленным!
Это может показаться бессмысленным ... но на самом деле это не так!
Рекурсивные серверы очень хорошо запоминает, когда удаленные серверы не отвечают на запрос, особенно когда они повторяют попытку и по-прежнему не видят ответа. Многие реализуют отрицательное кеширование этих сбоев связи, и временно помещает невосприимчивых серверов имен в штрафную на период времени не более пяти минут. В конце концов этот «штрафной» период истечет, и они возобновят общение. Если неверный запрос снова терпит неудачу, они возвращаются обратно в коробку, в противном случае все возвращается к работе в обычном режиме.
Здесь мы сталкиваемся с проблемой единственного сервера имен:
Короче говоря, если вы используете один DNS-сервер (это включает в себя использование одного и того же IP-адреса несколько раз в NS
записи), это должно произойти. Это также произойдет гораздо чаще, чем вы думаете, но проблема будет настолько спорадической, что шансы на неудачу: 1) о ней вам сообщат, 2) воспроизведении и 3) привязке к этой конкретной проблеме, очень близки к нуль. Они в значительной степени мы ноль, если вы вошли в этот вопрос и ответ, не зная, как работает этот процесс, но, к счастью, сейчас этого быть не должно!
Должно ли это вас беспокоить? Это не мое дело. Некоторых людей вообще не волнует проблема пятиминутного прерывания, и я здесь не для того, чтобы убеждать вас в этом. Что я я здесь, чтобы убедить вас, заключается в том, что вы на самом деле чем-то жертвуете, запустив только один DNS-сервер, а в все сценарии.
ОП спрашивает:
Это все хорошо, но действительно ли необходимы избыточные DNS-серверы, если я запускаю все свои службы с одного IP-адреса? Я не понимаю, как наличие второго DNS-сервера принесет мне какую-либо пользу, если в любом случае никто не сможет получить доступ к чему-либо, предоставленному моим доменом.
Отличный вопрос!
Лучший ответ дает Профессор Дэниел Дж. Бернштейн, доктор философии Беркли, который является не только всемирно известным исследователем, ученым и криптологом, но также написал очень популярный и хорошо принятый пакет DNS, известный как DJBDNS (последний выпуск 11.02.2001, популярны и по сей день).
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 для данного домена from) был полностью доступен в противном случае. Обратите внимание, что эти сбои произошли с несколькими независимыми, уважаемыми и профессионально управляемыми поставщиками, и ни в коем случае не являются изолированными инцидентами и происходят ежегодно, и, как сторонняя услуга, полностью вне вашего контроля; Так уж получилось, что мало кто говорит об этом в долгосрочной перспективе.
Коротко:
Если ты бежишь все ваших услуг вне тот же IP-адресдобавление второго DNS, скорее всего, приведет к возникновению дополнительной точки отказа и ухудшит постоянную доступность вашего домена. «Мудрость» всегда необходимость делать это в любой мыслимой ситуации - действительно очень популярный миф; РАЗРУШЕН.
Конечно, совет был бы совершенно другим, если бы некоторые из служб домена, будь то веб (HTTP / HTTPS), почта (SMTP / IMAP) или голос / текст (SIP / XMPP), уже обслуживаются сторонними организациями. провайдеров, и в этом случае исключение вашего собственного IP-адреса как единой точки отказа действительно было бы очень разумным подходом, а гео-избыточность действительно была бы очень полезной.
Аналогичным образом, если у вас есть особенно популярный сайт с миллионами посетителей, и вам сознательно требуется дополнительная гибкость и защита геоизбыточного DNS в соответствии с BCP 16, то ... вы, вероятно, не используете один сервер / сайт для Интернета / почты / голос / текст уже, поэтому этот вопрос и ответ, очевидно, неприменимы. Удачи!