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

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

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

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

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

Добавление геолокационной IP-базы осуществляется через объект geolb (см. подраздел Объект geolb).

Создание геолокационной 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

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

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

  • загрузка геолокационной IP-базы в формате .mmdb на устройство:

scp -P 222 <имя_файла>.mmdb tdadmin@<IP-адрес_Termidesk_Connect>:~/
  • переход в интерфейс Linux Shell из CLI на устройстве:

bash
  • перемещение файла в хранилище геолокационных IP-баз:

sudo cp <имя_файла>.mmdb /var/lib/termidesk-gslb
По умолчанию в Termidesk Connect хранилище геолокационных IP-баз расположено в папке /var/lib/termidesk-gslb.
  • выход из интерфейса Linux Shell:

exit
  • активация геолокационной IP-базы на устройстве:

set geolb geodb <имя_файла>.mmdb
Для активации на устройстве доступна только одна геолокационная IP-база. При активации новой IP-базы, предыдущая будет деактивирована.
  • применение заданных настроек:

commit
  • сохранение настроек:

write

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

Для просмотра списка загруженных геолокационных IP-баз следует перейти «Настройки – ГеоБН – ГеоБД».

Для загрузки геолокационной IP-базы следует нажать экранную кнопку [Загрузить] и указать путь к файлу в формате .mmdb.

После загрузки файла он будет расположен в /var/lib/termidesk-gslb.

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

Для удаления геолокационной IP-базы следует отметить его и нажать экранную кнопку [Удалить].

Для удаления нескольких IP-баз отметить все необходимые в списке.

Объект geolb

Доступные команды объекта geolb приведены в таблице (см. таблицу Доступные команды объекта geolb).

Таблица 1. Доступные команды объекта geolb
Команда Описание

Конфигурация ADNS

set geolb adns <IP-адрес> <порт>

Добавление ADNS. Указывается IP-адрес и номер порта, на котором Termidesk Connect будет принимать входящие DNS-запросы.

В случае использования отказоустойчивой конфигурации Termidesk Connect необходимо указывать общий IP-адрес кластера, т.е IP-адрес с типом SHARED (см. подраздел IP-адреса).

Пример команды:

set geolb adns 192.168.1.1 53

set geolb adns <IP-адрес> <порт> vrf <имя_VRF>

Задание имени таблицы VRF для привязки сетевого интерфейса с указанным IP-адресом (по умолчанию – default).

Конфигурация геолокационной IP-базы

set geolb geodb <имя_файла>.mmdb

Активация геолокационной IP-базы на устройстве.

Для активации на устройстве доступна только одна геолокационная IP-база. При активации новой IP-базы, предыдущая будет деактивирована

Конфигурация Сервиса

set geolb service <тип> <имя>

Создание Сервиса. Возможные типы записи Сервиса:

  • A – Сервис с назначенными IPv4-адресами;

  • AAAA – Сервис с назначенными IPv6-адресами;

  • CNAME – Сервис с назначенным доменным именем

set geolb service A <имя> <параметр> <значение>

Настройка Сервиса с типом записи A. Для настройки доступны следующие параметры:

  • hc-id – Проверка, которая будет выполняться для DNS-сервера с локальным IP-адресом;

  • local-ip – внутренний IP-адрес Сервиса, используемый для доступа внутри локальной сети;

  • public-ip – публичный IP-адрес Сервиса, используемый для доступа из внешних сетей;

  • site – Площадка для Сервиса

set geolb service AAAA <имя> <параметр> <значение>

Настройка Сервиса с типом записи AAAA. Для настройки доступны следующие параметры:

  • hc-id – Проверка, которая будет выполняться для DNS-сервера с локальным IP-адресом;

  • local-ip – внутренний IP-адрес Сервиса, используемый для доступа внутри локальной сети;

  • public-ip – внешний IP-адрес Сервиса, используемый для доступа из внешних сетей;

  • site – Площадка для Сервиса

set geolb service CNAME <имя> <параметр> <значение>

Настройка Сервиса с типом записи CNAME. Для настройки доступны следующие параметры:

  • cname – каноническое имя Сервиса, используемое на уровне DNS независимо от типа сети;

  • hc-id – Проверка, которая будет выполняться для DNS-сервера с локальным IP-адресом;

  • site – Площадка для Сервиса

Конфигурация удаленной Площадки

set geolb site <имя>

Добавление Площадки

Конфигурация DNS View

set geolb view <имя>

Создание DNS View

set geolb view <имя> order <значение>

Задание приоритета DNS View. Чем ниже приоритет, тем выше DNS View находится в списке проверок

set geolb view <имя> net <сеть>/<длина_префикса>

Список IP-адресов сетей в формате CIDR, при запросе из которых Termidesk Connect будет выдавать настроенные IP-адреса Сервисов (одна команда добавляет только один IP-адрес сети, при добавлении нескольких IP-адресов повторить команду для каждого).

Пример команды:

set geolb view ViewForLocalNet net 172.16.0.0/16

Конфигурация Виртуального Сервера геобалансировки

set geolb vs <тип> <имя>

Создание Виртуального Сервера геобалансировки. Возможные типы Сервиса для Виртуального Сервера геобалансировки:

  • A – Сервис с назначенными IPv4-адресами;

  • AAAA – Сервис с назначенными IPv6-адресами;

  • CNAME – Сервис с назначенным доменным именем

set geolb vs <тип> <имя> algorithm <значение>

Алгоритм геобалансировки (по умолчанию – ONLINE). Возможные значения:

  • ONLINE – Виртуальный Сервер перенаправит подключения только на доступные Сервисы;

  • ROUNDROBIN – Виртуальный Сервер последовательно распределит подключения между Сервисами для их равномерного распределения;

  • SOURCEIPHASH – Виртуальный Сервер будет перенаправлять подключения к Сервисам, основываясь на значении хеша IP-адреса. Это гарантирует, что подключение одного пользователя всегда будет направляться на один и тот же Сервис, снижая вероятность перегрузки;

  • STATICPROXIMITY – Виртуальный Сервер перенаправит подключения на ближайшую Площадку для выдачи Сервиса. В этом случае учитывается местоположение исходного источника запроса (см. подраздел Геолокационные IP-базы);

set geolb vs <тип> <имя> ecs <значение>

Использование опции ECS (EDNS Client Subnet) (по умолчанию – OFF). Возможные значения:

  • ON – использовать ECS для определения адреса источника запроса;

  • OFF – не использовать ECS.

Опция ECS используется для хранения информации о сети исходного источника запроса. Это полезно в случае, когда запрос пришел от вышестоящего DNS-сервера, местоположение которого точно неизвестно. Termidesk Connect получит информацию о сети исходного источника из входящего DNS-запроса и сохранит ее

set geolb vs <тип> <имя> persistence <значение>

Использование привязки входящего подключения к одному Сервису на время обработки его DNS-запросов. Возможные значения:

  • OFF – привязка к Сервису не используется;

  • SRCIP – привязка входящего подключения к Сервису на основе его IP-адреса.

При выборе значения SRCIP для параметра persistence может быть указан дополнительный параметр:

  • timeout – таймаут (в секундах) привязки к источнику запроса (значение от 1 д 100, по умолчанию – 60)

set geolb vs <тип> <имя> service-ids <имя_Сервиса>

Привязка Сервиса к Виртуальному Серверу геобалансировки (одна команда добавляет только один Сервис, для добавления нескольких Сервисов повторить команду для каждого).

Для привязки доступны только Сервисы с типом, который указывается при создании Виртуального Сервера геобалансировки

set geolb vs <тип> <имя> service-ids <имя_Сервиса> weight <значение>

Указание веса Сервиса (значение от 1 до 100).

Вес определяет приоритет распределения запросов на Сервис, параметр необходим при балансировке с использованием алгоритма ROUNDROBIN. Чем больше Вес Сервиса, тем чаще на этот Сервис идет перенаправление входящих подключений

Конфигурация Зоны

set geolb zone <имя_домена> <DNS_View>

Создание Зоны.

Указывается доменное имя Зоны и назначенный DNS View.

Пример команды:

set geolb zone termidesk.ru default

set geolb zone <имя_домена> <DNS_View> SOA expire <значение>

Задание срока действия (в секундах) данных при недоступности первичного DNS-сервера (по умолчанию – 1209600). Значение указывается для настройки SOA-записи

set geolb zone <имя_домена> <DNS_View> SOA minimum <значение>

Задание минимального времени (в секундах) жизни отрицательных ответов (по умолчанию – 3600). Значение указывается для настройки SOA-записи

set geolb zone <имя_домена> <DNS_View> SOA ns ip <IP-адрес>

Задание IP-адреса первичного DNS-сервера (ADNS). IP-адрес указывается для настройки SOA-записи

set geolb zone <имя_домена> <DNS_View> SOA ns mname <значение>

Указание имени первичного DNS-сервера (по умолчанию – ns). Значение указывается для настройки SOA-записи.

Указывается имя, которое вместе с именем Зоны образует FQDN. Например, если задано имя Зоны termidesk.ru и имя первичного DNS-сервера ns, тогда FQDN будет ns.termidesk.ru

set geolb zone <имя_домена> <DNS_View> SOA refresh <значение>

Задание интервала (в секундах) обновлений запросов от вторичного DNS-сервера к первичному (по умолчанию – 86400). Значение указывается для настройки SOA-записи

set geolb zone <имя_домена> <DNS_View> SOA retry <значение>

Задание интервала (в секундах) повторных попыток обновления, если первичный DNS-сервер не ответил (по умолчанию – 7200). Значение указывается для настройки SOA-записи

set geolb zone <имя_домена> <DNS_View> SOA rname <значение>

Указание контакта администратора зоны (по умолчанию – admin.gslb.ru). Значение указывается для настройки SOA-записи

set geolb zone <имя_домена> <DNS_View> SOA ttl <значение>

Задание задание TTL (в секундах) для DNS-записей (по умолчанию – 5). Значение указывается для настройки SOA-записи

set geolb zone <имя_домена> nodes <значение>

Задание поддомена для указанного домена, который является частью географически распределенной балансировки нагрузки для конкретного домена (возможно добавить несколько поддоменов для одной Зоны).

В командах с опцией nodes используется символ «.» для указания корневого домена. Для применения настроек домена третьего уровня нужно вместо точки использовать имя поддомена.

Пример команды для указания корневого домена:

set geolb zone termidesk.ru default nodes .

Пример команды указания поддомена connect для домена connect.termidesk.ru:

set geolb zone termidesk.ru default nodes connect

set geolb zone <имя_домена> <DNS_View> nodes <имя_поддомена> rrset A ip-list <IP-адрес>

Указание IPv4-адреса (возможно добавить несколько IPv4-адресов для одного набора ресурсных записей). IP-адрес указывается при добавлении набора ресурсных записей с типом А для указанного поддомена.

При задании ресурсной записи статическим методом указывается IPv4-адрес. При задании ресурсной записи динамическим методом указывается Виртуальный Сервер. Нельзя использовать оба метода вместе. В конфигурацию будут сохранены ресурсные записи, которые заданы последними

set geolb zone <имя_домена> <DNS_View> nodes <имя_поддомена> rrset A ttl <значение>

Задание времени (в секундах) жизни DNS-записи при кешировании. Значение указывается при добавлении набора ресурсных записей с типом А для указанного поддомена.

Если значение не будет задано, то используется значение ttl из SOA-записи

set geolb zone <имя_домена> <DNS_View> nodes <имя_поддомена> rrset A vs-list <имя_Виртуального_Сервера> order <приоритет>

Задание Виртуального Сервера и его приоритета использования (возможно добавить несколько Виртуальных Серверов для одного набора ресурсных записей). Значения указываются при добавлении набора ресурсных записей с типом А для указанного поддомена.

Указываются следующие значения:

  • <имя_Виртуального_Сервера> – имя Виртуального Сервера для обработки запросов;

  • <приоритет> – приоритет обработки запросов Виртуальным Сервером.

Обработка запросов осуществляется в порядке возрастания порядкового номера Виртуального Сервера. В случае недоступности Виртуального Сервера, запросы будут обработаны следующим по порядку Виртуальным Сервером

set geolb zone <имя_домена> <DNS_View> nodes <имя_поддомена> rrset AAAA ip-list <IP-адрес>

Указание IPv6-адреса (возможно добавить несколько IPv6-адресов для одного набора ресурсных записей). IP-адрес указывается при добавлении набора ресурсных записей с типом AAAA для указанного поддомена.

При задании ресурсной записи статическим методом указывается IPv6-адрес. При задании ресурсной записи динамическим методом указывается Виртуальный Сервер. Нельзя использовать оба метода вместе. В конфигурацию будут сохранены ресурсные записи, которые заданы последними

set geolb zone <имя_домена> <DNS_View> nodes <имя_поддомена> rrset AAAA ttl <значение>

Задание времени (в секундах) жизни DNS-записи при кешировании. Значение указывается при добавлении набора ресурсных записей с типом AAAA для указанного поддомена.

Если значение не будет задано, то используется значение ttl из SOA-записи

set geolb zone <имя_домена> <DNS_View> nodes <имя_поддомена> rrset AAAA vs-list <имя_Виртуального_Сервера> order <приоритет>

Задание Виртуального Сервера и его приоритета использования (возможно добавить несколько Виртуальных Серверов для одного набора ресурсных записей). Значения указываются при добавлении набора ресурсных записей с типом AAAA для указанного поддомена.

Указываются следующие значения:

  • <имя_Виртуального_Сервера> – имя Виртуального Сервера для обработки запросов;

  • <приоритет> – приоритет обработки запросов Виртуальным Сервером.

Обработка запросов осуществляется в порядке возрастания порядкового номера Виртуального Сервера. В случае недоступности Виртуального Сервера, запросы будут обработаны следующим по порядку Виртуальным Сервером

set geolb zone <имя_домена> <DNS_View> nodes <имя_поддомена> rrset CNAME cname <каноническое_имя>

Указание канонического имени (возможно добавить несколько канонических имен для одного набора ресурсных записей). Значение указывается при добавлении набора ресурсных записей с типом CNAME для указанного поддомена.

При задании ресурсной записи статическим методом указывается каноническое имя. При задании ресурсной записи динамическим методом указывается Виртуальный Сервер. Нельзя использовать оба метода вместе. В конфигурацию будут сохранены ресурсные записи, которые заданы последними

set geolb zone <имя_домена> <DNS_View> nodes <имя_поддомена> rrset CNAME ttl <значение>

Задание времени (в секундах) жизни DNS-записи при кешировании. Значение указывается при добавлении набора ресурсных записей с типом CNAME для указанного поддомена.

Если значение не будет задано, то используется значение ttl из SOA-записи

set geolb zone <имя_домена> <DNS_View> nodes <имя_поддомена> rrset CNAME vs-list <имя_Виртуального_Сервера> order <приоритет>

Задание Виртуального Сервера и его приоритета использования (возможно добавить несколько Виртуальных Серверов для одного набора ресурсных записей). Значения указываются при добавлении набора ресурсных записей с типом CNAME для указанного поддомена.

Указываются следующие значения:

  • <имя_Виртуального_Сервера> – имя Виртуального Сервера для обработки запросов;

  • <приоритет> – приоритет обработки запросов Виртуальным Сервером.

Обработка запросов осуществляется в порядке возрастания порядкового номера Виртуального Сервера. В случае недоступности Виртуального Сервера, запросы будут обработаны следующим по порядку Виртуальным Сервером

set geolb zone <имя_домена> <DNS_View> nodes <имя_поддомена> rrset MX ttl <значение>

Задание времени (в секундах) жизни DNS-записи при кешировании. Значение указывается при добавлении набора ресурсных записей с типом MX для указанного поддомена.

Если значение не будет задано, то используется значение ttl из SOA-записи

set geolb zone <имя_домена> <DNS_View> nodes <имя_поддомена> rrset MX records <приоритет> <хост>

Задание хоста с почтовой службой и его приоритета использования (возможно добавить несколько хостов для одного набора ресурсных записей). Значения указываются при добавлении набора ресурсных записей с типом MX для указанного поддомена.

Ресурсная запись MX задается статическим методом, для записи указываются следующие значения:

  • <приоритет> – приоритет использования хоста в списке. Чем ниже число, тем выше приоритет;

  • <хост> – наименование хоста с почтовой службой

set geolb zone <имя_домена> <DNS_View> nodes <имя_поддомена> rrset TXT ttl <значение>

Задание времени (в секундах) жизни DNS-записи при кешировании. Значение указывается при добавлении набора ресурсных записей с типом TXT для указанного поддомена.

Если значение не будет задано, то используется значение ttl из SOA-записи

set geolb zone <имя_домена> <DNS_View> nodes <имя_поддомена> rrset TXT txt-list <имя_Виртуального_Сервера> order <приоритет>

Задание ресурсной записи TXT (возможно добавить несколько записей для одного набора ресурсных записей). Значение указывается при добавлении набора ресурсных записей с типом TXT для указанного поддомена.

Ресурсная запись TXT задается статическим методом

set geolb zone <имя_домена> <DNS_View> nodes <имя_поддомена> rrset SRV ttl <значение>

Задание времени (в секундах) жизни DNS-записи при кешировании. Значение указывается при добавлении набора ресурсных записей с типом SRV для указанного поддомена.

Если значение не будет задано, то используется значение ttl из SOA-записи

set geolb zone <имя_домена> <DNS_View> nodes <имя_поддомена> rrset SRV txt-list <имя_Виртуального_Сервера> order <приоритет>

Задание ресурсной записи SRV (возможно добавить несколько записей для одного набора ресурсных записей). Значения указываются при добавлении набора ресурсных записей с типом SRV для указанного поддомена.

Ресурсная запись SRV задается статическим методом, для записи указываются следующие значения:

  • <приоритет> – приоритет использования целевого сервера в списке. Чем ниже число, тем выше приоритет;

  • <вес> – приоритет распределения запросов на целевой сервер. Чем больше Вес, тем чаще на этот сервер идет перенаправление входящих подключений;

  • <порт> – номер порта целевого сервера;

  • <сервер> – полное доменное имя FQDN целевого сервера