大人の事情で最近 DNSSEC にはまってます。 unbound も BIND も、新し目のバージョンは標準対応しているし、標準で有効になっているのですが、どうも BIND で DLV を使おうとすると、うまく動きませんでした。
環境は以下のとおりです。
- Ubuntu 12.04 LTS, kernel 3.2.0-29 amd64
- Unbound 1.4.18
- BIND 9.9.1-P2
- OpenSSL 1.0.1
DNSSEC には、自分の上位ゾーンが署名に対応していない場合に備えて、 DLV(DNS Look-aside Verification )という仕組みがあります。おおまかに言うと、本来はルートゾーンから順繰りにたどっていってドメインの認証をするのですが、その代わりに ドメイン名.dlv.isc.org を問い合わせて、 DS レコードの代わりに DLV レコードを引っ張ってきてドメインの認証をします。これが BIND9 でうまく動きません。
テストには DNS-OARC から提供されているテストレコード を使用しました。
まず unbound 1.4.18 での想定通りの動きです。
~/bind/9.9.1 $ bin/dig -p 1418 @localhost +dnssec a.nsec.dlvtest.dns-oarc.net txt ; <<>> DiG 9.9.1-P2 <<>> -p 1418 @localhost +dnssec a.nsec.dlvtest.dns-oarc.net txt ; (1 server found) ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 58334 ;; flags: qr rd ra ad; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 1 ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags: do; udp: 4096 ;; QUESTION SECTION: ;a.nsec.dlvtest.dns-oarc.net. IN TXT ;; ANSWER SECTION: a.nsec.dlvtest.dns-oarc.net. 917 IN TXT "A is for AXFR" a.nsec.dlvtest.dns-oarc.net. 917 IN RRSIG TXT 5 5 3600 20310611060557 20110616060557 54345 nsec.dlvtest.dns-oarc.net. c4CXn8ejvaiexLq5FuQv6bFrfRlUGF//2jew7rGqICUZAj0lEdLkxu6Y H47SrIjYIb0xwzO2QMnVcLKAvVfuozQ8bq/mgn0x7RHQ32Bh0ZS55scw Wxji8iCHxcr5rzxtkMcAZzjx28A/ir+jKizfF8RCEv3MtPqd7+Y71YCk 0Jw= ;; Query time: 0 msec ;; SERVER: 127.0.0.1#1418(127.0.0.1) ;; WHEN: Sun Sep 2 00:39:06 2012 ;; MSG SIZE rcvd: 267
きちんと引けてますね。 flags に "ad" が入っていれば DNSSEC により認証ができたという意味です。
さて次は BIND9 です。
~/bind/9.9.1 $ bin/dig -p 9912 @localhost +dnssec a.nsec.dlvtest.dns-oarc.net txt ; <<>> DiG 9.9.1-P2 <<>> -p 9912 @localhost +dnssec a.nsec.dlvtest.dns-oarc.net txt ; (1 server found) ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: SERVFAIL, id: 21002 ;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 0, ADDITIONAL: 1 ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags: do; udp: 4096 ;; QUESTION SECTION: ;a.nsec.dlvtest.dns-oarc.net. IN TXT ;; Query time: 1690 msec ;; SERVER: 127.0.0.1#9912(127.0.0.1) ;; WHEN: Sun Sep 2 00:38:28 2012 ;; MSG SIZE rcvd: 56
待たされた挙句 SERVFAIL になってしまいました。ところが、 BIND を再起動した上で次の手順を踏むと、引けるようになります。
- 一つ上のゾーンについて ANY で DNSKEY を取ってくる
- 目的のゾーンについてクエリを投げる
~/bind/9.9.1 $ bin/dig -p 9912 @localhost +dnssec nsec.dlvtest.dns-oarc.net any ; <<>> DiG 9.9.1-P2 <<>> -p 9912 @localhost +dnssec nsec.dlvtest.dns-oarc.net any ; (1 server found) ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 45581 ;; flags: qr rd ra ad; QUERY: 1, ANSWER: 5, AUTHORITY: 0, ADDITIONAL: 1 ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags: do; udp: 4096 ;; QUESTION SECTION: ;nsec.dlvtest.dns-oarc.net. IN ANY ;; ANSWER SECTION: nsec.dlvtest.dns-oarc.net. 3600 IN RRSIG DNSKEY 5 4 3600 20310611060557 20110616060557 23716 nsec.dlvtest.dns-oarc.net. EIBG75iE6v53oOOI1PfWvrvMi0qHYigxrtJMTdMdFUHzZrh71+hZSM88 ILw6UUvotyb9YUH1opjB4iA9Ks8ZBqaSn+AwzbP6pNfMRFiNVlYoLBLq y6cERjpb/6jUr/dxGq/57VThi8BYjiHF1aYv3vgSLhCvfvI2tvnfgxlN YeL286GDojf9bSaQrrHOcWdqivTibiBarxNrAfxHGE3MIpX1eZUGsXL4 aHrMv7n7juy86mfm+lZg7y4JfT32IADygbdTWQQYF8P7TYzPZof38D6s cYnvYCx+m770Uj9Z3z7eTHkk5AgvTDcorNVp/xPFPqGaJ9iwReMoeE9N wngNtA== nsec.dlvtest.dns-oarc.net. 3600 IN RRSIG DNSKEY 5 4 3600 20310611060557 20110616060557 54345 nsec.dlvtest.dns-oarc.net. UiNDgsQdHdb2Tni4d6ebGajNwmxTFk+6gvil9M4/stimqOnL2RQqX6Kb IASX+8z4AzYVQFsb7OCyGugmsBc5ukjTR4at2j3sp6Xjk4r7J5DMAADY ZHTgBua2AOySy/DdVTfTdRK4YbQcHLggw3Nr8r64daD14SFUAL2nGOSk cNM= nsec.dlvtest.dns-oarc.net. 3600 IN DNSKEY 257 3 5 AwEAAejxNtUB1RBO7DZP1NtC2V46LWt5r2XM5ykywFYmeG6LCmn6oafG 27djNKFyCHWAmNmZXaQXg60YAGT8XQdMrmvidPCQqrB7w2ZO0w/rEqVp 74KT46yuTKGBOUFJ4nWLw77mvxG4v8HEhvZUyYspLvBSt/qi72S66SP2 njyymaQbZAT0ZP4NsjO6L8UugDwGJuRdd1qXyOLf9blogviFjdFe7Y8a TV071VCSj7/iTg0sqPlZvy5kZB1Sz+yE/xrvqDA7WIMDpr5nahWPbAzm NigLZFy1+PKF4U4ZTp3t9+kPqWpSBE0NpfaGY79b96JRMRHtGM/+TqWj 79jRZyUE1oU= nsec.dlvtest.dns-oarc.net. 3600 IN DNSKEY 256 3 5 AwEAAfGatB0iI+BHO7JStuOFATy2iRyVDnmdCsdDTgtINKtcIqKWbw7w xjQ3dXhUSrjVVfEHJIScxiyjBJ0u1mG4FhY0zGusenn5R6RuhTAjZ/Ow wvp+1X1orWdwUVncYS3a+sGfyr4XBbFQSSB0HLSZxzskPbNQ1NR8fX2L iy8V89Zv nsec.dlvtest.dns-oarc.net. 3600 IN DNSKEY 256 3 5 AwEAAamEbJrkD6whOxQH7y+JhH5AH5kwjXfG43p9SJ/j0d+58tcK2cuQ 4rpXGD0KybG8rte7F0ja0Dlv9PFhL2UqKrdtk43ZLwZjAnotcTODqDog D8EHEOTwt2LMy9FGTf40IgoUQfG3PxcJsAkNOswqw41vu5Te4mzzDhrh AQWRldL5 ;; Query time: 1578 msec ;; SERVER: 127.0.0.1#9912(127.0.0.1) ;; WHEN: Sun Sep 2 00:37:11 2012 ;; MSG SIZE rcvd: 1124 ~/bind/9.9.1 $ bin/dig -p 9912 @localhost +dnssec a.nsec.dlvtest.dns-oarc.net txt ; <<>> DiG 9.9.1-P2 <<>> -p 9912 @localhost +dnssec a.nsec.dlvtest.dns-oarc.net txt ; (1 server found) ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 25080 ;; flags: qr rd ra ad; QUERY: 1, ANSWER: 2, AUTHORITY: 3, ADDITIONAL: 2 ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags: do; udp: 4096 ;; QUESTION SECTION: ;a.nsec.dlvtest.dns-oarc.net. IN TXT ;; ANSWER SECTION: a.nsec.dlvtest.dns-oarc.net. 3600 IN TXT "A is for AXFR" a.nsec.dlvtest.dns-oarc.net. 3600 IN RRSIG TXT 5 5 3600 20310611060557 20110616060557 54345 nsec.dlvtest.dns-oarc.net. c4CXn8ejvaiexLq5FuQv6bFrfRlUGF//2jew7rGqICUZAj0lEdLkxu6Y H47SrIjYIb0xwzO2QMnVcLKAvVfuozQ8bq/mgn0x7RHQ32Bh0ZS55scw Wxji8iCHxcr5rzxtkMcAZzjx28A/ir+jKizfF8RCEv3MtPqd7+Y71YCk 0Jw= ;; AUTHORITY SECTION: nsec.dlvtest.dns-oarc.net. 3600 IN NS ns.dns-oarc.net. nsec.dlvtest.dns-oarc.net. 3600 IN NS sns-pb.isc.org. nsec.dlvtest.dns-oarc.net. 3600 IN RRSIG NS 5 4 3600 20310611060557 20110616060557 54345 nsec.dlvtest.dns-oarc.net. E0FInFhHCmZ/C6jh8+QZ0HP5V4GYXBLvEbSiCYTVJgsvRXIbBdzAG4MN jUgMFnrSjyCKOGSelrD4whnbOExD6MdtY0Vwq6xMt1XIpjRc6JoG8ja6 DL5qwlqb5NtRQCV2Z2FDT6QuXtyr6ODh7amj+YSWCOW5cS25DYmBcsnC 2UU= ;; ADDITIONAL SECTION: ns.dns-oarc.net. 172791 IN A 149.20.58.65 ;; Query time: 118 msec ;; SERVER: 127.0.0.1#9912(127.0.0.1) ;; WHEN: Sun Sep 2 00:37:18 2012 ;; MSG SIZE rcvd: 513
"ad" も立っていて、正常に認証できていると示されています。ログはこんな感じです。
client 127.0.0.1#39784 (a.nsec.dlvtest.dns-oarc.net): query: a.nsec.dlvtest.dns-oarc.net IN TXT +ED (127.0.0.1) validating @0x7f8a5802a9c0: a.nsec.dlvtest.dns-oarc.net TXT: no valid signature found validating @0x7f8a5802a9c0: a.nsec.dlvtest.dns-oarc.net TXT: no valid signature found validating @0x7f8a58042860: nsec.dlvtest.dns-oarc.net SOA: no valid signature found validating @0x7f8a58042860: nsec.dlvtest.dns-oarc.net SOA: no valid signature found validating @0x7f8a58042860: a.nsec.dlvtest.dns-oarc.net NSEC: no valid signature found validating @0x7f8a58042860: a.nsec.dlvtest.dns-oarc.net NSEC: no valid signature found validating @0x7f8a58042860: nsec.dlvtest.dns-oarc.net SOA: no valid signature found validating @0x7f8a58042860: nsec.dlvtest.dns-oarc.net SOA: no valid signature found validating @0x7f8a58042860: a.nsec.dlvtest.dns-oarc.net NSEC: no valid signature found validating @0x7f8a58042860: a.nsec.dlvtest.dns-oarc.net NSEC: no valid signature found error (no valid RRSIG) resolving 'a.nsec.dlvtest.dns-oarc.net/DS/IN': 192.5.4.1#53 validating @0x7f8a60056310: nsec.dlvtest.dns-oarc.net SOA: no valid signature found validating @0x7f8a60056310: nsec.dlvtest.dns-oarc.net SOA: no valid signature found validating @0x7f8a60054670: a.nsec.dlvtest.dns-oarc.net NSEC: no valid signature found validating @0x7f8a60054670: a.nsec.dlvtest.dns-oarc.net NSEC: no valid signature found validating @0x7f8a60054670: nsec.dlvtest.dns-oarc.net SOA: no valid signature found validating @0x7f8a60054670: nsec.dlvtest.dns-oarc.net SOA: no valid signature found validating @0x7f8a60054670: a.nsec.dlvtest.dns-oarc.net NSEC: no valid signature found validating @0x7f8a60054670: a.nsec.dlvtest.dns-oarc.net NSEC: no valid signature found error (no valid RRSIG) resolving 'a.nsec.dlvtest.dns-oarc.net/DS/IN': 149.20.58.65#53 error (no valid DS) resolving 'a.nsec.dlvtest.dns-oarc.net/TXT/IN': 149.20.58.65#53 validating @0x7f8a580337d0: a.nsec.dlvtest.dns-oarc.net TXT: no valid signature found validating @0x7f8a580337d0: a.nsec.dlvtest.dns-oarc.net TXT: no valid signature found validating @0x7f8a580337d0: a.nsec.dlvtest.dns-oarc.net TXT: bad cache hit (a.nsec.dlvtest.dns-oarc.net/DS) error (broken trust chain) resolving 'a.nsec.dlvtest.dns-oarc.net/TXT/IN': 192.5.4.1#53
もう一つのレコード、 a.nsec3.dlvtest.dns-oarc.net は両方とも正常に引くことができます。
BIND の設定ファイルには
dnssec-enable yes; dnssec-validation auto; dnssec-lookaside auto;
と書いてあります。
正直お手上げです... BIND の挙動がおかしいように思えるんですが、どうなんでしょう。検索してもよくわかりませんでした。
0 件のコメント:
コメントを投稿