第11章 DNS サーバー

DNS (ドメインネームシステム) は、ホスト名とその IP アドレスの関連付けに使用される分散型データベースシステムです。ユーザーにとっては、ネットワーク上のマシンを名前で参照できるという利点があります。これは、数字で表されるネットワークアドレスよりも通常は簡単なものです。システム管理者にとっては、DNSサーバー (ネームサーバー とも呼ぶ) を使用すると、名前ベースのクエリーに影響を与えることなくホスト用の IP アドレスを変更できるようになります。DNS データベースはドメイン名への IP アドレス解決だけでなく、DNSSEC が導入されるにつれてますます幅広く使用されるようになっています。

11.1. DNS の概要

DNS は通常、特定のドメインに対して権限を持つ 1 つ以上の集中型サーバーを使用して実装されています。クライアントホストがネームサーバーから情報を要求すると、ネームサーバーは通常ポート 53 に接続します。その後、ネームサーバーは要求された名前の解決を試行します。ネームサーバーが再帰ネームサーバーとして設定されていて権限のある回答がない場合、または以前のクエリーからキャッシュされた回答がない場合は、ルートネームサーバー と呼ばれる他のネームサーバーにクエリーを行い、問題の名前に対して権限のあるネームサーバーがどれか判断します。その後、要求した名前を取得するために権限のあるネームサーバーにクエリーを行います。再帰が無効となっており権限のあるネームサーバーとして設定されているものは、クライアント向けの検索を行いません。

11.1.1. ネームサーバーのゾーン

DNS サーバーでは、すべての情報が リソースレコード (RR) と呼ばれる基本的なデータ要素に保存されます。リソースレコードは、RFC 1034 で定義されています。ドメイン名は、ツリー構造に構造化されています。この階層の各レベルは、ピリオド (.) で分けられます。たとえば、. で示される root ドメインは、DNS ツリーの根にあたり、レベル 0 になります。トップレベルドメイン (TLD) と呼ばれるドメイン名 com は、root ドメイン (.) の子になるので、階層のレベル 1 になります。ドメイン名 example.com は、階層のレベル 2 になります。

例11.1 シンプルなリソースレコード

以下は、シンプルな リソースレコード (RR) の例になります。
example.com.      86400    IN         A           192.0.2.1
ドメイン名 example.com は、PR の 所有者 です。86400 の値は、time to live (TTL) です。the Internet system を意味する IN の文字は、PR の class を示しています。A の文字は PR の type を示しています (この例では、ホストアドレス)。ホストアドレスの 192.0.2.1 は、この PR の最後のセクションに含まれているデータです。この一行の例が 1 つの PR になります。タイプ、所有者、クラスが同一の RR のセットは、リソースレコードセット (RRSet) と呼ばれます。
ゾーンは ゾーンファイル を使用して権威ネームサーバー上で定義されます。ゾーンファイルには、各ゾーンのリソースレコードの定義が含まれています。ゾーンファイルは、ファイルへの変更が行われる プライマリーネームサーバー (別名 マスターネームサーバー) 、プライマリーネームサーバーからゾーン定義を受け取る セカンダリーネームサーバー (別名 スレーブネームサーバー) に保存されています。プライマリーネームサーバー、セカンダリーネームサーバーともゾーンに対し権威があり、クライアントには同一に見えます。設定により、どのネームサーバーも複数ゾーンに対してプライマリーサーバーまたはセカンダリーサーバーとして同時に機能することができます。
DNS および DHCP サーバー、またプロビジョニングアプリケーションの管理者は、組織内で使用するホスト名の形式について合意する必要があることに留意してください。ホスト名の形式については、「推奨される命名プラクティス」 を参照してください。

11.1.2. ネームサーバーのタイプ

ネームサーバーの設定タイプには以下のように 2 つあります。
authoritative
権威ネームサーバーはゾーンの一部であるリソースレコードに対してのみ回答します。このカテゴリにはプライマリー (マスター) ネームサーバーとセカンダリー (スレーブ) ネームサーバーの両方が含まれます。
recursive
再帰ネームサーバーは解決サービスを行いますが、どのゾーンに対しても権威ではありません。すべての解決への回答は一定期間はメモリにキャッシュされ、取得したリソースレコードで指定されます。
ネームサーバーは権威的と同時に再帰的になることが可能ですが、これらの設定タイプを組み合わせることは推奨されません。権威サーバーが機能するには、これらが常にすべてのクライアントに利用可能となる必要があります。一方で、再帰的ルックアップは権威ある応答よりはるかに時間がかかるため、再帰的なサーバーは限られた数のクライアントにのみ利用可能とすべきです。それ以外の場合は、DDoS 攻撃 (分散型サービス拒否攻撃) の可能性が高まります。

11.1.3. ネームサーバーとしての BIND

BIND は一連の DNS 関連プログラムで構成されています。これには named と呼ばれるネームサーバー、rndc という管理ユーティリティー、dig というデバッグツールが含まれています。Red Hat Enterprise Linux におけるサービスの実行方法については Red Hat Enterprise Linux 7 システム管理者のガイド を参照してください。