Как проверить, что все разрешенные IP-адреса доменов получены из внешнего DNS-резольвера, когда Unbound настроен на перенаправление запросов доменов?

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

Я настроил Unbound так, чтобы он:

  1. прослушивал запросы доменов на всех интерфейсах в локальной сети,
  2. перенаправлял эти запросы доменов на внешний DNS-резолвер через TLS,
  3. получал разрешенные IP-адреса доменов от внешнего DNS-резолвера и возвращал их соответствующим клиентам.

Как мне проверить, что такая конфигурация работает? Особенно, как мне проверить, что:

  1. Unbound перенаправил запросы доменов на желаемый внешний DNS-резолвер через TLS?
  2. Разрешенные IP-адреса домена получены от внешнего DNS-резолвера и не были разрешены самим Unbound?

Ниже приведены два результата от команды dig по запросу google.com. Как я могу использовать эти результаты для выполнения вышеупомянутых проверок?

root@DNS:/etc/unbound# dig google.com A @192.168.1.50 -p 3000

; <<>> DiG 9.18.28-0ubuntu0.24.04.1-Ubuntu <<>> google.com A @192.168.1.50 -p 3000
;; глобальные опции: +cmd
;; Получен ответ:
;; ->>HEADER<<- opcode: QUERY, статус: NOERROR, id: 22452
;; флаги: qr rd ra; QUERY: 1, ANSWER: 6, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: версия: 0, флаги:; udp: 1232
;; СЕКЦИЯ ВОПРОСА:
;google.com.            IN  A

;; СЕКЦИЯ ОТВЕТА:
google.com.     300 IN  A   142.251.175.138
google.com.     300 IN  A   142.251.175.100
google.com.     300 IN  A   142.251.175.113
google.com.     300 IN  A   142.251.175.101
google.com.     300 IN  A   142.251.175.139
google.com.     300 IN  A   142.251.175.102

;; Время запроса: 12 мс
;; СЕРВЕР: 192.168.1.50#3000(192.168.1.50) (UDP)
;; ДАТА: Wed Oct 30 14:04:16 UTC 2024
;; РАЗМЕР СООБЩЕНИЯ, полученного: 135

root@DNS:/etc/unbound# dig google.com A @192.168.1.50 -p 3000

; <<>> DiG 9.18.28-0ubuntu0.24.04.1-Ubuntu <<>> google.com A @192.168.1.50 -p 3000
;; глобальные опции: +cmd
;; Получен ответ:
;; ->>HEADER<<- opcode: QUERY, статус: NOERROR, id: 39764
;; флаги: qr rd ra; QUERY: 1, ANSWER: 6, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: версия: 0, флаги:; udp: 1232
;; СЕКЦИЯ ВОПРОСА:
;google.com.            IN  A

;; СЕКЦИЯ ОТВЕТА:
google.com.     300 IN  A   142.251.175.139
google.com.     300 IN  A   142.251.175.113
google.com.     300 IN  A   142.251.175.100
google.com.     300 IN  A   142.251.175.101
google.com.     300 IN  A   142.251.175.138
google.com.     300 IN  A   142.251.175.102

;; Время запроса: 184 мс
;; СЕРВЕР: 192.168.1.50#3000(192.168.1.50) (UDP)
;; ДАТА: Wed Oct 30 14:05:30 UTC 2024
;; РАЗМЕР СООБЩЕНИЯ, полученного: 135

Ниже приведены журналы в unbound.log с verbosity: 3 после перезапуска unbound.service и выполнения вышеуказанной команды dig дважды. Я вижу, что внешний DNS-резолвер упоминается, но не могу понять, какая строка показывает, что он разрешил домен и вернул результаты обратно в unbound.

[1730296502] unbound[6506:0] info: служба остановлена (unbound 1.19.2).
[1730296502] unbound[6506:0] info: статистика сервера для потока 0: 0 запросов, 0 ответов из кэша, 0 рекурсий, 0 предварительных выборок, 0 отклонено по ограничению по IP
[1730296502] unbound[6506:0] info: статистика сервера для потока 0: максимальный размер списка запросов 0 средний 0 превышен 0 толчка 0
[1730296502] unbound[6506:0] info: статистика сервера для потока 1: 0 запросов, 0 ответов из кэша, 0 рекурсий, 0 предварительных выборок, 0 отклонено по ограничению по IP
[1730296502] unbound[6506:0] info: статистика сервера для потока 1: максимальный размер списка запросов 0 средний 0 превышен 0 толчка 0
[1730296502] unbound[6506:0] info: статистика сервера для потока 2: 0 запросов, 0 ответов из кэша, 0 рекурсий, 0 предварительных выборок, 0 отклонено по ограничению по IP
[1730296502] unbound[6506:0] info: статистика сервера для потока 2: максимальный размер списка запросов 0 средний 0 превышен 0 толчка 0
[1730296502] unbound[6506:0] info: статистика сервера для потока 3: 0 запросов, 0 ответов из кэша, 0 рекурсий, 0 предварительных выборок, 0 отклонено по ограничению по IP
[1730296502] unbound[6506:0] info: статистика сервера для потока 3: максимальный размер списка запросов 0 средний 0 превышен 0 толчка 0
[1730296503] unbound[6658:0] debug: конфигурация модуля: "subnetcache validator iterator"
[1730296503] unbound[6658:0] notice: инициализация модуля 0: subnetcache
[1730296503] unbound[6658:0] warning: subnetcache: serve-expired установлен, но не работает для данных, исходящих из кэша подсетевого модуля.
[1730296503] unbound[6658:0] warning: subnetcache: предварительный выбор установлен, но не работает для данных, исходящих из кэша подсетевого модуля.
[1730296503] unbound[6658:0] debug: subnetcache: опция зарегистрирована (8)
[1730296503] unbound[6658:0] notice: инициализация модуля 1: validator
[1730296503] unbound[6658:0] notice: инициализация модуля 2: iterator
[1730296503] unbound[6658:0] debug: политика выборки цели для уровня 0 составляет 3
[1730296503] unbound[6658:0] debug: политика выборки цели для уровня 1 составляет 2
[1730296503] unbound[6658:0] debug: политика выборки цели для уровня 2 составляет 1
[1730296503] unbound[6658:0] debug: политика выборки цели для уровня 3 составляет 0
[1730296503] unbound[6658:0] debug: политика выборки цели для уровня 4 составляет 0
[1730296503] unbound[6658:0] debug: Список серверов зоны пересылки:
[1730296503] unbound[6658:0] info: DelegationPoint<dns.quad9.net.>: 0 имен (0 отсутствует), 4 адреса (0 результата, 4 доступно) родительский NS
[1730296503] unbound[6658:2] debug: Список серверов зоны пересылки:
[1730296503] unbound[6658:2] info: DelegationPoint<dns.quad9.net.>: 0 имен (0 отсутствует), 4 адреса (0 результата, 4 доступно) родительский NS
[1730296503] unbound[6658:0] debug: кэш памяти msg=66104 rrset=66104 infra=7952 val=66400 subnet=74536
[1730296503] unbound[6658:1] debug: Список серверов зоны пересылки:
[1730296503] unbound[6658:1] info: DelegationPoint<dns.quad9.net.>: 0 имен (0 отсутствует), 4 адреса (0 результата, 4 доступно) родительский NS
[1730296503] unbound[6658:0] info: начало работы службы (unbound 1.19.2).
[1730296503] unbound[6658:2] debug: кэш памяти msg=66104 rrset=66104 infra=7952 val=66400 subnet=74536
[1730296503] unbound[6658:3] debug: Список серверов зоны пересылки:
[1730296503] unbound[6658:3] info: DelegationPoint<dns.quad9.net.>: 0 имен (0 отсутствует), 4 адреса (0 результата, 4 доступно) родительский NS
[1730296503] unbound[6658:1] debug: кэш памяти msg=66104 rrset=66104 infra=7952 val=66400 subnet=74536
[1730296503] unbound[6658:3] debug: кэш памяти msg=66104 rrset=66104 infra=7952 val=66400 subnet=74536
[1730297056] unbound[5388:0] debug: subnetcache[module 0] operate: extstate:module_state_initial event:module_event_new
[1730297056] unbound[5388:0] info: subnetcache operate: query google.com. A IN
[1730297056] unbound[5388:0] debug: validator[module 1] operate: extstate:module_state_initial event:module_event_pass
[1730297056] unbound[5388:0] info: validator operate: query google.com. A IN
[1730297056] unbound[5388:0] debug: iterator[module 2] operate: extstate:module_state_initial event:module_event_pass
[1730297056] unbound[5388:0] info: resolving google.com. A IN
[1730297056] unbound[5388:0] info: resolving (init part 2):  google.com. A IN
[1730297056] unbound[5388:0] info: resolving (init part 3):  google.com. A IN
[1730297056] unbound[5388:0] info: processQueryTargets: google.com. A IN
[1730297056] unbound[5388:0] info: sending query: google.com. A IN
[1730297056] unbound[5388:0] debug: sending to target: <google.com.> 216.239.38.10#53
[1730297056] unbound[5388:0] debug: кэш памяти msg=70045 rrset=100203 infra=29147 val=67208 subnet=74536
[1730297056] unbound[5388:0] debug: iterator[module 2] operate: extstate:module_wait_reply event:module_event_reply
[1730297056] unbound[5388:0] info: iterator operate: query google.com. A IN
[1730297056] unbound[5388:0] info: response for google.com. A IN
[1730297056] unbound[5388:0] info: reply from <google.com.> 216.239.38.10#53
[1730297056] unbound[5388:0] info: query response was ANSWER
[1730297056] unbound[5388:0] info: finishing processing for google.com. A IN
[1730297056] unbound[5388:0] debug: validator[module 1] operate: extstate:module_wait_module event:module_event_moddone
[1730297056] unbound[5388:0] info: validator operate: query google.com. A IN
[1730297056] unbound[5388:0] debug: subnetcache[module 0] operate: extstate:module_wait_module event:module_event_moddone
[1730297056] unbound[5388:0] info: subnetcache operate: query google.com. A IN
[1730297056] unbound[5388:0] debug: кэш памяти msg=70045 rrset=100203 infra=29147 val=67208 subnet=74536
[1730297130] unbound[5379:0] debug: subnetcache[module 0] operate: extstate:module_state_initial event:module_event_new
[1730297130] unbound[5379:0] info: subnetcache operate: query google.com. A IN
[1730297130] unbound[5379:0] debug: validator[module 1] operate: extstate:module_state_initial event:module_event_pass
[1730297130] unbound[5379:0] info: validator operate: query google.com. A IN
[1730297130] unbound[5379:0] debug: iterator[module 2] operate: extstate:module_state_initial event:module_event_pass
[1730297130] unbound[5379:0] info: resolving google.com. A IN
[1730297130] unbound[5379:0] info: resolving (init part 2):  google.com. A IN
[1730297130] unbound[5379:0] info: resolving (init part 3):  google.com. A IN
[1730297130] unbound[5379:0] info: processQueryTargets: google.com. A IN
[1730297130] unbound[5379:0] info: sending query: google.com. A IN
[1730297130] unbound[5379:0] debug: sending to target: <com.> 2001:503:83eb::30#53
[1730297130] unbound[5379:0] debug: кэш памяти msg=78073 rrset=130165 infra=41184 val=69264 subnet=74536
[1730297130] unbound[5379:0] debug: iterator[module 2] operate: extstate:module_wait_reply event:module_event_noreply
[1730297130] unbound[5379:0] info: iterator operate: query google.com. A IN
[1730297130] unbound[5379:0] info: processQueryTargets: google.com. A IN
[1730297130] unbound[5379:0] info: sending query: google.com. A IN
[1730297130] unbound[5379:0] debug: sending to target: <com.> 192.41.162.30#53
[1730297130] unbound[5379:0] debug: кэш памяти msg=78073 rrset=130165 infra=41184 val=69264 subnet=74536
[1730297130] unbound[5379:0] debug: iterator[module 2] operate: extstate:module_wait_reply event:module_event_reply
[1730297130] unbound[5379:0] info: iterator operate: query google.com. A IN
[1730297130] unbound[5379:0] info: response for google.com. A IN
[1730297130] unbound[5379:0] info: reply from <com.> 192.41.162.30#53
[1730297130] unbound[5379:0] info: query response was REFERRAL
[1730297130] unbound[5379:0] info: processQueryTargets: google.com. A IN
[1730297130] unbound[5379:0] info: sending query: google.com. A IN
[1730297130] unbound[5379:0] debug: sending to target: <google.com.> 216.239.32.10#53
[1730297130] unbound[5379:0] debug: кэш памяти msg=78073 rrset=132972 infra=41184 val=69414 subnet=74536
[1730297130] unbound[5379:0] debug: iterator[module 2] operate: extstate:module_wait_reply event:module_event_reply
[1730297130] unbound[5379:0] info: iterator operate: query google.com. A IN
[1730297130] unbound[5379:0] info: response for google.com. A IN
[1730297130] unbound[5379:0] info: reply from <google.com.> 216.239.32.10#53
[1730297130] unbound[5379:0] info: query response was ANSWER
[1730297130] unbound[5379:0] info: finishing processing for google.com. A IN
[1730297130] unbound[5379:0] debug: validator[module 1] operate: extstate:module_wait_module event:module_event_moddone
[1730297130] unbound[5379:0] info: validator operate: query google.com. A IN
[1730297130] unbound[5379:0] debug: subnetcache[module 0] operate: extstate:module_wait_module event:module_event_moddone
[1730297130] unbound[5379:0] info: subnetcache operate: query google.com. A IN
[1730297130] unbound[5379:0] debug: кэш памяти msg=78333 rrset=133364 infra=41492 val=69414 subnet=74536

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

Для проверки корректности конфигурации Unbound, который настроен на перенаправление доменных запросов к внешнему DNS-резолверу через TLS, необходимо выполнить несколько важных шагов. Мы сосредоточимся на следующем:

  1. Проверка перенаправления запросов к внешнему DNS-резолверу через TLS.
  2. Подтверждение того, что полученные IP-адреса действительно поступают от внешнего DNS-резолвера.

1. Проверка перенаправления запросов через TLS

Для проверки того, что Unbound корректно перенаправляет DNS-запросы на указанный вами внешний DNS-резолвер, воспользуйтесь логами Unbound и инструментариями для диагностики, такими как dig.

Использование команды dig

Вы уже выполнили несколько запросов к вашему локальному серверу DNS с помощью команды dig. Результаты показывают IP-адреса, которые возвращает ваш сервер (в данном случае 192.168.1.50). Чтобы проверить, к какому именно внешнему резолверу отправляются запросы, вы можете сделать следующее:

  • Убедитесь, что ваш конфигурационный файл Unbound (обычно unbound.conf) содержит правильные настройки для указания на перенаправление DNS-запросов на желаемый внешний сервер, например, dns.quad9.net или другой.

  • В логах Unbound найдите строки, которые содержат информацию об отправленных запросах на внешний сервер. Например, ищите строки, подобные:

debug: sending to target: <google.com.> 216.239.38.10#53

Эта строка указывает, что запрос к google.com отправляется на IP-адрес 216.239.38.10 — известный IP-адрес одного из DNS-серверов Google. Убедитесь, что такие записи присутствуют в логах после выполнения ваших команд dig.

2. Проверка, что разрешенные IP-адреса получены от внешнего DNS-резолвера

Далее, чтобы убедиться, что полученные IP-адреса действительно являются результатом обработки внешнего DNS-резолвера и не были кэшированы локально, выполните следующие шаги:

  • Сравните результаты с внешними DNS-сервисами: Например, выполните dig google.com @8.8.8.8 (где 8.8.8.8 — один из DNS-серверов Google). Сравните полученные IP-адреса с теми, которые возвращает ваш Unbound. Если они совпадают, это подтверждает, что ваш Unbound работает корректно, перенаправляя запросы к внешнему резолверу.

  • Изучите логи Unbound более внимательно. Обратите внимание на следующие строки в вашем логе, которые показывают полученные ответы от внешнего сервера:

    info: reply from <google.com.> 216.239.32.10#53

    Это указывает, что ответ был получен от указанного адреса, что является подтверждением успешного запроса к внешнему DNS.

Заключение

Следуя приведенным выше шагам, вы можете эффективно проверить, что Unbound настроен правильно и выполняет задания по перенаправлению запросов. Убедитесь, что логирование включено на достаточном уровне, чтобы получить необходимые выводы и следить за работой DNS-сервера в будущем. Помните, что независимые проверки и сопоставление результатов между несколькими источниками — это ключ к поддержанию оптимальной работы вашей DNS-инфраструктуры.

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

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