Гид по технологиям

Как определить местоположение по IP-адресу

• 6 min read • Сеть • Обновлено 28 Nov 2025
Определение местоположения по IP-адресу
Определение местоположения по IP-адресу

Схема сопоставления IP с подсетями и регионами

Быстрые ссылки

  • Как это работает

Как это работает

Определение геолокации по IP не похоже на триллеры — это просто сопоставление адреса с диапазоном, который уже назначен провайдерам и регионам. Интернет разбит на блоки адресов (подсети), обычно описываемые в нотации CIDR. Если вы знаете, в какой подсети находится IP, вы можете посмотреть, какой организации и какому региону эта подсеть выделена.

CIDR (Classless Inter-Domain Routing) — компактный способ описать диапазон IP-адресов. Пример:

192.168.1.0/24

означает диапазон от

192.168.1.0

до

192.168.1.255

Число после косой черты показывает, сколько бит от адреса фиксировано (в этом случае 24 бита — первые три байта). Остальные биты используются для устройств в подсети (в этом примере — последние 8 бит).

Самые крупные блоки выделяет IANA (Internet Assigned Numbers Authority). IANA распределяет большие блоки регионам и реестрам, например, ARIN, RIPE, APNIC и др. Затем региональные реестры передают части блоков провайдерам и организациям.

Например, адрес

173.79.255.255

находится в блоке

173.0.0.0/8

Этот /8 был передан ARIN. Внутри него диапазоны вроде

173.64.0.0 — 173.79.255.255

могут быть выделены конкретным операторам (в рассматриваемом случае — Verizon для региона северной Вирджинии). Из этого следует, что по IP можно с высокой вероятностью получить город или регион, но не точный домашний адрес.

Иерархия распределения IP: IANA → региональные реестры → провайдеры

Важно: геолокация на основе IP показывает местоположение сети/точки присутствия провайдера, а не обязательно пользователя. VPN, прокси, мобильные сети, NAT и CDN могут искажать результат.

Где брать данные

Все данные об аллокациях публичны: IANA и региональные реестры (ARIN, RIPE, APNIC, LACNIC, AfriNIC) публикуют записи WHOIS и таблицы распределений. Но проще воспользоваться готовыми базами GeoIP или API-провайдерами.

Консультация базы данных GeoIP и API

Много бесплатных и коммерческих сервисов предоставляют готовые таблицы и API. Пример бесплатного онлайн-инструмента — KeyCDN. В веб-интерфейсе можно ввести IP и увидеть результат; также есть JSON API.

Результат поиска GeoIP на KeyCDN

Пример вызова через curl:

curl https://tools.keycdn.com/geo.json?host=173.79.254.254

PHP-пример (простая проверка):

response->data->geo->city и другие поля

API возвращает JSON-объект с полями, такими как country_name, region_name, city, postal_code, latitude, longitude и т. д. Пример структуры ответа:

{
  "status": "success",
  "description": "Data successfully received.",
  "data": {
    "geo": {
      "host": "173.79.254.254",
      "ip": "173.79.254.254",
      "rdns": "pool-173-79-254-254.washdc.fios.verizon.net",
      "asn": 701,
      "isp": "MCI Communications Services, Inc. d/b/a Verizon Business",
      "country_name": "United States",
      "country_code": "US",
      "region_name": "Virginia",
      "region_code": "VA",
      "city": "Alexandria",
      "postal_code": "22309",
      "continent_name": "North America",
      "continent_code": "NA",
      "latitude": 38.719,
      "longitude": -77.1067,
      "metro_code": 511,
      "timezone": "America/New_York",
      "datetime": "2019-08-22 17:30:48"
    }
  }
}

У большинства публичных API есть ограничения по запросам; у KeyCDN — около 3 запросов в секунду на бесплатном уровне. Для высоконагруженных систем такой лимит может быть недостаточным.

Если требуется много запросов или низкая задержка, лучше установить локальную базу. Многие провайдеры, например IP2Location, предлагают бесплатную «Lite» версию таблицы в формате CSV и платные версии с большей точностью. CSV легко импортировать в MySQL, PostgreSQL или другой движок и индексировать.

Мини-методология: как получить местоположение на практике

  1. Соберите IP из логов или запроса.
  2. Быстрый вариант: выполните запрос к публичному API (KeyCDN, MaxMind, IP2Location и т. п.).
  3. Для массовой обработки: загрузите CSV-таблицу GeoIP в локальную базу и индексируйте диапазоны.
  4. Сопоставьте результат с RDNS и WHOIS для проверки (обнаружите корпоративные блоки и ASN).
  5. Если результат подозрительный (VPN/прокси/мобильный), используйте дополнительные сигналы: задержка (ping/traceroute), часовой пояс, региональные CNAME/rdns в DNS.
  6. Применяйте правило доверия: пометьте низкую уверенность для IP в мобильных/резидуальных диапазонах и высокого уровня для фиксированных провайдеров.

Когда этот метод даёт неточный результат

  • VPN и прокси: пользователь маскирует реальное местоположение.
  • Мобильные операторы: IP может принадлежать точке выхода в другом городе/регионе.
  • Carrier-grade NAT: несколько пользователей под общим внешним IP.
  • CDN и облачные провайдеры: IP принадлежит узлу CDN, а не конечному пользователю.
  • Устаревшие записи в базе: провайдеры меняют аллокации, базы требуют обновлений.
  • Частные или динамические адреса: локальные диапазоны не дают географии.

Альтернативные подходы и вспомогательные сигналы

  • WHOIS/RIPE/ARIN lookup — покажет владельца блока и контактную информацию.
  • RDNS (reverse DNS) — часто содержит подсказки типа city или isp.
  • ASN/BGP-информация — полезно для определения оператора и его регионов присутствия.
  • Активная геолокация — запросить геопозицию в браузере через HTML5 (нужен пользовательский доступ).
  • Traceroute и измерение задержки — сопоставление с известными задержками по регионам.

Развертывание локальной базы: краткий план действий

  1. Скачайте CSV-версию GeoIP (IP2Location Lite или эквивалент).
  2. Создайте таблицу в СУБД с полями: start_ip, end_ip, start_int, end_int, country, region, city, latitude, longitude, isp, asn.
  3. Импортируйте CSV и создайте индекс по полям start_int и end_int (или используйте специализированные типы диапазонов, если СУБД поддерживает).
  4. Реализуйте быструю точечную проверку: преобразуйте IPv4 в числовое значение и выполните диапазоновый поиск.
  5. Автоматизируйте обновления (ежедневно/еженедельно) и храните историю версий.

Пример SQL для поиска диапазона (упрощённо):

SELECT * FROM geoip
WHERE ip_num BETWEEN start_int AND end_int
LIMIT 1;

Ролевые чеклисты

  • Операционный администратор:

    • Настроить импорт CSV и автоматические обновления.
    • Настроить индексы и мониторинг времени отклика запросов.
  • Аналитик безопасности:

    • Включить GeoIP lookup в пайплайн анализа логов.
    • Помечать подозрительные IP для ручной проверки (VPN/ASN/rdns).
  • Разработчик:

    • Реализовать кэширование результатов API.
    • Добавить таймера/лимитер для внешних вызовов и переключатель на локальную БД.

Критерии приёмки

  • Система возвращает страну/регион/город для 95% внутренних тестовых IP (если база покрывает эти диапазоны).
  • Автоматические обновления базы проходят без ошибок и фиксируются в логах.
  • Для API-запросов реализован кэш на 24 часа и обработка ошибок при превышении лимита.

Примерное дерево принятия решения

flowchart TD
  A[Есть единичный IP?] -->|Да| B[Вызвать внешний API]
  A -->|Нет — массово| C[Использовать локальную БД]
  B --> D{API вернул результат}
  D -->|Да| E[Вернуть и кэшировать]
  D -->|Нет или сомнительно| F[Доп. проверки: WHOIS, RDNS, traceroute]
  C --> G[Поиск по диапазону]
  G -->|Найдено| E
  G -->|Не найдено| F

Глоссарий — 1 строка на термин

  • CIDR — способ записи диапазона IP в виде «адрес/битов маски».
  • ASN — номер автономной системы, который идентифицирует сеть оператора.
  • RDNS — обратная запись DNS, которая может содержать подсказки о хосте.
  • WHOIS — публичная запись владения блоком IP и контактной информацией.
  • GeoIP — база данных, связывающая IP-диапазоны с географией.

Риски и рекомендации по смягчению

  • Риск: ложное определение из‑за VPN/мобильных адресов. Митигирование: комбинировать данные (ASN, RDNS, задержка) и понижать доверие к результату.
  • Риск: устаревшая локальная база. Митигирование: автоматические обновления и аудит версий.
  • Риск: превышение лимитов API. Митигирование: кэширование, локальная БД и плавный градиент перехода на офлайн.

Заключение

Определение местоположения по IP — это в основном сопоставление адреса с уже выделенными подсетями. Для быстрых проверок подойдёт внешний API; для масштабных решений — локальная база и индексированные запросы. Всегда учитывайте ограничения: VPN, мобильные сети и CDN могут существенно понижать точность. Комбинирование нескольких источников (WHOIS, RDNS, ASN, задержки) повышает надёжность оценки.

Важно: применяйте результаты с учётом уровня доверия и регламентов конфиденциальности в вашей юрисдикции.

Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Несколько аккаунтов Skype: Multi Skype Launcher
Программное обеспечение

Несколько аккаунтов Skype: Multi Skype Launcher

Журнал для работы: повысить продуктивность
Productivity

Журнал для работы: повысить продуктивность

Персональные звуки уведомлений на Android
Android.

Персональные звуки уведомлений на Android

Скачивание шоу Hulu для офлайн‑просмотра
Стриминг

Скачивание шоу Hulu для офлайн‑просмотра

Microsoft Start: персонализированная новостная лента
Новости

Microsoft Start: персонализированная новостная лента

Как изменить имя в Epic Games быстро
Гайды

Как изменить имя в Epic Games быстро