Может кто-нибудь объяснить простым языком значение флага отказа в NSEC3 RR. Я прочитал RFC 5155 и ничего не понимаю.
Записи NSEC3 могут быть созданы одним из двух способов: для всех делегаций или только для безопасных делегаций. Флаг отказа сообщает вам, какой метод используется. Причина установки флага состоит в том, чтобы позволить очень большим зонам, в основном состоящим из делегаций (то есть TLD), не создавать записи NSEC3 и соответствующие им записи RRSIG для каждого отдельного делегирования. Это важный домен верхнего уровня, такой как .com, с ~ 100000000 делегаций; подписание каждой отдельной делегации сделало бы чрезвычайно массивный файл зоны!
Нет никакой разницы между безопасным делегированием, когда бит отказа установлен или нет.
Для небезопасного делегирования без установленного бита отказа вы получаете записи NS делегирования плюс NSEC3 и RRSIG для этого делегирования. Вот пример для house.gov, который представляет собой небезопасное делегирование (без предоставления записи DS) в зоне .gov, в котором не используется бит отказа:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 9019
;; flags: qr rd; QUERY: 1, ANSWER: 0, AUTHORITY: 4, ADDITIONAL: 3
;; WARNING: recursion requested but not available
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 1472
;; QUESTION SECTION:
;www.house.gov. IN A
;; AUTHORITY SECTION:
house.gov. 86400 IN NS chyron.house.gov.
house.gov. 86400 IN NS mercury.house.gov.
56j5jp60kq681hl5vtv287p7s16spmcp.gov. 86400 IN NSEC3 1 0 8 4C44934802D3 56K48N2V1IV9H7F4HJ05N62QI9C29JV2 NS
56j5jp60kq681hl5vtv287p7s16spmcp.gov. 86400 IN RRSIG NSEC3 7 2 86400 20120516040019 20120511040019 35464 gov. OlOx3rG7ShAptVt1XTqcXLOtInxEqyfg1b6+vBlWiqSBZ8pkfk/IOFOm 49lbKkrjY2ibw98GaMdjUYCUUDKOX+eTe+HTfxginIfJ3FWOxB+TPFn1 /UEu4QAgEkWdgpT6NbCge9vWnhSxTCYNxTolVuhWq+sp59zodbAMERVi rIdFyoNpX1zijU1tjm9j8a+jFeN7tjf2fgzJQPpk/qNMgmgfp2GerPUX 5kVkhjoXPgRkLmy2W5PwbgWP4zOTRFuLxz0PsRfoqLUHYYEXPMQ0jimW ESl1LDRnHjdQDTD1qYPBCiVNxufaewZMGhTwP901CH3FLr6Gku7ptYkD 5ukEFQ==
Если мы вычислим хэш NSEC3 с учетом соли 4C44934802D3 и 8 дополнительных итераций, это будет точное совпадение из-за того, что записи NSEC3 генерируются для каждого делегирования:
$ nsec3.py -i 8 -s 4C44934802D3 house.gov
56J5JP60KQ681HL5VTV287P7S16SPMCP house.gov
Для небезопасного делегирования с установленным битом отказа вы не получите запись NSEC3, которая предоставляет список типов записей ресурсов, доступных для этого домена. Вместо этого вы получите «наиболее полное доказательство», как описано в разделе 7.2.1 из RFC 5155:
Этот пример представляет собой небезопасное делегирование в зоне .com, в котором используется флаг отказа:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 48336
;; flags: qr rd; QUERY: 1, ANSWER: 0, AUTHORITY: 9, ADDITIONAL: 6
;; WARNING: recursion requested but not available
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags: do; udp: 512
;; QUESTION SECTION:
;www.yahoo.com. IN A
;; AUTHORITY SECTION:
yahoo.com. 172800 IN NS ns1.yahoo.com.
yahoo.com. 172800 IN NS ns5.yahoo.com.
yahoo.com. 172800 IN NS ns2.yahoo.com.
yahoo.com. 172800 IN NS ns3.yahoo.com.
yahoo.com. 172800 IN NS ns4.yahoo.com.
CK0POJMG874LJREF7EFN8430QVIT8BSM.com. 86400 IN NSEC3 1 1 0 - CK0RFQAOES8CTVNVNH4G6Q85NOQAQ8I9 NS SOA RRSIG DNSKEY NSEC3PARAM
CK0POJMG874LJREF7EFN8430QVIT8BSM.com. 86400 IN RRSIG NSEC3 8 2 86400 20120515041703 20120508030703 23339 com. RiL6MRN/fPVBjpyANDKurwSgdwgkdsRdB4ADWK7YTJeY2KNnBpjOX+FT +2a/XZR2ylP+G47L8k+DrJCHuAkr1wOYcOj7goiqErDwu+Cm5HZosAL2 EyRqNOHHgTDXlG6PGgyEe2DO0jWgmkyYX7+o0jpYP0m6QNDaRuf166np nkA=
GP1945PGQIOH4O61BM3RUL2EVN04SPIA.com. 86400 IN NSEC3 1 1 0 - GPLVOUV0V27L8DPOOBNLQU1VHFRMMPUT NS DS RRSIG
GP1945PGQIOH4O61BM3RUL2EVN04SPIA.com. 86400 IN RRSIG NSEC3 8 2 86400 20120518085726 20120511074726 23339 com. VmtH/BYw8H98FJM7YLxLIG0cfReERp5eNh3+bCu7EfWgSuWXn6OXdd4b rIMloxDXe9v/fdyd7RqwDiNLMPMhp8wRJOhKcqT0MczHFEUzy0SnXM3d SABY5d1AJr8YJNL+ZOgbiT445gn7HBET3OL+G5MfZPti+yhBnUvGlPYx UQ8=
Первая запись NSEC3 предназначена для самого домена com (ее довольно легко обнаружить, учитывая, что у нее есть SOA, DNSKEY и NSEC3PARAM в списке типов RR. Это ближайший доказуемый охватывающий.
Вторая запись NSEC3 предназначена для "покрытия" yahoo.com. Это доказывает, что запись NSEC3 для yahoo.com не существует, так как это небезопасное делегирование.
Вот рассчитанные хеши для сравнения:
$ nsec3.py com yahoo.com
CK0POJMG874LJREF7EFN8430QVIT8BSM com
GPIOV963K81D6QM6IOTOUFUAPRDA6K3V yahoo.com
Если вы не используете зону TLD или другую зону с огромным количеством делегаций, нет необходимости использовать флаг отказа.