Я хочу расширить свой 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 так, как я этого хочу.

Но с точки зрения синтаксиса, как мне написать такое разделенное представление, как фактическую несвязанную конфигурацию? Я действительно ищу аннотированный пример конфигурации для этого вида использования, из которого я могу извлечь уроки. Но я не могу найти один онлайн, который понятен и актуален.

0