実験5 BIND 9.2.3 より前の BIND をキャッシュに使って問題が発生するケース
実験4とほぼ同様であるが、キャッシュサーバが 9.2.2-P3 (2003年製)であった場合を試す (dig は 9.8.4-P1) -- tss 2013-11-03 09:50:44
以下の実験結果のような「キャッシュの NS + A のTTL がリセットされる現象」が BIND 9.2.3 において解消されたとされている。
最初、委譲は移行元の 172.16.17.1 に向けてある。
root@server3:/etc/namedb # dig www.bind.nom @192.168.255.1 +norec ; <<>> DiG 9.8.4-P1 <<>> www.bind.nom @192.168.255.1 +norec ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 42362 ;; flags: qr; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 1 ;; QUESTION SECTION: ;www.bind.nom. IN A ;; AUTHORITY SECTION: bind.nom. 600 IN NS ns.bind.nom. ;; ADDITIONAL SECTION: ns.bind.nom. 300 IN A 172.16.17.1 ;; Query time: 0 msec ;; SERVER: 192.168.255.1#53(192.168.255.1) ;; WHEN: Sat Nov 2 14:13:19 2013 ;; MSG SIZE rcvd: 63
ここで再帰検索して結果がキャッシュされる。
root@server3:/etc/namedb # dig www.bind.nom ; <<>> DiG 9.8.4-P1 <<>> www.bind.nom ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 8587 ;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 0 ;; QUESTION SECTION: ;www.bind.nom. IN A ;; ANSWER SECTION: www.bind.nom. 60 IN A 172.16.17.1 ;; AUTHORITY SECTION: bind.nom. 180 IN NS ns.bind.nom. ;; Query time: 1 msec ;; SERVER: 172.16.33.1#53(172.16.33.1) ;; WHEN: Sat Nov 2 14:13:25 2013 ;; MSG SIZE rcvd: 63
その後、委譲先を移行先のサーバ(172.16.1.1)へ切り替える。ただし、旧ゾーンサーバ (172.16.17.1) はそのまま運用を続ける。
root@server3:/etc/namedb # dig www.bind.nom @192.168.255.1 +norec ; <<>> DiG 9.8.4-P1 <<>> www.bind.nom @192.168.255.1 +norec ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 52338 ;; flags: qr; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 1 ;; QUESTION SECTION: ;www.bind.nom. IN A ;; AUTHORITY SECTION: bind.nom. 600 IN NS ns.bind.nom. ;; ADDITIONAL SECTION: ns.bind.nom. 300 IN A 172.16.1.1 ;; Query time: 0 msec ;; SERVER: 192.168.255.1#53(192.168.255.1) ;; WHEN: Sat Nov 2 14:13:49 2013 ;; MSG SIZE rcvd: 63
キャッシュが切れるのを待つ。
root@server3:/etc/namedb # dig www.bind.nom ; <<>> DiG 9.8.4-P1 <<>> www.bind.nom ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 17127 ;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 0 ;; QUESTION SECTION: ;www.bind.nom. IN A ;; ANSWER SECTION: www.bind.nom. 2 IN A 172.16.17.1 ;; AUTHORITY SECTION: bind.nom. 122 IN NS ns.bind.nom. ;; Query time: 0 msec ;; SERVER: 172.16.33.1#53(172.16.33.1) ;; WHEN: Sat Nov 2 14:14:23 2013 ;; MSG SIZE rcvd: 63
www.bind.nom のキャッシュが切れても NS+A のキャッシュが旧ゾーンサーバ 172.16.17.1 を向いていて、古いゾーンの応答を得る。この際、NS+A の TTL も更新される。(このバージョン BIND 9.2.2-P3 では additional A は見えないが更新されているはずの動作をしている)
root@server3:/etc/namedb # dig www.bind.nom ; <<>> DiG 9.8.4-P1 <<>> www.bind.nom ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 14541 ;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 0 ;; QUESTION SECTION: ;www.bind.nom. IN A ;; ANSWER SECTION: www.bind.nom. 60 IN A 172.16.17.1 ;; AUTHORITY SECTION: bind.nom. 180 IN NS ns.bind.nom. ;; Query time: 1 msec ;; SERVER: 172.16.33.1#53(172.16.33.1) ;; WHEN: Sat Nov 2 14:14:26 2013 ;; MSG SIZE rcvd: 63 root@server3:/etc/namedb # dig www.bind.nom ; <<>> DiG 9.8.4-P1 <<>> www.bind.nom ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 23566 ;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 0 ;; QUESTION SECTION: ;www.bind.nom. IN A ;; ANSWER SECTION: www.bind.nom. 2 IN A 172.16.17.1 ;; AUTHORITY SECTION: bind.nom. 122 IN NS ns.bind.nom. ;; Query time: 0 msec ;; SERVER: 172.16.33.1#53(172.16.33.1) ;; WHEN: Sat Nov 2 14:15:24 2013 ;; MSG SIZE rcvd: 63 root@server3:/etc/namedb # dig www.bind.nom ; <<>> DiG 9.8.4-P1 <<>> www.bind.nom ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 51772 ;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 0 ;; QUESTION SECTION: ;www.bind.nom. IN A ;; ANSWER SECTION: www.bind.nom. 60 IN A 172.16.17.1 ;; AUTHORITY SECTION: bind.nom. 180 IN NS ns.bind.nom. ;; Query time: 0 msec ;; SERVER: 172.16.33.1#53(172.16.33.1) ;; WHEN: Sat Nov 2 14:15:26 2013 ;; MSG SIZE rcvd: 63
検索し続けると永遠に新しいゾーンサーバにはたどり着かず、「浸透しない」という発言につながるだろう。
補足
なお、このバージョンでは、NS+A のキャッシュが残っているうちに旧ゾーンサーバの設定を消すとしばらく SERVFAIL が続くことになる。(最近のバージョンのように上位から探索し直さない)
root@server3:/etc/namedb # dig www.bind.nom ; <<>> DiG 9.8.4-P1 <<>> www.bind.nom ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 4770 ;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 0 ;; QUESTION SECTION: ;www.bind.nom. IN A ;; ANSWER SECTION: www.bind.nom. 1 IN A 172.16.17.1 ;; AUTHORITY SECTION: bind.nom. 121 IN NS ns.bind.nom. ;; Query time: 0 msec ;; SERVER: 172.16.33.1#53(172.16.33.1) ;; WHEN: Sat Nov 2 18:02:33 2013 ;; MSG SIZE rcvd: 63 root@server3:/etc/namedb # dig www.bind.nom ; <<>> DiG 9.8.4-P1 <<>> www.bind.nom ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: SERVFAIL, id: 21923 ;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 0, ADDITIONAL: 0 ;; QUESTION SECTION: ;www.bind.nom. IN A ;; Query time: 1 msec ;; SERVER: 172.16.33.1#53(172.16.33.1) ;; WHEN: Sat Nov 2 18:02:35 2013 ;; MSG SIZE rcvd: 30 root@server3:/etc/namedb # dig www.bind.nom ; <<>> DiG 9.8.4-P1 <<>> www.bind.nom ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: SERVFAIL, id: 33341 ;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 0, ADDITIONAL: 0 ;; QUESTION SECTION: ;www.bind.nom. IN A ;; Query time: 0 msec ;; SERVER: 172.16.33.1#53(172.16.33.1) ;; WHEN: Sat Nov 2 18:06:21 2013 ;; MSG SIZE rcvd: 30 root@server3:/etc/namedb # dig www.bind.nom ; <<>> DiG 9.8.4-P1 <<>> www.bind.nom ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 39600 ;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 0 ;; QUESTION SECTION: ;www.bind.nom. IN A ;; ANSWER SECTION: www.bind.nom. 1800 IN A 172.16.1.1 ;; AUTHORITY SECTION: bind.nom. 1800 IN NS ns.bind.nom. ;; Query time: 0 msec ;; SERVER: 172.16.33.1#53(172.16.33.1) ;; WHEN: Sat Nov 2 18:06:39 2013 ;; MSG SIZE rcvd: 63
約4分という時間はどこからくるのか。.nom からの委譲の TTL は 300秒なのだが。NS+A のキャッシュが一度だけ再利用される?