Решить GeoDNS проблему

Александр17 лет в сервисе
Данные заказчика будут вам доступны после подачи заявки
12.11.2012

Для сайта с разнесенными серверами настроили GeoDNS на своем ДНС-сервере. Определяем на Bind-е страну по IP-адресу клиента, используя GeoIP базу от Maxmind.

Для домена emuzo.net на нс-сервере ns1.emuzo.net и ns2.emuzo.net отдаем ip:

127.0.1.1 для США

127.0.1.2 для Германии

127.0.1.3 для Украины

127.0.1.4 для России

127.0.1.100 для всех остальных стран

Всё работает, но вместе с тем обнаружили недостоверность определения страны пользователя при использовании им ДНС-серверов от Google (8.8.8.8).

Так, например, при использовании Google Public DNS в Украине, рекурсивный днс-сервер гугла 8.8.8.8 обращается к нашему Bind-у с IP-адресов, которые определяются по базе Maxmind либо как DE, либо как US, т.к. входят в блоки гугловских IP.

Соотвественно и пользователь направляется на 127.0.1.1 (США) или 127.0.1.2 (Германия) вместо 127.0.1.3 (Украина).

Запрос из Украины с использованием ДНС-ов провайдера:

nslookup emuzo.net

╤хЁтхЁ: ns3.farlep.net

Address: 213.130.4.1

Не заслуживающий доверия ответ:

╚ь : emuzo.net

Address: 127.0.1.3

Запрос из Украины с использованием ДНС-ов Google Public DNS:

nslookup emuzo.net 8.8.8.8

╤хЁтхЁ: google-public-dns-a.google.com

Address: 8.8.8.8

Не заслуживающий доверия ответ:

╚ь : emuzo.net

Address: 127.0.1.2

Попробовали платный сервис. При использовании функции GeoDNS от ведущего сервиса ДНС-хостинга Zerigo.net ситуация аналогичная.

В настройках сервиса прописал нижеследующие IN A записи для домена emuzo.info:

127.0.0.1 для США

127.0.0.2 для Германии

127.0.0.3 для Украины

127.0.0.4 для России

127.0.0.5 для остальной европы

127.0.0.100 для всех остальных стран

Запрос из Украины с использованием ДНС-ов провайдера:

nslookup emuzo.info

╤хЁтхЁ: ns3.farlep.net

Address: 213.130.4.1

Не заслуживающий доверия ответ:

╚ь : emuzo.info

Address: 127.0.0.3

Запрос из Украины с использованием ДНС-ов Google Public DNS:

nslookup emuzo.info 8.8.8.8

╤хЁтхЁ: google-public-dns-a.google.com

Address: 8.8.8.8

Не заслуживающий доверия ответ:

╚ь : emuzo.info

Address: 127.0.0.1

Мы уже было смирились с этой проблемой как с издержками GeoDNS, НО случайно попался в поле зрения сервис CDN (сеть доставки контента, состоящая из разнесенных по миру серверов), который эту задачу решает.

Эта CDN сеть для наших задач предоставила субдомен 493511490.r.cdnua.net

записи для него хранятся на ns1.worldcdn.net (69.168.228.1), ns2.worldcdn.net (69.168.229.1)

И эти DNS-сервера, в отличие от наших и Zerigo.net, корректно направляют пользователя на сервера в нужной стране даже при использовании юзером Днс-ов от Гугла.

Запрос из Украины с использованием ДНС-ов провайдера:

nslookup 493511490.r.cdnua.net

╤хЁтхЁ: ns3.farlep.net

Address: 213.130.4.1

Не заслуживающий доверия ответ:

╚ь : 493511490.r.cdnua.net

Address: 82.118.16.222

Запрос из Украины с использованием ДНС-ов Google Public DNS:

nslookup 493511490.r.cdnua.net 8.8.8.8

╤хЁтхЁ: google-public-dns-a.google.com

Address: 8.8.8.8

Не заслуживающий доверия ответ:

╚ь : 493511490.r.cdnua.net

Address: 82.118.16.222

направляет на 82.118.16.222, расположенный в Харькове. Иногда бросает на Киевский сервер 77.222.131.2.

А теперь внимание вопрос: КАК это работает?

была идея, что Google использует под каждую страну несколько IP, с которых рекурсивно обращается к авторитативному серверу. А CDN сеть знает эти адреса.

Но глубокий анализ ДНС-запросов другого крупного сайта показал, что, например гугловский ip 74.125.189.18, фактически находящийся предположительно в германии используется в рекурсивных ДНС-запросах от пользователей не только Украины, но и Алжира, Египта, Пакистана и др. стран.

Помогите, пожалуйста, разобраться.

IP-адреса 127.х.х.х указаны в наглядных целях.