Геолокационные IP-базы

Общие сведения о геолокационных IP-базах

Геолокационная IP-база (GeoIP) – это база данных, содержащая информацию по пулам IP-адресов, их координатам и наименованиям локаций. Используется для определения местоположения IP-адреса пользователя: страны, города, широты. долготы и др.

В Termidesk Connect такие IP-базы используются для активации определенного алгоритма балансировки и выбора ближайшей к пользователю Площадки.

Добавление геолокационных IP-баз

Для добавления собственной геолокационной IP-базы нужно:

  • конвертировать основную геолокационную IP-базу в формат JSON, например, с помощью утилиты mmdbctl:

mmdbctl export <путь_к_базе_.mmdb> -o <путь_к_новому_файлу_базы_.json>
  • сформировать текстовый файл (например, geonames.txt) для удобного поиска geoname_id с помощью командной строки:

jq -r '. | "(.continent.geoname_id),(.country.geoname_id),(.subdivisions[0].geoname_id),(.city.geoname_id),(.location | "(.latitude),(.longitude),(.accuracy_radius)")|(.continent.code)|(.country.names | "(.ru):(.en)")|(.subdivisions[0].names | "(.ru):(.en)")|(.city.names | "(.ru):(.en)");"' exported-geoip.json | sort | uniq > geonames.txt
  • найти необходимые географические идентификаторы в базе данных, например:

grep -i 'Тюмень' geonames.txt grep -i 'vladivos' geonames.txt sed -e '/Санкт/I!d' -e '/rus/I!d' geonames.txt
Идентификаторы находятся в первом столбце, если разделительный знак принять за «|». В этом же списке находятся координаты в системе WGS 84 (последние два значения), а также радиус точности местоположения в километрах. Координаты можно заменить, воспользовавшись онлайн-картой.
  • сформировать файл (например, infrastructure.txt) с содержимым IP-адресов и их местоположений:

10.0.1.0/24,6255148,2017370,536203,498817,59.93863,30.31413,5
10.0.3.0/25,6255148,2017370,1488747,1488754,57.138530,65.522186,1
10.0.3.128/25,6255148,2017370,1488747,1488754,57.116799,65.550740,1

Где:

  • значения в столбце 1 соответствуют подсети, для которой определяется местоположение;

  • далее в столбцах 2 – 5 следуют идентификаторы: континента, страны, региона, города;

  • затем в столбцах 6 и 7 приводятся координаты (широта, долгота);

  • в столбце 8 приводится радиус точности в километрах.

Необходимые столбцы: 1, 6, 7.

  • конвертировать получившийся файл в формат MMDB с помощью исполняемого файла writer.py:

Необходимо предварительно установить библиотеку netaddr:

sudo apt install python3-netaddr
python3 writer.py --file infrastructure.txt --output infrastructure.mmdb