URL: https://www.opennet.ru/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID1
Нить номер: 94019
[ Назад ]

Исходное сообщение
"Google public DNS и определение страны пользователя. Как?"

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

Для домена emuzo.net на нс-сервере ns1.emuzo.net и ns2.emuzo.net отдаем ip (IP-адреса 127.х.х.х прописаны на ДНС-серверах в наглядных целях.):
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, фактически находящийся предположительно в германии используется в рекурсивных ДНС-запросах от пользователей не только Украины, но и Алжира, Египта, Пакистана и др. стран.

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

Спасибо всем, кто дочитал до конца! )


Содержание

Сообщения в этом обсуждении
"Google public DNS и определение страны пользователя. Как?"
Отправлено PavelR , 13-Ноя-12 05:50 
> Помогите, пожалуйста, разобраться.

Вам религия мешает загуглить поиск по ключевым словам "google dns cdn" ?
Всё просто. гугл передает адрес IP-сети пользователя в расширенной информации запроса.

Патчик прикольный на эту тему: http://wilmer.gaa.st/edns-client-subnet/

> Спасибо всем, кто дочитал до конца! )


"Google public DNS и определение страны пользователя. Как?"
Отправлено Александр , 13-Ноя-12 13:33 
> Вам религия мешает загуглить поиск по ключевым словам "google dns cdn" ?
> Всё просто. гугл передает адрес IP-сети пользователя в расширенной информации запроса.
> Патчик прикольный на эту тему: http://wilmer.gaa.st/edns-client-subnet/

Большое спасибо, ушел копать дальше.
Искал по разному "Google Public DNS", "GeoDNS"...
По "Google DNS CDN" не сообразил, или может действительно что-то с религией )