Проблема с BIND Maxmind geo mmdb в Ubuntu 22.04 LTS

Вопрос или проблема

ОС: Ubuntu 22.04 LTS
BIND 9.18.30-0ubuntu0.22.04.2-Ubuntu (Extended Support Version) <id:>

DNS настроен и работает.
Обратный DNS настроен и работает.
Geo DNS – загружен GeoLite2-Country mmdb, как рекомендовано, с помощью wget. Установлен в /var/lib/GeoIP/. Он настроен как bind:bind для доступа. После изменения файла /etc/bind/named.conf.options для чтения, в параметрах geoip-directory "/var/lib/GeoIP" я пытаюсь перезапустить службы bind9 или named и получаю следующую ошибку:

/etc/bind/named.conf.options:7: no GeoIP2 database installed which can answer queries of type 'country'

Я протестировал базу данных с помощью mmdbtools и следующей команды:
mmdblookup --file /var/lib/GeoIP/GeoLite2-Country.mmdb --ip 8.8.8.8 — Это возвращает США в качестве страны и показывает, что BIND может читать из базы данных.

Полный файл named.conf.options приведен ниже:

acl "trusted" {
        192.168.56.60;  # DNS сервер
        192.168.56.61;  # DNS клиент
        192.168.56.20;  # DNS клиент
};

acl "US_Clients" { geoip country US; };
acl "EU_Clients" { geoip country EU; };
acl "ASIA_Clients" { geoip country ASIA; };

options {
        directory "/var/cache/bind";

        recursion yes;                  # включает рекурсивные запросы
        allow-recursion { trusted; };   # Разрешить рекурсивные запросы из нашего ACL
        listen-on { any; };             # Частный IP-адрес сервера
        allow-transfer { none; };       # Отключить передачу зоны по умолчанию
        geoip-directory "/var/lib/GeoIP/";
        allow-query-cache { 192.168.56.0/24; };

        forwarders {
                8.8.8.8;
                8.8.4.4;
};

Все, что я исследовал и пробовал, говорит, что это должно работать, но продолжает возвращать эту ошибку о стране, и я не могу понять, почему. Кто-нибудь еще сталкивался с этой проблемой или знает, что может ее вызывать?

Ответ или решение

Конфигурация системы DNS с использованием Geolocation (Geo DNS) на базе BIND и Maxmind GeoLite2 может быть достаточно сложной задачей, особенно при использовании Ubuntu 22.04 LTS с BIND 9.18.30. В вашей ситуации описанная проблема связана с тем, что BIND не распознает установленную базу данных GeoLite2-Country и возвращает ошибку. Давайте детально разберем возможные причины этой ошибки и пути их устранения.

Теория

BIND, один из самых популярных и мощных DNS-серверов, предлагает возможность использования геолокации для управления тем, каким образом DNS-запросы обрабатываются из различных географических регионов. В вашей конфигурации используется база данных GeoLite2-Country от MaxMind, которая хранится в специальном формате MMDB. Важно, чтобы база данных была правильно установлена и настроена, а также чтобы BIND имел корректный доступ к ней.

Ошибки, подобные no GeoIP2 database installed which can answer queries of type 'country', обычно возникают из-за одной или нескольких из следующих причин:

  1. Некорректное расположение базы данных: BIND не может найти базу данных в указанной директории.
  2. Неправильные права доступа: файлы базы данных должны быть доступны для чтения пользователем и группой, под которыми запускается BIND (обычно bind:bind).
  3. Несовпадение версии или формата базы данных: вы используете неправильную версию или формат базы данных, который не поддерживается текущей версией BIND.
  4. Неверные настройки в конфигурационном файле: конфигурационный файл может содержать ошибки или отсутствующие параметры, необходимые для правильного использования GeoIP.

Пример

В вашем конфигурационном файле named.conf.options вы указываете:

geoip-directory "/var/lib/GeoIP/";

Также упоминаете использование MMDB для проверки базы данных с помощью команды mmdblookup, которая успешно возвращает страну для IP 8.8.8.8. Это говорит о том, что база данных функционирует правильно в принципе. Однако, BIND не может взаимодействовать с ней.

Применение

Теперь рассмотрим, какие шаги вы можете предпринять для устранения проблемы:

  1. Проверка расположения и прав доступа:

    • Убедитесь, что специально указанная директория /var/lib/GeoIP/ действительно содержит файл GeoLite2-Country.mmdb.
    • Права доступа: убедитесь, что пользователю и группе bind разрешено чтение базы данных. Выполните следующие команды для проверки и установки прав:
      sudo chown bind:bind /var/lib/GeoIP/GeoLite2-Country.mmdb
      sudo chmod 644 /var/lib/GeoIP/GeoLite2-Country.mmdb
  2. Проверка конфигурационных файлов:

    • Убедитесь, что все настройки в named.conf.options соответствуют требованиям BIND версии 9.18.30. Версия BIND может иметь требования по совместимости для определённых конфигурационных параметров.
    • Убедитесь в корректности вашего синтаксиса ACL для геолокаций. В некоторых версиях необходимо использовать полные названия стран ISO, такие как "United States" вместо "US".
  3. Обновление BIND и баз данных:

    • Проверьте, что ваш установочный пакет BIND и базы данных geolocation обновлены до последних версий, поскольку между версиями могут быть исправлены ошибки, влияющие на совместимость.
  4. Логи и отладка:

    • Проверьте журналы системы и BIND, чтобы выявить дополнительные ошибки, которые могут содержать полезную информацию о проблеме с загрузкой базы данных.
    • Используйте более обширные опции отладки BIND для получения большего количества диагностической информации.
  5. Документация и известные проблемы:

    • Просмотрите официальную документацию Ubuntu и BIND на предмет известных проблем и решений для вашей конкретной версии.
    • Форумы и ресурсы, такие как AskUbuntu или StackOverflow, могут содержать дополнительные советы от пользователей, испытывающих аналогичные проблемы.

После выполнения вышеописанных действий, если проблема не будет решена, рассмотрите возможность создания отчета об ошибке в соответствующем баг-трекере Ubuntu или BIND, где разработчики и сообщество могут помочь с дальнейшими расследованиями и поиском решений.

Оцените материал
Добавить комментарий

Капча загружается...