## page was renamed from DNS/1/ゾーンサーバ/移転/観察/実験5 ## page was renamed from DNS/1/ゾーンサーバ/移転/実験5 ## page was renamed from DNS/基礎知識/ゾーンサーバ/移転/実験5 ## page was renamed from DNS/用語/ゾーンサーバ/移転/実験5 ## page was renamed from DNS/ゾーンサーバ/移転/実験5 ## page was renamed from DNS/ゾーンサーバ移転/実験5 #pragma section-numbers off = 実験5 BIND 9.2.3 より前の BIND をキャッシュに使って問題が発生するケース = 実験4とほぼ同様であるが、キャッシュサーバが 9.2.2-P3 (2003年製)であった場合を試す (dig は 9.8.4-P1) -- [[tss]] <> 以下の実験結果のような「キャッシュの 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 のキャッシュが一度だけ再利用される?