Долгое время слушатель, впервые звонивший сюда.
Я пишу распознаватель DNS со встроенной проверкой DNSSEC и заметил кое-что, что я не могу понять, после нескольких прочтений затронутых проблем.RFC.
Во время разрешения, которое является доменом в TLD uk.
(в частности, co.uk.
), я сталкиваюсь с бесконечным циклом, инициированным валидацией DNSSEC.Для простоты давайте предположим, что процесс уже кэшировал всю корневую зону, поэтому продолжим:
выполнить запрос для co.uk. IN NS
на одном из зарегистрированных uk.
серверов имен
; <<>> DiG 9.10.5 <<>> co.uk. NS @nsa.nic.uk +dnssec
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 54513
;; flags: qr aa rd; QUERY: 1, ANSWER: 9, AUTHORITY: 0, ADDITIONAL: 14
;; WARNING: recursion requested but not available
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags: do; udp: 4096
;; QUESTION SECTION:
;co.uk. IN NS
;; ANSWER SECTION:
co.uk. 172800 IN NS dns3.nic.uk.
co.uk. 172800 IN NS dns2.nic.uk.
co.uk. 172800 IN NS dns1.nic.uk.
co.uk. 172800 IN NS nsb.nic.uk.
co.uk. 172800 IN NS nsc.nic.uk.
co.uk. 172800 IN NS nsa.nic.uk.
co.uk. 172800 IN NS nsd.nic.uk.
co.uk. 172800 IN NS dns4.nic.uk.
co.uk. 172800 IN RRSIG NS 8 2 172800 20180622150723 20180518150505 33621 co.uk. pYoHwxWpkPP6FfIUk14o5qsO0cxA3CaPvfKGT++MuBhW9Ls/7Xnl6WwE pyU3BIDylkVyELe6be6hCwVOfV3VWcT1JW86RJexhRtU74ZHWdVNnjYd +oQVOQ0V/rhDorVSKdA0G+uDyq11T6Z1ecCERlks63GF21aPM9bWEJD6 cOo=
;; ADDITIONAL SECTION:
nsa.nic.uk. 172800 IN A 156.154.100.3
nsb.nic.uk. 172800 IN A 156.154.101.3
nsc.nic.uk. 172800 IN A 156.154.102.3
nsd.nic.uk. 172800 IN A 156.154.103.3
dns1.nic.uk. 172800 IN A 213.248.216.1
dns2.nic.uk. 172800 IN A 103.49.80.1
dns3.nic.uk. 172800 IN A 213.248.220.1
dns4.nic.uk. 172800 IN A 43.230.48.1
nsa.nic.uk. 172800 IN AAAA 2001:502:ad09::3
dns1.nic.uk. 172800 IN AAAA 2a01:618:400::1
dns2.nic.uk. 172800 IN AAAA 2401:fd80:400::1
dns3.nic.uk. 172800 IN AAAA 2a01:618:404::1
dns4.nic.uk. 172800 IN AAAA 2401:fd80:404::1
- перед чем-либо (например, с обработкой правильных элементов ответа) должна произойти проверка DNSSEC;поэтому естественно мы выполняем запрос для DNSKEY, с которым был подписан RRSIG (мы замечаем, что
co.uk.
является подписывающим лицом записей) - , чтобы получить DNSKEY для зоны
co.uk.
, нам нужно знатьуполномоченный NS в этой зоне (напоминание, что мы уже имеем эту информацию, но еще не смогли ее проверить), поэтому мы запускаем запрос co.uk. IN NS
к серверу имен родительской зоны (uk.
), и мыв начале.
Я уверен, что это недостаток дизайна, но не могу понять, что именно.Логически (и ключевой шаг здесь, который запускает цикл в том, что) не следует рассматривать использование RR перед проверкой, и записи делегирования дочерней зоны, опять же, логически, не должны подписываться с DNSKEY дочерней зоны, я думаю, что дажеесли родительская зона также является доверенной для дочерней зоны.
Пожалуйста, помогите и заранее благодарим вас