SMALL-IS-BEAUTIFUL.JPでは、現在、NSのひとつが ftp.small-is-beautiful.jp 、そしてもうひとつ外部のセカンダリ ns.internot.jp を利用しているとします。そして、新しいDNSサーバ ns.example.jp に引越しをしたいと考えているとしましょう。ありがちな状況ですね。
今、これまでのDNSサーバに旧来の設定を残したまま、上位レジストリ(ここではJP)への Name Server の登録をたとえば ns.example.jp に変更したとしましょう。さて、世界中のDNSキャッシュは ns.example.jp へうまく切り替わってくれるでしょうか。
以下に古いキャッシュをもった、あるDNSキャッシュサーバ(127.0.0.2)の様子を再現してみました。
% dig @127.0.0.2 a ftp.small-is-beautiful.jp ;; QUESTION SECTION: ;ftp.small-is-beautiful.jp. IN A ;; ANSWER SECTION: ftp.small-is-beautiful.jp. 10 IN A 202.41.218.226 ;; AUTHORITY SECTION: small-is-beautiful.jp. 3600 IN NS ns.internot.jp. small-is-beautiful.jp. 3600 IN NS ftp.small-is-beautiful.jp.
この時点ではNSのTTLはまだ残存し、ns.internot.jp の AレコードのキャッシュもNSと同じTTLで残存
% dig @127.0.0.2 a ftp.small-is-beautiful.jp ;; QUESTION SECTION: ;ftp.small-is-beautiful.jp. IN A ;; ANSWER SECTION: ftp.small-is-beautiful.jp. 1 IN A 202.41.218.226 ;; AUTHORITY SECTION: small-is-beautiful.jp. 3472 IN NS ns.internot.jp. small-is-beautiful.jp. 3472 IN NS ftp.small-is-beautiful.jp.
この際、ns.internot.jp の additional A のキャッシュが残っていると、上位のJPサーバが参照されないまま、ns.internot.jp へ ftp.small-is-beautiful.jp の問い合わせが発生し、その応答の Authority Section により small-is-beautiful.jp の NS の TTL がリフレッシュされてしまう。(実装依存: unbound 1.4.7, dnscacheで確認。BINDもバージョンによるみたい、、、)
% dig @127.0.0.2 a ftp.small-is-beautiful.jp ;; QUESTION SECTION: ;ftp.small-is-beautiful.jp. IN A ;; ANSWER SECTION: ftp.small-is-beautiful.jp. 10 IN A 202.41.218.226 ;; AUTHORITY SECTION: small-is-beautiful.jp. 3600 IN NS ns.internot.jp. small-is-beautiful.jp. 3600 IN NS ftp.small-is-beautiful.jp.
追記: 空のキャッシュサーバを用意して、www.iij.ad.jp を検索したあと、TTLを観察しながら、ftp.iij.ad.jp を検索してみるというのも参考になるかもしれません。
さて、何がいけないのでしょう。どうすればいいですか? (この例のバリエーションは他にも色々あります)
業者は言うかもしれません。「浸透には時間がかかります。数日待ってください」
浸透って言うな! 引越しのための適切な手を打たないと、切り替わりは運まかせとなります。(その4へ続く)
2012.11 追記: この現象は幽霊ドメイン名脆弱性として広く知られるようになり、BIND 9.9.0/9.8.2/9.7.5/9.6-ESV-R6, Unbound 1.4.8 で対策済。この現象が起きるキャッシュサーバは脆弱性を抱えているといえるでしょう。
戻る