では、何から隠すのでしょうか。
対象は、名前解決のクエリーになります。分かりやすくいうと、名前解決のクエリーが来ないように隠してしまう、ということになります。「どうやって隠すのだろうか」と思われるかもしれませんが、実は特別なソフトなどを使うわけではなく、BINDの設定によって、インターネットの世界から隠してしまうことができます。設定については後ほど説明するとして、隠すことの利点をまずはお話しします。
図2を見て分かるように、プライマリが内部LANに、つまりファイアウォールの内側にあります。ファイアウォールの設定で、プライマリとセカンダリ間のTCPとUDPのポート53だけを許可することにより、プライマリへの外部からのアクセスを容易に制限することができます。ファイアウォールの内側に隠すことにより、安全性を高めることが可能となります。
もちろん、named.conでのゾーン転送を許可する制限をすることも忘れてはなりません。
クエリーが来ないことにより、メンテナンスがしやすくなります。一般的なDMZに置いたプライマリですと、外部からのクエリーも受けるため障害時の復旧にも気を使う必要があります。隠すことによりクエリーが来ない状態を作ってしまうと、万が一の障害時にもDNSのサービスには影響がありません。もちろん、長い時間プライマリがいないと、セカンダリがデータを捨ててしまいますので、早急に復旧する必要はあります。
では、実際にはどうやって設定するのかを説明します。
一般的に、外部からのクエリーは、NSレコードに書かれているDNSサーバに対して行われます。言い方をかえれば、NSレコードに書かれていなければクエリーは来ないはずです。
実際のBINDの設定は、以下のようになります。
example.com. IN SOA ns1.example.com. hostmaster.example.com. ( 2007120100 ; Serial number 1d ; refresh 1x per day 2h ; retry every 2 hours 30d ; expire after 1 month 1h ; negative TTL is 1 hour ) example.com. IN NS ns2.example.com example.com. IN NS ns3.example.com
この例では、プライマリはSOAに書いてある通りns1.example.comになります。
example.comのネームサーバは、最後の2行に書かれてあるns2.example.comとns3.example.comになります。一般的な設定では、NSレコードにns1.example.comを書いていると思います。NSレコードにプライマリを書かないというのが、ヒドゥンプライマリを作る際のポイントになります。
これを見て思ったより簡単だと思ってもらえたのではないでしょうか。これくらいの小さな変更で、先に説明したメリットを得ることができるのです。
皆さんのDNS環境も、ヒドゥンプライマリ化を検討してみてはいかがでしょうか。
ベストプラクティスのもう1つの特徴が、フォワーダーの冗長化です。フォワーダーはキャッシュと呼ばれることもあり、クライアントからのクエリーを処理します。一般的には、クライアント側のリゾルバとして登録されます。WindowsをはじめLinuxなどでは、リゾルバを複数登録することができますので、多くの場合2個以上登録されていると思います。このリゾルバは手動で登録することも可能ですし、DHCPを利用している環境であればDHCPサーバから設定を送ることができます。
リゾルバの動作については、以下のURLが参考になります。
Windowsの場合、上記ページのプロパティのようにネットワークの設定で複数のリゾルバが設定可能です。問い合わせの順序については、上記ページの「利用されるDNSサーバとその順序」が非常に参考になります。
ユーザーがブラウザでホームページを見ようとした場合などに、リゾルバに登録されている優先DNSサーバに問い合わせを行います。問い合わせされたDNSサーバは、クライアントの代わりに名前解決を行い、その結果をクライアントに返すという動きをします。
そして、デフォルトサーバが応答しない場合は、タイムアウト後代替DNSサーバに問い合わせを行います。このように複数登録することにより、1台が故障していた場合も名前解決ができるような仕組みが準備されています。
ここであまり考慮されていない問題があります。その問題を解決するのが冗長化です。
Copyright © ITmedia, Inc. All Rights Reserved.