Загрузка локальных баз

·

Загрузка баз в формате CSV, JSON И MMDB для интеграции с собственными сервисами.

IP2Country база

Помимо получения подробной информации о конкретном IP-адресе, можно загрузить базу принадлежности IP-адреса к стране в формате JSON, CSV и MMDB.

Пример:
# curl -s 'https://ip2api.ru/api/v1/cc?token=ВашТокен&format=json' > ./cc.json.bz2

При выполнении запроса будет загружен архив с файлом вида: сс.json.bz2, где json – формат полученного файла (также доступны csv и mmdb форматы), а bz2 – метод сжатия, который необходимо разархивировать перед использованием:

Пример:
# bzip2 -d cc.json.bz2

Каждая запись полученного файла будет состоять из трех полей (network, cc, country) независимо от выбранного формата.

Пример содержимого файла CSV:

Copied!
1.0.0.0/24,AU,Australia 1.0.1.0/24,CN,China 1.0.2.0/23,CN,China ...

Пример содержимого файла в формате JSON:

Copied!
{"network":"1.0.0.0/24","cc":"AU","country":"Australia"} {"network":"1.0.1.0/24","cc":"CN","country":"China"} {"network":"1.0.2.0/23","cc":"CN","country":"China"} ...

Интеграция с веб-сервером Nginx

Для интеграции с веб-сервером Nginx можно использовать специально сформированный файл в формате MMDB. Для получения файла выполните команду:

Пример:
# curl -s 'https://ip2api.ru/api/v1/cc?token=ВашТокен&format=mmdb' | bzip2 -d > /etc/nginx/snippets/cc.mmdb

При выполнении запроса будет загружен MMDB-файл в каталог /etc/nginx/snippets/. Для проверки целостности полученного файла воспользуйтесь утилитой mmdblookup – стандартной утилитой для работы с MMDB-файлами.

Пример:
# mmdblookup --file /etc/nginx/snippets/cc.mmdb --ip 8.8.8.8

Пример ответа:

Copied!
{ "cc": "US" "country": "United States" "network": "8.8.0.0/15" }

После проверки целостности файла и корректности получаемых данных необходимо добавить следующую конфигурацию в секцию http:

Copied!
geoip2 /etc/nginx/snippets/cc.mmdb { $geoip2_data_cc cc; $geoip2_data_country country; $geoip2_data_network network; }

Если необходимо на основе GeoIP-данных, например, производить блокировку запросов, то дополнительно добавляем в секцию http условие, при котором будут заблокированы запросы от источников с IP-адресом из региона CN:

Copied!
map $geoip2_data_cc $allowed_cc { default yes; CN no; }

Также необходимо добавить условие, при котором будет возвращен клиенту код ответа 403:

Copied!
if ($allowed_cc = no) { return 403; }