Вопрос или проблема
У меня работает bind9 для локального DNS в сети. У меня также есть сервер кэширования APT. Я настроил файл RPZ, чтобы отравлять определенные доменные имена и перенаправлять их на мой внутренний кэш-сервер. Запуск, например, apt update
возвращает ошибки разрешения Я думаю, потому что кэш-сервер не может разрешить истинные (внешние) записи и получить данные. Я думаю, что это означает, что мне нужно будет настроить представление для кэш-сервера как /32.
Так что вопрос: могу ли я настроить так, чтобы мой кэш-сервер, обращаясь к доменам в отравленной зоне, просто перенаправлялся, в то время как остальная часть сети получает отравленные данные? Я просто не уверен, как это сделать.
Ответ или решение
Различные результаты DNS в зависимости от клиента
В рамках вашей конфигурации с использованием BIND9 и кэширования APT, вы столкнулись с необходимостью настройки DNS так, чтобы разные клиенты получали разные результаты в зависимости от их адресов и роли в сети. Основная проблема заключается в том, что сервер кэширования не может корректно разрешить домены, отравленные в сетевом фильтре с использованием RPZ (Response Policy Zone). Существует решение, которое позволит вам настроить различные ответы DNS для кэш-сервера и для остальных клиентов сети.
Проблема
На данный момент ваш кэш-сервер, который, вероятно, находится в вашей локальной сети, не может корректно разрешать запросы для отравленных доменов, потому что RPZ файл перенаправляет эти запросы на сам DNS-сервер. Это приводит к ошибкам при выполнении команд, таких как apt update
. Ваша идея создать отдельное представление (или view) для кэш-сервера является правильной.
Решение
-
Создание представлений (views)
Вам необходимо создать два разных представления в конфигурации BIND9: одно для кэш-сервера и другое для остальной части сети. Это позволит вам возвращать разные DNS-результаты в зависимости от источника запроса.
Пример конфигурации:
view "internal" { match-clients { any; }; # для всех остальных клиентов в сети // Настройки RPZ для отравленных зон zone "отравленная-зона.com" { type master; file "/etc/bind/rpz-зона.db"; }; // Другие стандартные настройки recursion yes; allow-query { any; }; }; view "caching-server" { match-clients { 192.168.1.100; }; // укажите IP вашего кэш-сервера // Перенаправляем запросы к отравленным доменам zone "отравленная-зона.com" { type forward; forward only; forwarders { 8.8.8.8; 8.8.4.4; }; // укажите внешний DNS }; // Стандартные настройки для кэш-сервера recursion yes; allow-query { key "named-key"; }; // только для кэш-сервера };
-
Настройка RPZ
Убедитесь, что ваш RPZ файл настроен корректно. Чаще всего включает в себя правила, определяющие, какие домены будут направляться на внутренний IP (например, кэш-сервер).
Пример секции RPZ:
zone "rpz" { type master; file "/etc/bind/rpz.db"; }; ; RPZ правила $TTL 2h @ IN SOA localhost. root.localhost. ( 2023101501 ; Serial 2h ; Refresh 30m ; Retry 1w ; Expire 1h ; Negative Cache TTL ) ; Примеры записей example.com CNAME .
-
Проверка конфигурации
После внесения изменений в конфигурацию BIND9, не забудьте выполнить проверку конфигурации и перезагрузку службы:
sudo named-checkconf sudo systemctl restart bind9
-
Мониторинг и ведение журнала
Внедрите систему мониторинга для анализа запросов DNS и ведите журнал ошибок, если такие возникнут. Это поможет вам в дальнейшем оптимизировать систему и выявить проблемы.
Заключение
Настройка различных DNS-результатов для разных клиентов может показаться сложной задачей, однако, следуя приведенным шагам, вы сможете достичь желаемого результата. Использование представлений в BIND9 представляет собой мощный инструмент для управления запросами DNS и может существенно улучшить работу вашей сети. Настоятельно рекомендуется проводить тестирование и мониторинг после настройки, чтобы убедиться в корректности выполненных изменений и отсутствии ошибок.