DNS 用のネットワークを構成する場合は、クライアントとサーバーを設定する必要があります。
DNS サーバーを設定する前に、クライアントを設定します。
スーパーユーザーになります。
/etc/resolv.conf ファイルを作成します。
次に、doc.com ドメインのクライアント (非サーバー) マシン用の簡単な resolv.conf ファイルの例を示します。
; Sample resolv.conf file for the machine polaris domain doc.com ; try local name server nameserver 127.0.0.1 ; if local name server down, try these servers nameserver 2000::16:a:a00:20ff:de8a:643a nameserver 192.168.16.7 ; sort the addresses returned by gethostbyname(3c) sortlist 130.155.160.0/255.255.240.0 130.155.0.0 |
/etc/resolv.conf ファイルの最初の行では、ドメイン名を次の書式で指定します。
domain domainname |
ここで、domainname は InterNIC (日本では JPNIC) に登録されている名前です。
ドメイン名の末尾にスペースまたはタブを使うことはできません。 ドメイン名の最後の文字を入力したら、必ずキャリッジリターンで強制改行してください。
2 行目では、ネームサーバーを次の書式で指定します。
nameserver 127.0.0.1 |
以降の行では、DNS マスターネームサーバー、DNS スレーブネームサーバー、またはキャッシュ専用ネームサーバー の IP アドレスを最大 3 つまで指定します。リゾルバはこれらの行を照会して該当するアドレスを照会します。 マスターサーバーまたはスレーブサーバーを 4 つ以上指定することはできません。 各行の書式は次のとおりです。
nameserver IP_address |
IP_address には、マスターDNS ネームサーバーまたはスレーブ DNS ネームサーバーの IP アドレスを指定します。 IP_address には、IPv4 または IPv6 アドレスを指定できます。 リゾルバは、必要な情報が見つかるまで、ここに指定されている順番どおりにネームサーバーを探していきます。
/etc/resolv.conf ファイルの 5 行目では、アドレス sortlist を次の書式で指定します。
sortlist addresslist |
addresslist は、gethostbyname() によって戻されるアドレスのソート順序を示します。 上記の例では、gethostbyname は、IP アドレス 130.155.0.0 より先に 1 組のネットマスク 130.155.160.0/ 255.255.240.0 を戻します。
/etc/nsswitch.conf ファイルを変更します。
「NIS」。 エンタープライズレベルで主として使っているネームサービスが NIS で、設定に問題がない場合、DNS はすでに使用可能になっています。
「ファイルベース」。 エンタープライズレベルで主として使っているネームサービスが /etc ファイルベース、または NIS+ の場合は、次の手順に従います。
/etc/nsswitch.conf ファイルをオープンします。
DNS は、ホスト情報のソースとして、「唯一の」ソースとしても「追加の」ソースとしても使用できます。 hosts を見つけ、次のように DNS を使用します。
hosts: files dns |
または、
hosts: nis dns [NOTFOUND=return] files |
または、
hosts: dns nis [NOTFOUND=return] files |
NIS クライアントの場合は、上記の指定をしないでください。この指定をすると、名前を見つけることができない場合に 2 度 DNS から検索することになります。
ホスト情報のソースとして DNS を指定します。
ファイルを保存してリブートします。
スーパーユーザーになります。
サーバーを DNS クライアントとして設定します。これには、サーバーの resolv.conf ファイルの設定も含まれます。 詳細については、DNS クライアントの設定 を参照してください。
構成ファイルを設定します。 詳細については、構成ファイルの例を参照してください。
データファイルを設定します。 次の 4 つのデータファイルを設定する必要があります。
named.ca
hosts
hosts.rev
named.local
サーバーの初期設定を行います。 詳細については、サーバーの初期設定を行う方法 を参照してください。
サーバーをテストします。 詳細については、インストール結果を確認する方法 を参照してください。
DNS の最も一般的な役割は、ローカルなネットワークをインターネットに接続することです。 インターネットに接続するためには、親ドメインの管理者にネットワークの IP アドレスを登録してもらう必要があります。 管理者は、ネットワークの地理的な位置と親ドメインの種類によって異なります。 ドメイン管理者にネットワークを登録してもらう方法については、本書では説明をしていません。
マスターサーバーには、次の 2 つの種類があります。
「ゾーンマスターサーバー」。 各ゾーンには、そのゾーンの「マスター」サーバーが 1 つあります。 ゾーンのマスターサーバーは、そのゾーンの「正規」サーバーです。
「ゾーンスレーブサーバー」。 ゾーンには、1 つ以上の「スレーブ」マスターサーバーがあります。 「スレーブ」マスターサーバーは、その DNS データをゾーンのマスターサーバーから入手します。
サーバーをある特定のゾーンのマスターサーバーに指定する場合は、そのサーバーの named.conf ファイルに以下の文を追加します。
ゾーンファイル用のディレクトリを作成します。
次の行は、指定されたディレクトリ内でゾーンデータファイルを探すように DNS ネームサーバーに指示します。 このディレクトリは、スーパーユーザーの所有とし、権限を 0700 に設定することが推奨されます。 また、このディレクトリが、ネームサーバー起動時にネームサーバーからアクセスできるファイルシステム上に存在することが推奨されます。
options { directory "/var/named"; }; |
オプションセクション内の文はグローバルに適用可能な構成オプションであり、ネームサーバーのデフォルトです。 詳細は、named.conf(4) のマニュアルページを参照してください。
ゾーンのマスターレコードを作成します。
以下の行は、DNS ネームサーバーをゾーンのマスターサーバーとして指定します。 ゾーン定義は、キーワード zone で始まり、ドメイン、クラスの順に続きます。 in はインターネットクラスを意味します。これはデフォルトであるため省略できます。 このレコードは、ゾーンに対する権限をサーバーに与える SOA (Start of Authority、権限の開始) レコードの場所もサーバーに示します。 ファイル db.doc.sun.com は、オプション文で指定されたディレクトリに存在しなければなりません。
zone "doc.sun.com" in { type master; file "db.doc.sun.com"; }; |
以下の行は、サーバーをゾーンの逆アドレスマッピングのマスターサーバーとして使うことを指定します。 逆アドレスゾーンは、そのゾーンにおける IP アドレスを逆にならべ、in-addr.arpa がこれに続きます。 たとえば、doc.sun.com ゾーンの IP アドレスが 10.0.0 だとします。この場合、逆アドレスゾーンは 0.0.10.in-addr.arpa になります。
zone "0.0.10.in-addr.arpa" in { type master; file "db.10.0.0"; }; |
ローカルループバックインタフェースのマスターレコードを作成します。
次の行は、サーバーをループバックインタフェースのマスターサーバーとして指定します。
ループバックホストは常に、0.0.127.in-addr.arpa で識別されます。
次に示す構成ファイルの行は、そのサーバーをループバックホストの逆アドレスドメインでマスターサーバーとして使い、正規の hosts ファイルとして named.local を使うことを示すものです。
zone "0.0.127.in-addr.arpa" in { type master; file "db.127.0.0"; }; |
ルートのヒントとなるファイルを作成します。
zone "." in { type hint; file "named.ca"; }; |
ファイル named.ca には、ルートゾーンのネームサーバーの場所が記述されています。 上記の doc.sun.com ゾーンの場合、これは sun.com ドメインのネームサーバーです。
「スレーブ」サーバーは、ゾーンに関するデータのコピーを保持しています。 マスターサーバーはそのデータをスレーブサーバーに送り、権限を任せます。 クライアントは、DNS 情報をスレーブサーバーに照会できます。 スレーブサーバーを使用することによって、負荷が複数のマシンに分散され、応答時間を短縮することができます。 スレーブサーバーは、マスターサーバーがクラッシュしたときのバックアップも提供します。
in.named の起動時に、デーモンは所定のゾーンに関するすべてのデータをマスターサーバーに要求します。 その後、マスターサーバーがデータベースを更新する必要があるかどうかを調べるため、スレーブサーバーはマスターサーバーを定期的にチェックします。 最新のゾーンデータベースをマスターサーバーからスレーブサーバーに送信するプロセスを「ゾーン転送」と呼びます。 このため、スレーブサーバー上のデータファイルを変更するのではなく、 ゾーンのマスターサーバー上のデータファイルを変更します。 その後、スレーブサーバーのファイルがマスターサーバーから更新されます。
サーバーを所定のゾーンのスレーブサーバーに指定する場合は、そのサーバーの named.conf ファイルにスレーブレコードを作成します。 別々のレコードで、サーバーをそのゾーン、逆アドレスドメイン、およびループバックホストのスレーブサーバーとして指定できます。 スレーブゾーン定義の書式は、マスターゾーン定義と似ています。 type が slave に変わり、キーワード masters の行がマスターサーバーの IP アドレスと共に加えられます。
次に示す構成ファイルの行は、サーバーを doc.sun.com ゾーンとその逆アドレスドメインのスレーブサーバーとして使うことを示します。 これらの行は、スレーブサーバーがその正規データを 172.16.0.1 のマスターサーバーから取得し、初めにそのデータをファイル tmp.db.doc.sun.com から読み込むことも指定します。
zone "doc.sun.com" in { type slave; file "tmp.db.doc.sun.com"; masters { 172.16.0.1; }; }; |
1 台のサーバーは、1 つまたは複数のゾーンのマスターサーバーとして機能でき、さらに 1 つまたは複数のゾーンのスレーブサーバーとしても機能できます。 構成ファイル内のエントリの組み合わせによって、サーバーが指定したゾーンのマスターサーバーになるかスレーブサーバーになるかが決まります。
DNS データのキャッシュを保持するという意味では、すべてのサーバーが キャッシュサーバーであるといえます。 キャッシュ専用 (スタブ) サーバーは、in-addr.arpa. ドメインの逆ループバックゾーン以外のどのゾーンのマスターサーバーでもないサーバーです。
キャッシュ専用サーバーは照会を行いますが、正規データそのものは一切保持しません。キャッシュ専用サーバーは、named.ca ファイルにリストされているホストに必要な情報を問い合わせることによって照会を行います。
次に、キャッシュ専用サーバーの構成ファイルの例を示します。 クラス (in) はデフォルトであるため省略されています。
; ; Sample named.conf file for caching only name server ; options { directory "/var/named"; }; zone "0.0.127.in-addr.arpa" { type master; file "db.127.0.0"; }; zone "." { type hint; file "named.ca"; }; |