DNSベストプラクティスとは「隠す」そして「重ねる」
RSS で見かけた @IT の記事 ですが、「何のことやら」と思ってちょっと読んでみました。
●安全性を高められる
図2を見て分かるように、プライマリが内部LANに、つまりファイアウォールの内側にあります。ファイアウォールの設定で、プライマリとセカンダリ間のTCPとUDPのポート53だけを許可することにより、プライマリへの外部からのアクセスを容易に制限することができます。ファイアウォールの内側に隠すことにより、安全性を高めることが可能となります。
もちろん、named.conでのゾーン転送を許可する制限をすることも忘れてはなりません。
●メンテナンス性を高められる
クエリーが来ないことにより、メンテナンスがしやすくなります。一般的なDMZに置いたプライマリですと、外部からのクエリーも受けるため障害時の復旧にも気を使う必要があります。隠すことによりクエリーが来ない状態を作ってしまうと、万が一の障害時にもDNSのサービスには影響がありません。もちろん、長い時間プライマリがいないと、セカンダリがデータを捨ててしまいますので、早急に復旧する必要はあります。
DNSベストプラクティスとは「隠す」そして「重ねる」
なるほど。確かに global IP 帯にある複数の DNS コンテンツサーバのデータ連携・同期に関しては
- 1 台をプライマリに
- 残りをセカンダリに
という設定にしがちですが、プライマリ DNS サーバ上でゾーンファイル他の編集作業をするのはチョッとドキドキしますよね。一時期 tinydns 用に shell script でデータを同期するようなモノを考えて作ったことがあるのですが、それも本質的には同じ問題を抱えています。
@IT の記事の方法だと、安全な環境にあるプライマリ DNS サーバ上でデータを更新すれば、複数のセカンダリ DNS サーバはそれを拾いにくるわけで、別途データの転送処理を考える必要もありません*1。なるほど、目からウロコではあります。
ただし複数のセカンダリ DNS サーバの DNS ゾーン転送要求が LAN 側サーバに来るってのは少し気になるところではあります。ファイアウォールのルール的にはあまり開けたくないですよね。皆さん、どんな方法で複数の DNS サーバを管理されているのでしょうか?
*1:ちゃんと同期しているかは別の方法で確認するべきでしょうけど。