Как 8.8.8.8 остается * всегда * живым?

9

Я знаю, как вы можете управлять избыточностью центра обработки данных, если есть работающий DNS-сервер, который может указывать на любой работающий сайт вашей компании - есть VRRP, мульти-WAN и т. Д. И т. Д. Но как сами DNS-серверы поддерживаются в сети? Это первый удар, когда кто-то подключается к сервису, и он не может быть подготовлен. Я имею в виду, например, 8.8.8.8или 8.8.4.4. Я не могу вспомнить, чтобы они были внизу. Когда-либо. Как интернет - провайдеры удается держать такие IP - адреса всегда в Интернете?

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

Lapsio
источник
3
Читайте на Anycast. Коротко: есть несколько хостов с одинаковым IP-адресом. Так работают CloudFlare, Google, YouTube и другие крупные сети.
GiantTree
google.com и cloudflare имеют несколько IP-адресов. Различные IP-адреса возвращаются в запросе DNS в зависимости от местоположения и т. Д. Но на самом деле 8.8.8.8 - это один IP-адрес. И он не может использовать «множественные записи A» или другое резервирование на основе DNS, потому что это сам DNS. Вы можете иметь несколько сайтов / хостов под одним IP? Они используют что-то вроде мульти ISP BGP?
Лапсио
2
Это Anycast, как написал GiantTree. Anycast не использует DNS.
Даниэль Б
IPv4 изначально не поддерживает anycast. Согласно википедии, кажется, что это реализовано с использованием BGP, если я правильно понимаю. ru.wikipedia.org/wiki/Anycast
Lapsio
Для служб дейтаграмм специальная поддержка anycast не нужна - это просто происходит в результате того, что каждый маршрутизатор выполняет свои собственные вычисления маршрута с кратчайшим путем. BGP также не поддерживает anycast изначально (он рассматривает их как одноадресные маршруты), и все же это распространенный способ сделать это в Интернете.
user1686

Ответы:

10

Во-первых, VRRP никак не зависит от DNS. Для обеспечения избыточности на одном сайте вы можете просто запускать DNS-серверы на общем VRRP-адресе.

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

Лучший пример , чем общественное DNS Google, будет в корневой DNS - серверы - те , которые служат .зоны и удержания указатели com, org, euи так далее - потому что они имеют карту каждого экземпляра 13 логических адресов. «L» ICANN обслуживается 160 различными сайтами!

Обратите внимание, что anycast не имеет никакого отношения к циклическим переборам на основе DNS (где одно и то же имя имеет несколько адресов). Anycast сделан по существу, обманывая протокол маршрутизации.


Интернет использует BGP для обмена информацией о маршрутизации между организациями.

BGP по своей природе поддерживает выбор наилучшего из нескольких маршрутов в одну и ту же сеть на основе различных критериев. Например, один и тот же клиент может иметь избыточные восходящие ссылки на одного и того же интернет-провайдера (объявляя о двух маршрутах, отличающихся только весом / предпочтением). Или у клиента могут быть восходящие каналы через нескольких интернет-провайдеров, и каждый выберет свой предпочтительный маршрут (в основном кратчайший AS-путь) - в этом суть «истинного» мульти-WAN.

Multihoming

                  ┌────────[AS 65535]────────┐
client 1 ---ISP---│--BGProuter--+            │
             ¦    │             ¦--DNSserver │
client 2 ---ISP---│--BGProuter--+            │
                  └──────────────────────────┘

Однако BGP только направляет трафик к вашим входным дверям, но не заботится о том, что будет дальше. Таким образом, если вы внутренне настроили оба маршрута к одному и тому же серверу, вы получите множественную адресацию. Но если каждый «вход» ведет на другой сервер (настроенный на один и тот же IP), вы получаете anycast.

Anycast... kind of?

                  ┌────────[AS 65535]────────┐
client 1 ---ISP---│--BGProuter-----DNSserver │
             ¦    │                          │
client 2 ---ISP---│--BGProuter-----DNSserver │
                  └──────────────────────────┘

Важно, что это также означает, что BGP не волнует, если AS вообще не является смежным. Чтобы обеспечить всемирную избыточность, просто объявите одну и ту же сеть из нескольких физических местоположений - если вы соедините эти местоположения вместе (чтобы они направили эту сеть в одно место), вы получите множественную адресацию; если они острова, вы получите anycast.

Anycast

                  ┌────────[AS 65535]────────┐
client 1 ---ISP---│--BGProuter-----DNSserver │
             ¦    └──────────────────────────┘
             ¦
             ¦    ┌────────[AS 65535]────────┐
client 2 ---ISP---│--BGProuter-----DNSserver │
                  └──────────────────────────┘

(В этом отношении, это даже не должно быть той же самой AS - например, реле 6to4 управляются несколькими независимыми организациями, каждая из которых объявляет свой собственный путь к 192.88.99.0/24.)

Предостережения:

  • Anycast обеспечивает избыточность, но не балансировку нагрузки. Как только BGP сходится, каждый маршрутизатор выберет один предпочтительный маршрут (или иногда несколько) и будет продолжать использовать его, пока не изменится сеть.

  • Тем не менее, вы не можете предсказать, как долго будут оставаться стабильными маршруты, поэтому любые службы с отслеживанием состояния могут быть сложными. DNS сходит с рук из-за отсутствия состояния и использования в основном UDP (EDNS уменьшил потребность в TCP-соединениях).

  • Должна быть координация между реальной службой и маршрутизатором BGP, чтобы маршрут был отменен в случае сбоя службы.

Смотрите также "История 4.2.2.2. Что за история?" в списке рассылки NANOG: пост 1 , пост 2 .

user1686
источник
«Как принять ваш ответ менее чем за 60 секунд с помощью этого странного трюка»
user1686
На какие «острова» вы ссылаетесь в предыдущем абзаце? Просто не подключенные сайты?
Лапсио
Да - части вашей сети, которые не связаны друг с другом или с остальными. (Хотя это всего лишь пример. Возможно также реализовать внутреннее anycast внутри одной большой взаимосвязанной сети - опять-таки, обманув протоколы маршрутизации.)
user1686
0

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

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

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

Также важно, чтобы сам балансировщик нагрузки не становился единой точкой отказа. Обычно балансировщики нагрузки реализуются в парах высокой доступности, которые могут также реплицировать данные о продолжительности сеанса, если этого требует конкретное приложение. [5]

phuclv
источник
Да, но балансировщики нагрузки не являются единой точкой отказа, только если они используют другие методы высокой доступности, такие как, например, VRRP, протоколы маршрутизации и т. Д. Но опять же VRRP или IGP являются скорее решениями для локальной сети. Итак, я имею в виду, допустим, что соединение глобальной сети ISP с центром обработки данных не удается. У компании, конечно, есть несколько сетей WAN, поэтому, если шлюз сайта может переключаться на другое WAN-соединение, это нормально, но сохранение того же IP-адреса остается проблемой. В случае, если DNS доступен, все в порядке - несколько A или AAAA повторно записывают и делают. Но когда это сам DNS-сервер, то единственным решением является anycast / BGP между несколькими провайдерами.
Лапсио
Я скорее имел в виду решения высокой доступности WAN после шлюза. Когда весь сайт компании недоступен из-за катастрофического провайдера. 8.8.8.8 не могу предположить, что провайдер будет работать. Вы не можете полагаться на одну компанию, когда буквально весь мир зависит от вашего обслуживания
Lapsio