Мы зарегистрировали несколько серверов имен для разрешения DNS для нашего веб-сайта, который развернут в нескольких центрах обработки данных.
Наша текущая стратегия разрешения DNS заключается в том, что на основе разных IP-адресов клиентов сервер имен будет возвращать разные IP-адреса для одного и того же домена. Например, если IP-адрес клиента из Северной Америки, сервер имен вернет IP-адрес, который является IP-адресом нашего центра обработки данных в Северной Америке.
Но IP-адрес клиента иногда не является реальным IP-адресом пользователей. Это может быть IP-адрес DNS, который принадлежит провайдеру или прокси-серверу. С другой стороны, если один из наших центров обработки данных не работает, мы хотим, чтобы наш сервер имен исключал тот IP-адрес, который принадлежит к поврежденному центру обработки данных. Поэтому мы надеемся, что сможем получить более динамичную стратегию для решения DNS. Есть ли решение для этого?
Ответы:
Похоже, вы хотите anycast. Именно такие вещи используют такие сайты, как Google. У вас есть один адрес (разрешенный DNS) для всех ваших веб-сайтов, и вы позволяете протоколу интернет-маршрутизации (BGP) направлять пользователей на ближайший (по протоколу маршрутизации) сайт. Если сайт выходит из строя, следующий ближайший сайт автоматически помещается в таблицу маршрутизации Интернета с помощью BGP.
Классический пример
8.8.8.8
для DNS. Он разрешается в разных местах по всему земному шару, и если одно место падает, то оно переходит в следующее ближайшее место.Ответ не DNS, это маршрутизация.
источник
Что вам нужно, так это то, что предлагает сервис DNS Amazon Route53 :
Маршрутизация на основе задержки - маршрутизирует конечных пользователей в область AWS, что обеспечивает минимальную задержку
Географический DNS - маршрутизирует конечных пользователей к определенной конечной точке, которую вы указываете на основе географического местоположения конечного пользователя.
Проверка работоспособности и отработка отказа - Amazon Route 53 может отслеживать работоспособность и производительность вашего приложения, а также ваших веб-серверов и других ресурсов.
... и многие другие расширенные функции DNS .
Вам не нужно размещать свой веб-сайт на AWS, чтобы использовать Route53, он с радостью будет работать со службами, развернутыми в частных центрах обработки данных.
Если вы не являетесь Facebook или Google, цены не должны быть проблемой, начиная с $ 0,40 за миллион запросов (см. Информацию о ценах ).
Надеюсь, это поможет :)
источник
У меня была эта идея, и я начал ее кодировать, но так и не закончил, так как потребность исчезла первой.
DNS-сервер имеет имена хостов и MAC-адреса всех машин в своей локальной сети и способ их достижения. Когда он получает запрос для машины, которую он знает, он отправляет обратный ARP для IP-адреса с заданным MAC-адресом и использует ответ для построения ответа DNS.
Это не имеет ничего общего с тем, что вы пытаетесь сделать, но это иллюстрирует суть. DNS-сервер теоретически может быть закодирован для выполнения любой новой схемы, в которой вы хотите преобразовать имена в IP-адреса.
Похоже, что реальный вопрос заключается в том, как получить IP-адрес клиента, чтобы решить, куда его отправлять. Это небольшая проблема XY. То, что вы действительно хотите, - это определение местоположения интернет-провайдера клиента, и вы можете получить это, выполнив это непосредственно с IP-адреса, отправляющего запрос, предполагая, что это не 8.8.4.4 или какая-либо другая служба перенаправления DNS. На мой взгляд, лучшим решением для перенаправителей DNS является игнорирование проблемы и самостоятельная геолокация (то есть с DNS-сервера попытайтесь найти вызывающий IP-адрес) и перенаправление соответствующим образом. Смотрите здесь, чтобы узнать, как геолокации: /programming/2574542/location-detecting-techniques-for-ip-addresses
Тебе действительно не хочется чего-то здесь, кроме чего-то более вменяемого. Anycast обладает раздражающим свойством - он может перенаправлять пакеты в середине вашего TCP-потока, вызывая массовую путаницу.
Рон Мопин утверждает, что anycast надежен на маршруте для TCP. Вот трассировка, показывающая иначе:
Если вы попытаетесь локализовать вышестоящие IP-адреса очевидным образом, они оба в Вичите. Это не правильно, когда будет достаточно простой демонстрации физики.
Диапазон до 8.8.4.4 измеряется при 30 мс, из которых первые 18 мс - локальный штраф (переход 3 - локальный маршрутизатор моего провайдера). Мое расстояние до Уичито 1297 миль. Следовательно, минимальное время прохождения сигнала в оба конца (1297 * 2 мили / 225 000 километров в секунду (скорость света в стекле)) составляет 18,55 мс. Поэтому я не должен получить ответ быстрее, чем 28 мс, но я получил ответ через 25 мс.
Пакеты поступают в Google по двум различным маршрутам BGP. BGP не выбрал ближайший.
источник
То, что вам нужно, может быть достигнуто с помощью некоторой комбинации DNS anycast и RFC-7871.
источник