実験1 旧サーバでゾーンデータを削除するケース
委譲を切り替えた後、旧ゾーンを削除する効果に関する実験 (BIND 9.8.4-P1 を使用)
server3 の DNS キャッシュサーバで、www.bind.nom を検索しキャッシュを入れる。
root@server3:/ # dig www.bind.nom ; <<>> DiG 9.8.4-P1 <<>> www.bind.nom ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 43556 ;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 1 ;; 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. ;; ADDITIONAL SECTION: ns.bind.nom. 300 IN A 172.16.17.1 ;; Query time: 4 msec ;; SERVER: 172.16.33.1#53(172.16.33.1) ;; WHEN: Sat Nov 2 01:51:50 2013 ;; MSG SIZE rcvd: 79
ここで、.nom ゾーンサーバ (server0) で委譲先である ns.bind.nom の A を 172.16.1.1 に切り替える。また、それまでの委譲先であった 172.16.17.1 (server2) では bind.nom ゾーンの設定を消す。
この時点で移転元の server2 は以下の状態
root@server3:/ # dig www.bind.nom @172.16.17.1 +norec ; <<>> DiG 9.8.4-P1 <<>> www.bind.nom @172.16.17.1 +norec ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: REFUSED, id: 57740 ;; flags: qr; QUERY: 1, ANSWER: 0, AUTHORITY: 0, ADDITIONAL: 0 ;; QUESTION SECTION: ;www.bind.nom. IN A ;; Query time: 0 msec ;; SERVER: 172.16.17.1#53(172.16.17.1) ;; WHEN: Sat Nov 2 02:10:40 2013 (*このログは後で取り直したものです) ;; MSG SIZE rcvd: 30
www.bind.nom の A レコードのキャッシュ切れを待つ。
root@server3:/ # dig www.bind.nom ; <<>> DiG 9.8.4-P1 <<>> www.bind.nom ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 4672 ;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 1 ;; 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. ;; ADDITIONAL SECTION: ns.bind.nom. 242 IN A 172.16.17.1 ;; Query time: 0 msec ;; SERVER: 172.16.33.1#53(172.16.33.1) ;; WHEN: Sat Nov 2 01:52:48 2013 ;; MSG SIZE rcvd: 79
www.bind.nom のキャッシュが消えたところで(NS+Aのキャッシュは残っている)、再度 www.bind.nom を検索してみる。
root@server3:/ # dig www.bind.nom ; <<>> DiG 9.8.4-P1 <<>> www.bind.nom ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: SERVFAIL, id: 49800 ;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 0, ADDITIONAL: 0 ;; QUESTION SECTION: ;www.bind.nom. IN A ;; Query time: 20 msec ;; SERVER: 172.16.33.1#53(172.16.33.1) ;; WHEN: Sat Nov 2 01:52:54 2013 ;; MSG SIZE rcvd: 30 root@server3:/ # dig www.bind.nom ; <<>> DiG 9.8.4-P1 <<>> www.bind.nom ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: SERVFAIL, id: 29814 ;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 0, ADDITIONAL: 0 ;; QUESTION SECTION: ;www.bind.nom. IN A ;; Query time: 11 msec ;; SERVER: 172.16.33.1#53(172.16.33.1) ;; WHEN: Sat Nov 2 01:53:00 2013 ;; MSG SIZE rcvd: 30
- 1,2度問い合わせに対して SERVFAIL したのち(旧 NS のキャッシュはまだ残っていて問い合わせるがRefuseされる)、上位からたどり直して新 NS である 172.16.1.1 (server1) に問い合わせ名前解決する。(BIND BIND 9.8.4-P1)
root@server3:/ # dig www.bind.nom ; <<>> DiG 9.8.4-P1 <<>> www.bind.nom ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 5118 ;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 1 ;; QUESTION SECTION: ;www.bind.nom. IN A ;; ANSWER SECTION: www.bind.nom. 1800 IN A 172.16.1.1 ;; AUTHORITY SECTION: bind.nom. 105 IN NS ns.bind.nom. ;; ADDITIONAL SECTION: ns.bind.nom. 289 IN A 172.16.1.1 ;; Query time: 0 msec ;; SERVER: 172.16.33.1#53(172.16.33.1) ;; WHEN: Sat Nov 2 01:53:05 2013 ;; MSG SIZE rcvd: 79
- BIND 9.5.2-P1 (2009年製)でも同様
- Unbound 1.4.18 でもほぼ同様だが、SERVFAILすることなく切り替わる
- BIND 9.1.3-P3 (2003年製) では 180秒たって問い合わせても切り替わらない。5分(委譲元のTTL?)かかる。