Domain-Name-System
用於私有 TLD 的優雅 DNSSEC
要使用第三方服務,我可以使用他們的 DNS 名稱來解析他們的域名。不幸的是,他們使用了一些不好的做法,例如使用他們自己編造的 TLD,我們將在
tld
下文中稱其為。為了能夠解析他們的域名,我tld
在本地 DNS 伺服器上設置了區域轉發:zone "tld." { type forward; forward only; forwarders { x.x.x.x; }; };
x.x.x.x
他們的名稱伺服器在哪裡。不幸的是sub.example.tld
,由於 DNSSEC 未能在樹中獲取更高的 DS,因此無法解決,因為它試圖獲取被拒絕的NS
記錄。如以下 tcpdump 所示(希望如此),並帶有相應的 dig 輸出:tld``x.x.x.x
dig @localhost sub.example.tld 22:23:58.104635 IP (tos 0x0, ttl 64, id 11345, offset 0, flags [none], proto UDP (17), length 77) egmaas.35308 > x.x.x.x.domain: [bad udp cksum 0x18b8 -> 0x708c!] 35515+% [1au] A? sub.example.tld. ar: . OPT UDPsize=4096 OK (49) 22:23:58.132413 IP (tos 0x0, ttl 62, id 62124, offset 0, flags [none], proto UDP (17), length 152) x.x.x.x.domain > egmaas.35308: [udp sum ok] 35515*- q: A? sub.example.tld. 1/2/1 sub.example.tld. [10h40m] A x.x.x.1 ns: example.tld. [10h40m] NS dkp-dns001.dmz.local., example.tld. [10h40m] NS dkp-dns002.dmz.local. ar: . OPT UDPsize=4096 OK (124) 22:23:58.132924 IP (tos 0x0, ttl 64, id 11351, offset 0, flags [none], proto UDP (17), length 71) egmaas.52511 > x.x.x.x.domain: [bad udp cksum 0x18b2 -> 0xe141!] 31932+% [1au] DS? example.tld. ar: . OPT UDPsize=4096 OK (43) 22:23:58.160128 IP (tos 0x0, ttl 62, id 62125, offset 0, flags [none], proto UDP (17), length 143) x.x.x.x.domain > egmaas.52511: [udp sum ok] 31932*- q: DS? example.tld. 0/1/1 ns: example.tld. [10h40m] SOA dkp-dns001.dmz.local. admin.tld.org. 2015062301 10800 3600 604800 38400 ar: . OPT UDPsize=4096 OK (115) 22:23:58.174284 IP (tos 0x0, ttl 64, id 11356, offset 0, flags [none], proto UDP (17), length 63) egmaas.57612 > x.x.x.x.domain: [bad udp cksum 0x18aa -> 0x3f69!] 19858+% [1au] NS? tld. ar: . OPT UDPsize=4096 OK (35) 22:23:58.201136 IP (tos 0x0, ttl 62, id 62126, offset 0, flags [none], proto UDP (17), length 63) x.x.x.x.domain > egmaas.57612: [udp sum ok] 19858 Refused- q: NS? tld. 0/0/1 ar: . OPT UDPsize=4096 OK (35) ; <<>> DiG 9.10.3-P4-Ubuntu <<>> @localhost sub.example.tld ; (2 servers found) ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: SERVFAIL, id: 41059 ;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 0, ADDITIONAL: 1 ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 4096 ;; QUESTION SECTION: ;sub.example.tld. IN A ;; Query time: 97 msec ;; SERVER: ::1#53(::1) ;; WHEN: Mon Oct 24 22:23:58 CEST 2016 ;; MSG SIZE rcvd: 49
sub.example.tld
x.x.x.1
的實際正確解析 IP 在哪裡。(錯誤的校驗和可以忽略,因為它們是假陰性)除了在本地 DNS 伺服器上完全禁用 DNSSEC 之外,我還有其他選擇嗎?此外,已經驗證外部方無法更改其 DNS 設置,更不用說實際正確地合併 DNSSEC。
我不相信 BIND 有一個很好的方法來做你要求的事情。
您可以使用添加信任錨
trusted-keys
(本質上,這將添加/覆蓋根據DS
記錄將使用的密鑰),但無法永久刪除信任。據我了解,相關區域未簽名,因此為其添加密鑰作為信任錨將無濟於事。最新版本確實有一種方法可以臨時添加帶有
rndc nta
(和相應的nta-lifetime
/nta-recheck
設置)的負信任錨,但這專門用於臨時解決方法和負信任錨自動過期。