Я использую Unbound 1.9.0 в качестве DNS-сервера с рекурсивным кэшированием для небольшого филиала. Он использует TLS только для cloudflare и имеет прозрачную для типов локальную зону (example.com), переопределяющую некоторые общедоступные записи с общедоступных авторитетных серверов.
Я развертываю записи SSHFP в своей организации, и, поскольку unbound не устанавливает флаг AD (DNSSEC), клиент SSH говорит: «Соответствующий отпечаток ключа хоста найден в DNS», но все равно спрашивает, доверяю ли я отпечатку пальца сервера или нет. Протестировано с ssh -o "VerifyHostKeyDNS yes" [email protected]
Доказательства проблемы в конце этого поста.
https://dnssec.vs.uni-due.de/ test возвращает OK от каждого клиента локальной сети.
Тестовые клиенты используют следующие /etc/resolv.conf
(NetworkManager 1.10.6, без разрешения systemd, без dnsmasq).
поиск example.com
сервер имен 192.168.1.100
Это соответствующие части из /etc/unbound/unbound.conf:
интерфейс: 192.168.1.100
интерфейс: 192.168.1.100@853
tls-порт: 853
ключ службы tls: /etc/unbound/mycert.pem
tls-service-pem: /etc/unbound/mykey.key
максимальный размер udp: 65536
делать-udp: да
сделать TCP: да
TCP-восходящий поток: нет
module-config: "итератор валидатора"
скрыть личность: да
скрытая версия: да
личность: "Не поддерживается"
версия: "0"
qname-минимизация: да
Harden-short-bufsize: да
укрепить-большие-запросы: да
твердеющий клей: да
harden-dnssec-stripped: да
Harden-ниже-nxdomain: да
укрепить-реферальный-путь: да
использовать заглавные буквы для идентификатора: да
ключ предварительной выборки: да
rrset-раундробин: да
минимальные ответы: да
val-clean-дополнительно: да
val-permissive-mode: нет
#ВПЕРЕД
форвард-зона:
вперед-TLS-вверх по течению: да
имя: "."
перенаправленный адрес: 1.1.1.1@853#cloudflare-dns.com
перенаправленный адрес: 1.0.0.1@853#cloudflare-dns.com
#МЕСТНАЯ ЗОНА
локальная зона: example.com typetransparent
локальные данные: "gw.example.com A 192.168.1.1"
local-data-ptr: "192.168.1.1 gw.example.com"
Доказательства проблемы с использованием копать землю
# НЕПОСРЕДСТВЕННЫЙ ЗАПРОС CLOUDFLARE ПОКАЗЫВАЕТ ФЛАГ ОБЪЯВЛЕНИЯ:
user@testclient:~$ dig -t SSHFP test.example.com +dnssec @1.1.1.1
; <<>> DiG 9.11.3-1ubuntu1.15-Ubuntu <<>> -t SSHFP test.example.com +dnssec @1.1.1.1
;; глобальные параметры: +cmd
;; Получил ответ:
;; ->>HEADER<<- код операции: QUERY, статус: NOERROR, id: 54559
;; флаги: qr rd ra ad; ЗАПРОС: 1, ОТВЕТ: 5, АВТОРИЗАЦИЯ: 0, ДОПОЛНИТЕЛЬНО: 1
;; ДОПОЛНИТЕЛЬНЫЙ ПСЕВДОРАЗДЕЛ:
; ЭДНС: версия: 0, флаги: делать; УДП: 1232
;; РАЗДЕЛ ВОПРОСОВ:
;test.example.com. В СШФП
;; РАЗДЕЛ ОТВЕТОВ:
test.example.com. 300 IN SSHFP 1 2 xxx гггг
test.example.com. 300 IN SSHFP 2 2 xxx гггг
test.example.com. 300 IN SSHFP 3 2 xxx гггг
test.example.com. 300 IN SSHFP 4 2 xxx гггг
test.example.com. 300 IN RRSIG SSHFP 13 3 300 20211017181912 20211015161912 34505 example.com. ззз==
;; Время запроса: 19 мс
;; СЕРВЕР: 1.1.1.1#53(1.1.1.1)
;; КОГДА: 16 октября, 19:32:33 CEST 2021
;; РАЗМЕР MSG rcvd: 334
# ФЛАГ ОБЪЯВЛЕНИЯ ОТСУТСТВУЕТ ПРИ ЗАПРОСЕ ЛОКАЛЬНОГО НЕОБЯЗАННОГО:
user@testclient:~$ dig -t SSHFP test.example.com +dnssec @192.168.1.100
; <<>> DiG 9.11.3-1ubuntu1.15-Ubuntu <<>> -t SSHFP test.example.com +dnssec @192.168.1.100
;; глобальные параметры: +cmd
;; Получил ответ:
;; ->>HEADER<<- код операции: QUERY, статус: NOERROR, id: 54559
;; флаги: qr rd ra; ЗАПРОС: 1, ОТВЕТ: 5, АВТОРИЗАЦИЯ: 0, ДОПОЛНИТЕЛЬНО: 1
;; ДОПОЛНИТЕЛЬНЫЙ ПСЕВДОРАЗДЕЛ:
; ЭДНС: версия: 0, флаги: делать; УДП: 1232
;; РАЗДЕЛ ВОПРОСОВ:
;test.example.com. В СШФП
;; РАЗДЕЛ ОТВЕТОВ:
test.example.com. 2670 IN SSHFP 1 2 xxx гггг
test.example.com. 2670 IN SSHFP 2 2 xxx гггг
test.example.com. 2670 IN SSHFP 3 2 xxx гггг
test.example.com. 2670 IN SSHFP 4 2 xxx гггг
test.example.com. 2670 IN RRSIG SSHFP 13 3 300 20211017181912 20211015161912 34505 example.com. ззз==
;; Время запроса: 2 мс
;; СЕРВЕР: 192.168.1.100#53(192.168.1.100)
;; КОГДА: 16 октября, 19:32:33 CEST 2021
;; РАЗМЕР MSG rcvd: 334