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

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

  • конвертировать основную геолокационную IP-базу в формат JSON, например, с помощью утилиты mmdbctl:
mmdbctl export <путь к базе .mmdb> -o <путь к новому файлу базы .json>
BASH
  • сформировать текстовый файл (например, 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
BASH
  • найти необходимые географические идентификаторы в базе данных, например:
grep -i 'Тюмень' geonames.txt grep -i 'vladivos' geonames.txt sed -e '/Санкт/I!d' -e '/rus/I!d' geonames.txt
BASH

Идентификаторы находятся в первом столбце, если разделительный знак принять за «|». В этом же списке находятся координаты в системе 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
BASH

Где:

  • значения в столбце 1 соответствуют подсети, для которой определяется местоположение;
  • далее в столбцах 2 – 5 следуют идентификаторы: континента, страны, региона, города; 
  • затем в столбцах 6 и 7 приводятся координаты (широта, долгота);
  • в столбце 8 приводится радиус точности в километрах. 

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

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

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

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

Содержимое исполняемого файла writer.py приведено в справочном центре Termidesk Connect: https://wiki.astralinux.ru/pages/viewpage.action?pageId=348179676.