Вы заказали сервер в Швейцарии, а какой-то сайт здоровается по-немецки, показывает цены в злотых или уверяет, что вы в третьей стране. Сервер никуда не переезжал. Разберём, кто на самом деле решает, «где» находится IP, и что с этим делать.
Страну на IP никто не штампует
IP-адрес - это просто число из блока, который региональный регистратор выдал провайдеру. Сам адрес не содержит координат. Каждая «страна», которую вы видите рядом с IP, - догадка коммерческой базы геолокации: MaxMind, IPinfo, DB-IP, ipregistry и десятков баз поменьше.
Каждая база строит догадку из своего набора источников: записи регистраторов, таблицы маршрутизации, замеры задержек, сообщения пользователей. Обновляются они по разным графикам и постоянно друг с другом расходятся. Google может думать одно, стриминг другое, рекламная сеть третье, потому что они покупают разные базы.
Откуда берутся расхождения
- Блоки IP переезжают между провайдерами и локациями по мере роста сетей. Базы догоняют неделями, а то и месяцами.
- Часть баз ставит страну по стране регистрации владельца блока, а не по физическому месту оборудования.
- Мелкие сервисы копируют устаревшие данные у крупных и не обновляют их годами.
Что делаем мы со своей стороны
Для каждого анонсируемого блока мы публикуем физическое расположение в машиночитаемом geofeed и отправляем поправки в крупные базы, когда те уплывают. Большие игроки обновляются довольно быстро; длинный хвост может отставать. Это реальность всей индустрии, и полностью её не контролирует ни один провайдер.
Как проверить реальное расположение
# задержка не врёт: сервер в Женеве отвечает Цюриху за ~2 мс
ping -c 5 ip.вашего.сервера # с машины рядом с заявленным городом
# маршрут тоже рассказывает историю
mtr --report ip.вашего.сервера
Задержка в единицы миллисекунд из того же региона - физическое доказательство, что машина там, где мы говорим, что бы ни утверждала случайная база.