Вы заказали сервер в Швейцарии, а какой-то сайт здоровается по-немецки, показывает цены в злотых или уверяет, что вы в третьей стране. Сервер никуда не переезжал. Разберём, кто на самом деле решает, «где» находится IP, и что с этим делать.

Страну на IP никто не штампует

IP-адрес - это просто число из блока, который региональный регистратор выдал провайдеру. Сам адрес не содержит координат. Каждая «страна», которую вы видите рядом с IP, - догадка коммерческой базы геолокации: MaxMind, IPinfo, DB-IP, ipregistry и десятков баз поменьше.

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

Откуда берутся расхождения

  • Блоки IP переезжают между провайдерами и локациями по мере роста сетей. Базы догоняют неделями, а то и месяцами.
  • Часть баз ставит страну по стране регистрации владельца блока, а не по физическому месту оборудования.
  • Мелкие сервисы копируют устаревшие данные у крупных и не обновляют их годами.

Что делаем мы со своей стороны

Для каждого анонсируемого блока мы публикуем физическое расположение в машиночитаемом geofeed и отправляем поправки в крупные базы, когда те уплывают. Большие игроки обновляются довольно быстро; длинный хвост может отставать. Это реальность всей индустрии, и полностью её не контролирует ни один провайдер.

Как проверить реальное расположение

# задержка не врёт: сервер в Женеве отвечает Цюриху за ~2 мс
ping -c 5 ip.вашего.сервера    # с машины рядом с заявленным городом

# маршрут тоже рассказывает историю
mtr --report ip.вашего.сервера

Задержка в единицы миллисекунд из того же региона - физическое доказательство, что машина там, где мы говорим, что бы ни утверждала случайная база.

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