Я хочу расширить свой unbound.conf
который в настоящее время использует одни и те же данные для всех клиентов, поэтому он обрабатывает разные наборы клиентов, используя немного разные ответы / данные. Unbound обслуживал мою локальную сеть в течение многих лет с одним набором директив, поэтому моя цель - преобразовать его в разделенное представление. Если это уместно, два представления будут рекурсивными, а одно будет авторитетным (без переадресации / внешнего просмотра).
Я сталкивался с термином "разделение горизонта", который Unbound предоставляет в качестве "представлений", и который подходит для моих нужд, но я не совсем понимаю, как написать с ним несвязанную конфигурацию, подходящую для моих нужд. В большинстве ответов предлагается переключиться на BIND или использовать несколько экземпляров Unbound, что не представляется необходимым в моем небольшом масштабе.
Я полагаю, что псевдокод будет выглядеть примерно так, но я не могу найти хороших рабочих примеров того, как именно его выложить:
[some global config]
server:
chroot: ****
username: ****
directory: ****
pidfile: ****
root-hints: /root.hints
use-syslog: yes
verbosity: 2
do-ip4: yes
do-udp: yes
do-tcp: yes
do-daemonize: yes
serve-expired: no
jostle-timeout: 200
auto-trust-anchor-file: ****
prefetch: no
[some tag defs]
define-tag:client_group_A
define-tag:client_group_B
define-tag:client_group_C
[some tagging rules, a bit like this]
if (client_IP in subnet 10.0.0.0/16) then: tag=client_group_A
if (client_IP in subnet 10.1.0.0/16) then: tag=client_group_B
if (client_IP in subnet 10.2.0.0/16) then: tag=client_group_C
if (client_port == 53) then: tag=client_group_A
if (client_port == 1053) then: tag=client_group_B
[finally, some views, a bit like this]
if (tagged with client_group_A) then: {
"." forwarding rules applicable to client_group_A
local-zone: .....
local-data: .....
...
}
if (tagged with client_group_B) then: {
"." forwarding rules applicable to client_group_B
local-zone: .....
local-data: .....
...
}
if (tagged with client_group_C) then: {
no forwarding rules - authoritative responses only for 2 specific domains
}
if (untagged) then: {
"." forwarding rules applicable to untagged clients
local-zone: .....
local-data: .....
...
}
Как я уже сказал, я уверен, что именно так можно настроить unbound так, как я этого хочу.
Но с точки зрения синтаксиса, как мне написать такое разделенное представление, как фактическую несвязанную конфигурацию? Я действительно ищу аннотированный пример конфигурации для этого вида использования, из которого я могу извлечь уроки. Но я не могу найти один онлайн, который понятен и актуален.