bindでキャッシュを削除する方法

whoisで登録されていたあるドメインのDNSサーバ情報を更新した際に、TTLの時間が経過しているにもかかわらず、古いDNSサーバを参照されていました。その時の対処方法を記録しておきます。

なお前提として、こちら(前編)こちら(後編)で構築したbindの環境とします。

キャッシュをクリアする方法(結論)

まず結論から、bindでキャッシュをクリアする方法は、

です。つまりサービスを再起動すれば、キャッシュもクリアされます。

今回の問題であった現象もこのコマンドで解消されました。

発生していた現象の詳細と判断した理由

whoisであるドメインのDNSサーバを変更した際に、webサーバのIPアドレスが変わりました。whoisの情報をある日の夕方に更新して、数時間後にwebサーバが新しい方のIPアドレスで名前解決されることを確認しました。しかし、あるDNSサーバだけはまだ旧DNSを参照していました。

もうしばらく放置しておけば変わるだろうと思い、次の日まで(12時間以上)放置して、動作確認しましたが、やはり旧のDNSサーバを参照しているようでした。

これらは、digコマンドでも動作確認しており、traceのオプションを付けて、ルートドメインからの参照経路を調べると、この時は新しいDNSサーバを参照していました。

これより、ちゃんとルートドメインから名前解決すれば、新しいDNSを参照するのに、現状は古いDNSを参照しにいっている、ということはキャッシュが効いているのだと思い、クリアしようと考えた次第です。

DNSサーバは複数台で構成していることもあり、1台ずつ再起動すれば運用には影響がありません。私の環境では、3台のDNSサーバのうち2台で古いキャッシュが有効になっていました。これらを順に再起動して、問題が解決したことを確認しております。

今回はここまでです。最後までお読みいただきありがとうございました。