Геолокационные IP-базы
Геолокационные IP-базы
Геолокационная IP-база (GeoIP) – это база данных, содержащая информацию по пулам 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
Содержимое исполняемого файла writer.py приведено в справочном центре Termidesk Connect: https://wiki.astralinux.ru/pages/viewpage.action?pageId=348179676.