第2回 DNSベストプラクティスとは「隠す」そして「重ねる」


澁谷 寿夫
Infoblox株式会社
Systems Engineer
2007/12/14


 「プライマリを隠す」――いったい何から?

 では、何から隠すのでしょうか。

 対象は、名前解決のクエリーになります。分かりやすくいうと、名前解決のクエリーが来ないように隠してしまう、ということになります。「どうやって隠すのだろうか」と思われるかもしれませんが、実は特別なソフトなどを使うわけではなく、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が参考になります。

【関連記事】
優先DNSサーバと代替DNSサーバの動作について
http://www.atmarkit.co.jp/fwin2k/win2ktips/241dnsservers/dnsservers.html

 Windowsの場合、上記ページのプロパティのようにネットワークの設定で複数のリゾルバが設定可能です。問い合わせの順序については、上記ページの「利用されるDNSサーバとその順序」が非常に参考になります。

 ユーザーがブラウザでホームページを見ようとした場合などに、リゾルバに登録されている優先DNSサーバに問い合わせを行います。問い合わせされたDNSサーバは、クライアントの代わりに名前解決を行い、その結果をクライアントに返すという動きをします。

 そして、デフォルトサーバが応答しない場合は、タイムアウト後代替DNSサーバに問い合わせを行います。このように複数登録することにより、1台が故障していた場合も名前解決ができるような仕組みが準備されています。

 ここであまり考慮されていない問題があります。その問題を解決するのが冗長化です。

2/3

Index
DNSベストプラクティスとは「隠す」そして「重ねる」
  Page1
いまだに設定ミスの多いDNS
DNSベストプラクティス構成のポイント
なぜプライマリを隠すのか
Page2
「プライマリを隠す」――いったい何から?
具体的な設定を行ってみよう
フォワーダーを冗長化する意味
  Page3
塵も積もれば山となる――DNS冗長化のススメ
DNS設定フローチャートで確認ポイントをチェック


もう一度見直したいDNS/DHCP 連載インデックス


Security&Trust フォーラム 新着記事
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

Security & Trust 記事ランキング

本日 月間