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

·

Загрузка баз в формате 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:

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

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

{"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

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

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

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

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

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

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

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

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