Местоположение по IP: как работает геолокация и почему она ошибается
Сайты «знают», из какого вы города, — и регулярно ошибаются: показывают Москву жителю Казани, предлагают доставку не в тот регион, а иногда и вовсе блокируют доступ «не из той страны». Разбираем, откуда вообще берётся местоположение по IP, почему до страны оно работает хорошо, а до города — как повезёт, и что это значит для владельцев сайтов.
Откуда берётся «город» у IP-адреса
В самом IP-адресе координат нет — это просто число. География появляется из сопоставления: специальные компании ведут геобазы, где за блоками адресов закреплены страны и города. Строятся эти базы из нескольких источников. Первый — официальный: все адреса мира распределяют пять региональных интернет-регистратур (для России и Европы это RIPE NCC), и у каждого выданного блока есть публичная запись — какой организации и в какой стране он выдан. Отсюда почти безошибочное определение страны. Второй слой — данные операторов о том, в каком регионе блок используется. Третий — косвенные сигналы: задержки до опорных точек, объявления маршрутов, обратные DNS-имена узлов (в имени магистрального маршрутизатора часто зашит город). И только из этой мозаики складывается вердикт «вы в Новосибирске».
Кто вообще раздаёт адреса: пять регистратур мира
Фундамент любой геолокации — административная система распределения адресов. Она трёхступенчатая: IANA выдаёт крупные блоки пяти региональным регистратурам, те — операторам и компаниям своих регионов, а каждая выдача фиксируется в публичной базе:
| Регистратура | Регион |
|---|---|
| RIPE NCC | Европа, Россия, Ближний Восток, Центральная Азия |
| ARIN | Северная Америка |
| APNIC | Азиатско-Тихоокеанский регион |
| LACNIC | Латинская Америка и Карибы |
| AFRINIC | Африка |
Отсюда и надёжность уровня «страна»: она записана в реестре при выдаче блока. Но внутри страны регистрационная запись говорит лишь, на кого блок оформлен, — а где физически подключены абоненты, оператор решает сам и менять может хоть каждый месяц. Уровень «город» геобазы уже не читают из реестра, а вычисляют и угадывают — поэтому он и плывёт.
Почему до страны — точно, а до города — как повезёт
Сами производители геобаз честно разделяют точность по уровням: страна определяется надёжно почти всегда, а вот город — заметно хуже, и тому есть системные причины, которые не лечатся «улучшением базы».
| Причина ошибки | Как проявляется |
|---|---|
| CGNAT у мобильных операторов | Тысячи абонентов из разных городов выходят в сеть через один пул адресов — и все «находятся» там, где оператор его зарегистрировал. Классика: весь регион определяется как Москва |
| Корпоративные сети и VPN | Филиал в Екатеринбурге ходит в интернет через головной офис — для всех сайтов он «в Санкт-Петербурге» |
| Переезды блоков адресов | Провайдер перекинул блок в другой город, базы обновляются с отставанием — недели и месяцы неверной географии |
| Разные базы — разные ответы | Один и тот же IP в одной базе — Казань, в другой — Набережные Челны: единого «правильного» ответа не существует |
| Спутниковый и «размазанный» доступ | Точка выхода в интернет физически далека от абонента — география по IP теряет смысл |
Итоговое правило, которое стоит запомнить: IP надёжно отвечает на вопрос «какая страна» и лишь предположительно — на вопрос «какой город». Точные координаты по IP не определяются вовсе — когда смартфон показывает вас на карте с точностью до дома, он пользуется GPS и Wi-Fi-сетями вокруг, а не IP-адресом.
Почему сайт считает, что вы в другом городе
Соберём типовые жалобы в одну картину. «Яндекс показывает не мой город» — почти всегда CGNAT мобильного оператора или домашний провайдер с адресами, зарегистрированными на соседний регион. «Сайт предлагает не ту валюту и язык» — геобаза сайта считает ваш блок иностранным. «Пишет, что сервис недоступен в вашей стране, хотя я дома» — блок адресов вашего провайдера числится в чужой стране или помечен как VPN/дата-центр. Во всех случаях лечение одно и то же: у большинства крупных сервисов город можно указать вручную, а провайдеру — написать, чтобы он обновил регистрационные данные блока в геобазах.
Сторона владельца сайта: где гео-логика ломает бизнес
Теперь главное — зеркальная сторона. Если на вашем сайте есть логика «по региону» — автоопределение города доставки, региональные цены, гео-блокировки, разные версии страниц, — все ошибки геолокации из таблицы выше становятся вашими ошибками. Посетитель из Казани видит склад Москвы, клиент за CGNAT не может выбрать свой регион, а особо строгий гео-фильтр «только Россия» отрезает реальных российских клиентов, чьи адреса геобаза считает зарубежными.
Отдельный болезненный сценарий — гео-фильтры и автоматика. Защита «пускаем только Россию», настроенная на уровне CDN или файрвола, судит по тем же несовершенным базам: она может отрезать часть настоящих посетителей — и одновременно ваш собственный мониторинг или поисковых роботов, если их адреса определились «не той страной». Симптомы точь-в-точь как в истории с WAF, блокирующим мониторинг: у людей открывается, у роботов — нет, или наоборот.
Выбор площадки под аудиторию — ещё одно место, где география решает. Сервер в Москве даёт приемлемую задержку большей части страны, но для аудитории за Уралом каждая тысяча километров — это плюс ~10 мс к каждому обмену пакетами, а обменов при загрузке страницы несколько. Если ядро аудитории в конкретном регионе, стоит либо ставить площадку ближе к нему, либо закрывать статику через CDN — и в любом случае измерять результат из городов аудитории, а не гадать по карте.
Если сайт ведёт себя по-разному в разных регионах, то и проверять его нужно из разных регионов: проверка только из Москвы никогда не увидит, что версия для Дальнего Востока отдаёт ошибку. Каждая регион-зависимая функция — это отдельная поверхность для поломки.
Пруфен проверяет сайт из 13 точек — 11 в России от Мурманска до Владивостока, Минск и Испания, — то есть глазами посетителей из разных регионов и сетей сразу. Список адресов точек открыт на странице серверов мониторинга — их можно внести в исключения гео-фильтра, чтобы защита не воевала с проверками. А HTTP-проверки покажут, если в каком-то регионе сайт начал отвечать иначе.
Частые вопросы
Можно ли по IP найти конкретного человека или адрес? Нет. Максимум публично доступного — провайдер и предполагаемый город. Сопоставить адрес с конкретным абонентом может только сам оператор по официальному запросу уполномоченных органов.
Почему разные сервисы показывают разные города для одного IP? Потому что пользуются разными геобазами, а базы расходятся — особенно по свежим или переехавшим блокам. Это не баг конкретного сервиса, а свойство всей системы.
VPN действительно меняет местоположение по IP? Да — сайты видят адрес VPN-сервера, а не ваш. Именно поэтому гео-статистике посещений нельзя верить безоговорочно, а «проверить сайт из другой страны через VPN» — рабочий, хотя и грубый приём диагностики.
Как проверить, что геобазы «думают» о моём сервере? Прогоните IP сайта через несколько геосервисов и сравните ответы с реальностью. Если сервер в Москве, а базы дружно показывают другую страну — ждите проблем с гео-фильтрами чужих сервисов и рекламных систем; исправляется это через хостера, который должен актуализировать данные блока у регистратуры и в крупных геобазах.
Влияет ли «неправильная» география IP на SEO? Для регионального продвижения — может: поисковики используют массу сигналов региональности, и IP лишь один из них, далеко не главный (справочники, региональные страницы, контент важнее). А вот на работу гео-зависимых сервисов — рекламных площадок, платёжек, антифрода — ошибочная страна IP влияет вполне ощутимо.
Как проверить, что мой сайт корректно работает для всех регионов? Единственный честный способ — запросы из реальных сетей в этих регионах: либо вручную (коллеги, VPN-точки), либо автоматически, мониторингом с проверяющими серверами в нужных городах. Почему одна точка проверки не покрывает страну — мы разбирали в статье про мониторинг из разных городов.