Solaris のシステム管理 (ネーミングとディレクトリサービス : DNS、NIS、LDAP 編)

第 4 章 DNS の管理 (手順)

この章では、DNS (Domain Name System) の管理方法について説明します。

この章の内容は次のとおりです。

resolv.conf ファイルの設定

ここでは、doc.com ドメインのサーバーで使用する簡単な resolv.conf(4) ファイルの例を示します。


例 4–1 DNS サーバー用 resolv.conf ファイルの例


;
; /etc/resolv.conf file for dnsmaster (sirius)
;
domain             doc.com
nameserver         192.168.0.0
nameserver         192.168.0.1

このファイルの最初の行では、ドメイン名を次の書式で指定します。


domain domainname

ここで、domainname は インターネット管理組織(このドキュメントの執筆時点では InterNIC。日本では JPNIC) に登録されている名前です。


注 –

ドメイン名の末尾にスペースまたはタブを使うことはできません。ドメイン名の最後の文字を入力したら、必ずキャリッジリターンで強制改行してください。


2 行目には、サーバー自体を次の書式で指定します。


nameserver 192.168.0.0

それ以降の行では、スレーブ DNS ネームサーバーまたはキャッシュ専用ネームサーバー の IP アドレスを 1 つまたは 2 つ指定します。リゾルバはこれらの行を照会して該当するアドレスを識別します。各行の書式は次のとおりです。


nameserver IP_address

IP_address には、スレーブ DNS ネームサーバーまたはキャッシュ専用ネームサーバー の IP アドレスを指定します。リゾルバは、必要な情報が見つかるまで、ここに指定されている順番どおりにネームサーバーを探していきます。

DNS 用ネットワークの構成

DNS 用のネットワークを構成する場合は、クライアントとサーバーを設定する必要があります。

DNS クライアントの設定

DNS サーバーを設定する前に、クライアントを設定します。

DNS クライアントを設定する方法
  1. /etc/resolv.conf ファイルを作成します。

    次に、doc.com ドメインのクライアント (非サーバー) マシン用の簡単な resolv.conf ファイルの例を示します。


    例 4–2 resolv.conf ファイルの例


    ; Sample resolv.conf file for the machine polaris
    domain doc.com
    ; try local name server
    nameserver 10.0.0.1
    ; if local name server down, try these servers
    nameserver 192.168.16.6
    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 10.0.0.1

    それ以降の行では、DNS マスターネームサーバー、DNS スレーブネームサーバー、またはキャッシュ専用ネームサーバー の IP アドレスを最大 3 つまで指定します。4 つ以上指定することはできません。各行の書式は次のとおりです。


    nameserver IP_address
    

    IP_address には、マスターDNS ネームサーバーまたはスレーブ DNS ネームサーバーの IP アドレスを指定します。リゾルバは、必要な情報が見つかるまで、ここに指定されている順番どおりにネームサーバーを探していきます。

    /etc/resolv.conf ファイルの 5 行目では、アドレス sortlist を次の書式で指定します。


    sortlist
    addresslist
    

    addresslist は、gethostbyname(3c) によって戻されるアドレスのソート順序を示します。上記の列では、gethostbyname は、IP アドレス 130.155.0.0 より先に 1 組のネットマスク 130.155.160.0/ 255.255.240.0 を戻します。

  2. /etc/nsswitch.conf ファイルを変更します。

    「NIS」。エンタープライズレベルで主として使っているネームサービスが NIS で、設定に問題がない場合、DNS はすでに使用可能になっています。

    「ファイルベース」。エンタープライズレベルで主として使っているネームサービスが /etc ファイルベース、または NIS+ の場合は、次の手順に従います。

    1. スーパーユーザーになります。

    2. /etc/nsswitch.conf ファイルをオープンします。

    3. DNS は、ホスト情報のソースとして、「唯一の」ソースとしても「追加の」ソースとしても使用できます。/etc/nsswitch.conf hosts 行を次のいずれかのように変更して、DNS をホスト情報のソースとすることを指定します。


      hosts: files dns

      または


      hosts: nis dns [NOTFOUND=return] files

      または


      hosts: dns nis [NOTFOUND=return] files

      NIS クライアントの場合は、上記の指定をしないでください。この指定をすると、名前を見つけることができない場合に 2 度 DNS から検索することになります。

    4. ホスト情報のソースとして DNS を指定します。

    5. ファイルを保存してリブートします。

DNS サーバーの設定

DNS サーバーを設定する方法
  1. スーパーユーザーになります。

  2. サーバーを DNS クライアントとして設定します (サーバーの resolv.conf ファイルの設定も含む)。詳細については、DNS クライアントの設定を参照してください。

  3. 起動ファイルを設定します。詳細については、起動ファイルの例を参照してください。

  4. データファイルを設定します。次の 4 つのデータファイルを設定する必要があります。

    • named.ca

    • hosts

    • hosts.rev

    • named.local

  5. サーバーの初期設定を行います。詳細については、サーバーの初期設定を参照してください。

  6. サーバーをテストします。詳細については、インストール結果の確認を参照してください。


    注 –

    DNS の最も一般的な役割は、ローカルなネットワークをインターネットに接続することです。インターネットに接続するためには、親ドメインの管理者にネットワークの IP アドレスを登録してもらう必要があります。管理者は、ネットワークの地理的な位置と親ドメインの種類によって異なります。ドメイン管理者にネットワークを登録してもらう方法については、本書では説明をしていません。


マスターサーバーを指定する方法

マスターサーバーには、次の 2 つの種類があります。

サーバーをある特定のゾーンのマスターサーバーに指定する場合は、そのサーバーの named.boot ファイルに 3 つのマスターレコードを作成します。

  1. ゾーンの「マスター」レコードを作成します。

    このレコードは、そのサーバーをマスターサーバーとして使用するゾーンを指定し、正規の hosts ファイルの場所を示すものです。この「マスター」レコードは、次の 3 つのフィールドで構成されます。

    • 第 1 フィールド - サーバーを「マスター」サーバーとして指定する

    • 第 2 フィールド - 「マスター」サーバーが機能するゾーンを指定する

    • 第 3 フィールド - hosts ファイルを指定する

    次に示す起動ファイルの行は、あるサーバーを doc.com ゾーンで「マスター」サーバーとして使い、正規の hosts ファイルとして db.doc を使うことを示すものです。


    master    doc.com    db.doc
  2. ゾーンの逆マッピング用の「マスター」レコードを作成します。

    このレコードは、そのサーバーを逆アドレスマッピング (つまり、doc.com の逆アドレスドメイン) の「マスター」サーバーとして使うことを指定し、正規の hosts ファイルの場所を示すものです。この「マスター」レコードは、次の 3 つのフィールドで構成されます。第 1 フィールドではサーバーを「マスター」サーバーとして指定します。第 2 フィールドでは対象のゾーンを指定します。第 3 フィールドでは hosts.rev ファイルを指定します。

    あるゾーンにおける逆アドレスドメインは、そのゾーンにおける IP アドレスを逆にならべ、最後に in-addr.arpa を配したものです。たとえば、doc.com ゾーンの IP アドレスが 10.0.0. だとすると、逆アドレスドメインは 0.0.10.in-addr.arpa になります。

    次に示す起動ファイルの行は、そのサーバーを doc.com ゾーンの逆アドレスドメインで「マスター」サーバーとして使い、正規の hosts ファイルとして doc.rev を使うことを示すものです。


    master   0.0.10.in-addr.arpa    doc.rev
  3. ローカルループバックインタフェースまたはホストの逆アドレス関連の「マスター」レコードを作成します。

    このレコードは、そのサーバーをループバックホストの「マスター」サーバーとして使うことを指定し、正規の hosts ファイルの場所を示すものです。この「マスター」レコードは、3 つのフィールドで構成されます。第 1 フィールドではサーバーを「マスター」サーバーとして指定します。第 2 フィールドではループバックホストの逆アドレスを指定します。第 3 フィールドでは hosts ファイルを指定します。


    注 –

    ループバックホストは常に、0.0.10.in-addr.arpa といった書式で識別されます。


    次に示す起動ファイルの行は、そのサーバーをループバックホストの逆アドレスドメインで「マスター」サーバーとして使い、正規の hosts ファイルとして named.local を使うことを示すものです。


    master  0.0.10.in-addr.arpa   named.local

スレーブサーバーを指定する方法

「スレーブ」サーバーは、ゾーンに関するデータのコピーを保持しています。 マスターサーバーはそのデータをスレーブサーバーに送り、権限を任せます。クライアントは、DNS 情報をスレーブサーバーに照会できます。スレーブサーバーを使用することによって、負荷が複数のマシンに分散され応答時間を短縮してネットワークのオーバーヘッドを減らすことができます。また、スレーブサーバーは、マスターサーバーが使用できないときに代わりの機能を果たします。

スレーブサーバーは、in.named の起動時に所定のゾーンに関するすべてのデータをマスターサーバーに要求します。以降、スレーブサーバーはデータベースを更新する必要があるかどうかを調べるためにマスターサーバーを定期的にチェックします。最新のゾーンデータベースをマスターサーバーからスレーブサーバーに送信するプロセスを「ゾーン転送」と呼びます。このため、スレーブサーバー上のデータファイルを変更するのではなく、ゾーンのマスターサーバー上のデータファイルを変更します。その後、スレーブサーバーのファイルがマスターサーバーから更新されます。

サーバーを所定のゾーンのスレーブサーバーに指定する場合は、そのサーバーの named.boot ファイルに「スレーブ」レコードを作成します。別々のレコードで、サーバーをそのゾーン、逆アドレスドメイン、およびループバックホストのスレーブサーバーとして指定できます。

この「スレーブ」レコードは、次の3 つのフィールドで構成されます。

「スレーブ」レコードでは、必須フィールドに続けて 1 つまたは複数の任意指定のフィールドを設けることができます。任意指定のフィールドには次の種類があります。

次に示す起動ファイルの行は、あるサーバーを doc.com ゾーンとその逆アドレスドメインのスレーブサーバーとして使うことを示します。さらに、そのスレーブサーバーが IP アドレス 172.16.0.1 のマスターサーバーから正規データを受け取り、サーバー 172.16.0.2 をゾーンデータのスレーブ情報源として使い、最初に doc.com.bakup ファイルからデータをロードすることを示します。


 
slave   doc.com   129.146.168.119  192.146.168.38  doc.com.bakup
slave   4.0.32.128.in-addr.arpa       129.146.168.119 

この章で紹介するさまざまなサンプルファイルの中で、上記のサンプル起動ファイル行はサーバー dnsslave (IP アドレス 192.146.168.38sirius マシンのエイリアス) の起動ファイルに対応しています。


注 –

1 台のサーバーは、1 つまたは複数のゾーンのマスターサーバーとして機能でき、さらに 1 つまたは複数のゾーンのスレーブサーバーとしても機能できます。起動ファイル内のエントリの組み合わせによって、サーバーがマスターサーバーになるかスレーブサーバーになるかが決まります。


キャッシュ専用 (スタブ) サーバーを指定する方法

DNS データのキャッシュを保持するという意味では、すべてのサーバーがキャッシュサーバーであるといえます。キャッシュ専用 (スタブ) サーバーは、in-addr.arpa. ドメイン以外のどのゾーンのマスターサーバーでもないサーバーです。

キャッシュ専用サーバーは正規データは一切保持しません。キャッシュ専用サーバーは照会を行い、in.named ファイルにリストされているホストを照会して必要な情報を探します。つまり、キャッシュ専用サーバーは、正規のネームサーバーと同様の照会を行いますが、正規データそのものは一切保持しません。

次に、キャッシュ専用サーバーの起動ファイルの例を示します。


例 4–3 キャッシュ専用サーバーの起動ファイルの例


;
; Sample named.boot file for caching-only name server
;
; type                  domain                 source file or host
;
directory /var/named
cache                   .                      named.ca
master                 0.0.127.in-addr.arpa   named.local

サーバーをキャッシュ専用サーバーとして指定するための行は特に必要ありません。起動ファイル内に slave または master など、権限に関する行がないということが、キャッシュ専用サーバーであると判断する根拠になります。

ただし、以下が必要です。

+/- 構文との DNS 互換性を追加する方法

この節では、マスターネームサービスとして NIS または NIS+ を使用する場合に、/etc/passwd/etc/shadow/etc/group の各ファイルで使用される +/- 構文との互換性を確保する方法について説明します。

  1. スーパーユーザーになります。

  2. /etc/nsswitch.conf ファイルをオープンします。

  3. passwdgroups の各ソースを compat に変更します。

    • NIS を使う場合は次のように入力します。


      passwd: compat
      group: compat
    • NIS+ を使う場合は次のように入力します。


      passwd: compat
      passwd_compat: nisplus
      group: compat
      group_compat: nisplus

    これにより Solaris 1.x リリースと同じ構文を使用できます。ファイル内の +/- エントリに従って、/etc ファイルと NIS マップ (または NIS+ テーブル) を検索します。

  4. -+ または -+ netgroup/etc/passwd/etc/shadow/etc/group の各ファイルに追加します。


    注 –

    -+ または -+ netgroup のエントリを /etc/shadow および /etc/passwd に追加できないと、ローカルファイルに登録されていないユーザーは以後ログインできなくなります。


  5. ファイルを保存して、システムをリブートします。

    ライブラリ関数には nsswitch.conf ファイルが変更されてもスイッチ情報を読み直さないものがあります。そのため、マシンをリブートして、nscd とこれらのライブラリ関数が最新スイッチの情報を持つようにする必要があります。

DNS サーバーの設定

サーバーの初期設定

サーバーの初期設定を行う場合は、次の手順に従います。

サーバーの初期設定を行う方法
  1. スーパーユーザーになります。

  2. 前出の節の説明に従って、named.conf 構成ファイルとその他必要なファイルをインストールします。

  3. in.named を実行します。

    #/usr/sbin/in.named

    コマンド行から in.named を実行する代わりに、リブートするという方法もあります。

インストール結果の確認

起動ファイルとデータファイルを設定し、in.named を実行したら、インストールが正しく行われたかどうかを確認してください。

インストール結果を確認する方法
  1. スーパーユーザーになります。

  2. syslog ファイルをオープンして、エラーメッセージが書き込まれていないかどうか確認します。

    一般的な DNS エラーメッセージと障害追跡情報については、第 6 章「DNS の障害追跡 (参照情報)」を参照してください。

  3. nslookup コマンドを使用して、ローカルドメインのホスト名を確認します。


    dnsmaster% nslookup altair
     Server:  dnsmaster.doc.com
     Address: 192.146.168.5
     Name:  altair.doc.com
     Address: 192.146.168.10
    • ルックアップが正常に実行できれば、ネームサーバーは正常に機能していると推定されます。

    • Can't find」または「can't initialize address」といったメッセージがサーバーに表示された場合、あるいは「Non-existent domain」といったメッセージが表示された場合は、サーバーが起動ファイルまたはホストファイルに正しく設定されていない可能性があります。

    • can't find name」または「non-existent domain」といったメッセージがサーバーに表示された場合は、検索したサーバーがサーバーの hosts ファイルに書き込まれていないか、resolv.conf ファイルのドメイン情報に誤りがある、あるいは、それ以外のサーバーの問題がある可能性があります。

  4. nslookup を実行して遠隔ドメイン名を検索します。

    インターネットに接続されているネットワークの場合、遠隔ドメイン名を検索します。インターネットに接続されていないネットワークの場合は、他のゾーンにサブドメインがあれば、その名前を検索します。

    たとえば、インターネット上の遠隔ドメイン名 internic.net を検索するには、次のように入力します。

    dnsmaster% nslookup internic.net


    Server:  dnsmaster.doc.com  
    Address: 192.168.168.  
    Name:  internic.net 
     Addresses: 192.168.0.9,  192.168.0.6,  192.168.0.5,  192.168.0.8
    • 正常に実行できれば、ネームサーバーはおそらく正常に機能しています。

    • 上記のコマンドを実行しても遠隔ドメイン名が表示されない場合は、インターネットとの接続に問題があることが原因の 1 つとして考えられます。

    • あるいは、named.ca ファイルが正しくインストールまたは設定されていないことも考えられます。

    もう一度 nslookup を使用してドメインを検索すると、「non-authoritative 」というメッセージが出るはずですが、これは無視してかまいません。2 回目の実行では、遠隔ネームサーバーからではなく、キャッシュから応答が来ているからです。

  5. 遠隔ドメインから自分のドメインのホスト名を検索します。

    インターネットに接続されているネットワークの場合、遠隔ドメインから自分のドメインのホスト名を検索します。インターネットに接続されていないネットワークの場合は他のゾーンがあれば、そこから自分のドメインのホスト名を検索します。

    たとえば、インターネット上の遠隔ドメインから自分のドメインにあるホスト名を検索するには、nslookup コマンドに続けて、引数を 2 つ指定します。1 つめの引数は検索対象のホスト名、2 つめの引数は nslookup コマンドを実行するネームサーバー名です。

    remotemachine9% nslookup altair remotemaster.foo.org.


    Server:  remotemaster.foo.org
     Address: 192.168.0.1
     Name:  altair.doc.com
     Addresses: 192.168.1.2 
    • 正常に実行できれば、ネームサーバーはおそらく正常に機能しています。

    • 上記のコマンドを実行しても探しているマシンが見つからない場合は、ドメインが親ドメイン (上記の例では .com) の管理元に正しく登録されていないことが原因の 1 つとして考えられます。

サーバーの追加

ネットワークにマスターサーバーやスレーブサーバーを追加できます。

サーバーを追加する方法
  1. スーパーユーザーになります。

  2. DNS クライアントとしてサーバーを設定します。クライアントの追加を参照してください。

  3. 次のファイルを設定します。

    • 起動ファイル
    • named.ca
    • hosts
    • hosts.rev
    • named.local

    詳細については、DNS サーバーの設定を参照してください。

DNS データファイルの変更

DNS マスターサーバー内の DNS データファイルの 1 つに対して、ホストの追加および削除、またはそれ以外の何らかの変更、あるいは DNS データファイルの修正を行なったときには、以下も行なってください。

SOA のシリアル番号を変更する方法

すべての DNS データベースファイルには権限の開始 (SOA) リソースレコードがあります。DNS データベースのデータを変更したときは必ず、SOA シリアル番号を 1 増加させる必要があります。

たとえば、データファイルの SOA のシリアル番号が現在 101 で、ファイルのデータに変更を加えた場合は、シリアル番号を 101 から 102 に変更する必要があります。SOA のシリアル番号を変更しないと、ドメインのスレーブサーバーは、新しい情報でデータベースファイルのコピーを更新しません。その結果、マスターサーバーとスレーブサーバーが同期しなくなります。

hosts ファイル例の一般的な SOA レコードは、以下のとおりです。


; sample  hosts  file
@ IN       SOA 	nismaster.doc.com. root.nismaster.doc.com. (
   109 ; Serial
   10800 ; Refresh
   1800 ; Retry
   3600000 ; Expire
   86400 ) ; Minimum

したがって、hosts ファイルを変更すると、シリアル番号は 109 から 110 に変更して、次にファイルを変更した場合、110 から 111 に変更します。

in.named に DNS データを強制的に再度読み込ませる

in.named が無事起動すると、デーモンはそのプロセス ID を /etc/named.pid ファイルに書き込みます。in.namednamed.conf を再び読み込み、データベースを再度読み込ませる場合は、次の手順に従います。

in.named に DNS データを強制的に再度読み込ませる方法
  1. スーパーユーザーになります。

  2. # kill -HUP `cat /etc/named.pid`

この操作によって以前のキャッシュはすべて削除され、キャッシュの処理が再スタートします。


注意 – 注意 –

inetd から in.named を実行しないでください。これを行うとネームサーバーは繰り返し再起動され、キャッシュを持つ意味がなくなります。


クライアントの追加と削除

クライアントを追加または削除するときは必ず、DNS マスターサーバーに格納されたデータファイルを変更してください。スレーブサーバーのファイルを変更または編集しないでください。スレーブサーバーは、SOA のシリアル番号の変化に基づいて、マスターサーバーから自動的に更新されます。

クライアントの追加

DNS ドメインにクライアントを追加するには、新しいマシンを DNS クライアントとして設定してから、新しいマシンのレコードを該当する hostshosts.rev の各ファイルに追加します。

たとえば、rigel というホストを doc.com ドメインに追加する場合は、次の手順に従います。

クライアントを追加する方法
  1. スーパーユーザーになります。

  2. /etc/resolv.conf ファイルを rigel 上に作成します。

  3. rigel/etc/nsswitch.conf ファイルの hosts の行に dns を追加します。

    DNS とインターネットでのアクセスを参照してください。

  4. マスターサーバーの hosts ファイルに、rigel 用のアドレス (A) レコードを追加します。


    rigel  IN  A  192.168.112
  5. マスターサーバーの hosts ファイルに、rigel 用の任意指定のレコードを追加します。

    任意指定のレコードには、次のものがあります。

    • エイリアス (CNAME)

    • メール交換 (MX)

    • 既知サービス (WKS)

    • ホスト情報 (HINFO)

  6. hosts.rev ファイルに rigel 用の PTR レコードを追加します。

  7. マスターサーバーの hosts ファイルと hosts.rev ファイルの SOA シリアル番号を増やします。

  8. サーバーのデータを再度読み込みます。

    サーバーをリブートするか、次のように入力します。

    # kill -HUP `cat /etc/named.pid`

クライアントの削除

DNS ドメインからクライアントを取り除く場合は、次の手順に従います。

クライアントを削除する方法
  1. スーパーユーザーになります。

  2. 削除するマシンの nsswitch.conf ファイルの hosts の行から dns を削除します。

  3. マシンの /etc/resolv.conf ファイルを削除します。

  4. マスターサーバーの hosts ファイルと hosts.rev ファイルからそのマシンのレコードを削除します。

  5. そのマシンを示す CNAME レコードがある場合は、その CNAME レコードも hosts ファイルから削除する必要があります。

  6. 削除されるマシンによってサポートされていたサービスの代替を設定します。

    マシンがマスターサーバー、メールホスト、その他必要なプロセスまたはサービスのホストである場合、そのマシンが行なっていたサービスを他のマシンで実行できるように設定する必要があります。

クライアントで IPv6 を使用できるようにする

表 4–1 マシンで IPv6 を使用できるようにする

作業 

説明 

参照先 

マシンで IPv6 を使用できるようにする 

/etc/nsswitch.conf ファイルを変更して、NIS+ クライアントで IPv6 を使用できるようにする

 以下を参照

クライアントで IPv6 を使用できるようにする方法
  1. スーパーユーザーになります。

  2. /etc/nsswitch.conf ファイルを編集します。

  3. 新しい ipnodes ソースを追加して、ネームサービス (LDAP など) を指定します。


    ipnodes: ldap [NOTFOUND=return] files

    ipnodes は、デフォルトでは files です。IPv4 から IPv6 への変更中すべてのネームサービスが IPv6 のアドレスを認識できるわけではないので、 デフォルトの files を使用してください。デフォルトを使用しない場合は、アドレスの解決中に不必要な遅延が生じることがあります。

  4. ファイルを保存して、マシンをリブートします。

    nscd デーモンはこの情報をキャッシュに保存して起動時にこの情報を読み取るため、 ここでマシンをリブートする必要があります。

DNS サブドメインの作成

ネットワークは大きくなっていくので、ネットワークを複数の DNS サブドメインに分割すると便利です (DNS のドメインの階層と構造については、DNS 名前空間の階層を参照)。

ネットワークを親ドメインと 1 つ以上のサブドメインに分割すると、負担が複数のドメインに分散して、各 DNS サーバーの負荷は減ります。この方法で、ネットワークのパフォーマンスを改善できます。たとえば、ネットワークに 900 台のマシンがあり、すべてがひとつのドメインにあるとします。この場合、1 台のマスターサーバー、1 台以上のスレーブサーバーとキャッシュ専用サーバーからなる DNS のサーバーの集合では、900 台のマシンをサポートしなければなりません。このネットワークを各ドメインが 300 台ずつの 1 つの親ドメインと 2 つのサブドメインに分割すると、マスターサーバーとスレーブサーバーの組は 3 つとなり、それぞれ 300 台だけを担当することになります。

ネットワークを物理的または組織的な構成に合うように複数のドメインに分割することによって、DNS ドメイン名はどこに対象とするマシンがあるか、電子メールのアドレスが組織のどこにあたるのかを指し示すことになります。たとえば、rigel@alameda.doc.com は、マシン rigel が Alameda というサイトにあることを意味し、電子メールのアドレス barnum@sales.doc.com は、ユーザー barnum が営業 (sales) 部署の者であることを意味します。

ネットワークを複数のドメインに分けると、すべてをひとつのドメインに置く場合よりも設定作業が増えます。また、ドメインを互いにつなぐ委託データを保持しなければなりません。一方で、複数のドメインを持つと各ドメインの保守をそれぞれの管理者またはチームに分散させることができます。

サブドメインの設計

次に、ネットワークを 1 つの親ドメインと 1 つ以上のサブドメインに分割するにあたって考慮すべき点をいくつかあげます。

サブドメインの設定

ほとんどの場合、新しいサブドメインは、新しいネットワークやマシンを接続するか、既にあるドメインを分ける場合に作成されます。どちらの場合も、プロセスはよく似ています。

新しいサブドメインを設計した後、次の手順に従って設定します。

サブドメインを設定する方法
  1. 新しいサブドメイン内のすべてのマシンが DNS クライアントとして正しく設定されていることを確認してください。

    既存のドメインから新しいサブドメインを分ける場合、ほとんどのマシンは DNS クライアントの設定が既にされているはずです。新しいサブドメインを最初から構築する場合、あるいは既存のネットワークに新しいマシンを追加する場合は、正しく設定された resolv.conf ファイルと nsswitch.conf ファイルを各マシンにインストールする必要があります。

  2. 正しく設定された起動ファイルと DNS データファイルをサブドメインのマスターサーバーにインストールします。

    • /etc/named.conf

    • /var/named/named.ca

    • /var/named/hosts

    • /var/named/hosts.rev

    • /var/named/named.local

    サーバーのホストファイルには、サブドメイン内のマシンごとにアドレス (A) レコードと、場合によっては CNAME レコードが必要です。また、サーバーの hosts.rev ファイルには、サブドメイン内のマシンごとにポインタ (PTR) レコードが必要です。任意指定の HINFOWKS レコードも追加できます。

  3. 既存のドメインを分割する場合は、新しいサブドメインのマシン用のレコードを親ドメインのマスターサーバーの hosts ファイルと hosts.rev ファイルから削除してください。

    そのためには、現在新しいサブドメイン内にあるマシン用の A レコードを古いドメインサーバーのホストファイルから削除します。また、同じマシンの PTR レコードを古いドメインサーバーの hosts.rev ファイルから削除します。移動するマシン用の任意指定の HINFO レコードと WKS レコードも、削除する必要があります。

  4. 既存のドメインを分割する場合は、新しいサブドメイン名を、親ドメインのマスターサーバーのホストファイル内の CNAME レコードに追加します。

    たとえば、aldebaran というマシンをファックスサーバーとして使っているとします。また親ドメインのサーバーのホストファイル内の CNAME レコードが次のとおりであるとします。


    faxserver   IN   CNAME   aldebaran

    新しい faxserverCNAME レコードを、aldebaran のために、新しいサブドメインのマスターサーバーにあるホストファイル内に作成するとともに、下記のように aldebaran のサブドメインが含まれるように、親ドメインのホストファイル内の CNAME レコードも変更する必要があります。


    faxserver   IN   CNAME   aldebaran.manf.doc.com
  5. 新しいサブドメインのサーバーの NS レコードを、親ドメインのホストファイルに追加します。

    たとえば、親ドメインは doc.com で、manf.doc.com という新しいサブドメインを作成しているとします。また、このとき rigel というマシンを manf のマスターサーバーとして指定し、aldebaran をスレーブサーバーとして指定するとします。この場合、次のレコードを doc.com のマスターサーバーの hosts ファイルに追加することになります。


    manf.doc.com 99999 IN NS rigel.manf.doc.com
                 99999 IN NS aldebaran.manf.doc.com 
  6. 新しいサブドメインのサーバー用の A レコードを、親ドメインの hosts ファイルに追加します。

    引き続き上の例で考えると、次のレコードを doc.com のマスターサーバーの hosts ファイルに追加することになります。


    rigel.manf.doc.com       99999  IN  A  1.22.333.121
    aldebaran.manf.doc.com   99999  IN  A  1.22.333.136
  7. サブドメインのサーバー上の named を起動します。

    # /usr/sbin/in.named

    コマンド行から in.named を実行する代わりに、リブートします。in.named と DNS ネームサーバーを参照してください。

Solaris DNS BIND 8.2.4 の実装

Solaris オペレーティング環境では、コンパイル版の Berkeley Internet Name Domain (BIND) 8.2.4 を提供します。コンパイルにあたっては、より多くのサイトのニーズを満たすように各種オプションを設定しました。このコンパイル済みの BIND が要件に合わない場合は、公開されているソースコードから独自にコンパイルすることができます。

Solaris オペレーティング環境で提供される BIND バージョンのコンパイルでは、以下の選択が行われました。

BIND 4.9.x から BIND 8.2.4 に移行する方法
  1. スーパーユーザーになります。

  2. Korn シェルスクリプト /usr/sbin/named-bootconf を実行し、BIND 4.9.x の named.boot ファイルを BIND 8.2.4 の named.conf ファイルに変換します。


注 –

Solaris 9 では named.boot ファイルは無視されます。


DNS の転送

nsswitch.conf ファイルは、クライアントの DNS 転送とインターネットへのアクセスを管理します。NIS クライアントには、転送機能が含まれています。NIS+ クライアントにはこの機能がありません。次の手順を参照してください。

NIS+ クライアントで DNS 転送機能を使用できるようにする方法
  1. スーパーユーザーになります。

  2. /etc/resolve.conf ファイルの hosts 行を次のように正しく設定します。 hosts:nisplus dns files

この NIS 実装では、該当するサーバー上に /etc/resolve.conf ファイルが存在する場合は、ypstart-d オプションで「自動的に」 ypserv デーモンを起動して DNS に要求を転送します。DNS への転送を停止する場合は、 /usr/lib/netsvc/yp/ypstart スクリプトを編集して、-d オプションを ypserv コマンドから削除してください。その後マシンをリブートする必要があります。

以前の NIS クライアントで DNS 転送機能を使用できるようにする方法
  1. スーパーユーザーになります。

  2. hosts.byname マップと hosts.byaddr マップに YP_INTERDOMAIN キーを設定します。Makefile の次の行 (ファイルの先頭の行) を次のように変更してください。


    #B=-b
    B=

    上記の行を次のように変更します。


    B=-b
    #B=

    これで、マップの作成時に makedbm-b フラグを使って起動されるようになるため、YP_INTERDOMAINndbm ファイルに挿入されます。

  3. マップを作成し直します。

    # /usr/ccs/bin/make hosts

  4. 有効な名前のサーバーを指定している /etc/resolv.conf ファイルが NIS サーバーに存在することを確認します。

  5. 各サーバーを ypstop コマンドで停止します。

    # /usr/lib/netsvc/yp/ypstop

  6. 各サーバーを ypstart コマンドで再起動します。

    # /usr/lib/netsvc/yp/ypstart


    注 –

    Solaris 2 以降が実行されていない NIS サーバーを使用している場合は、ホストマップに YP_INTERDOMAIN キーが存在することを確認してください。また、マスターサーバーとスレーブサーバーが「異なる」バージョンの Solaris を実行している場合は、問題が発生することがあります。 次の表に、このような問題を回避するためのコマンドがまとめてあります。「4.0.3+」という表記は、「SunOS のリリース 4.0.3 以降」であることを意味します。makedbm -b コマンドは、Makefile の「-B」変数への参照です。


    表 4–2 異機種システムが混在する NIS ドメインにおける NIS/DNS

    スレーブサーバー 

    マスターサーバー 

     

    4.0.3+ 

    Solaris NIS 

    4.0.3+ 

    マスターサーバー: makedbm -b

    スレーブサーバー: ypxfr

    マスターサーバー: makedbm -b

    スレーブサーバー: ypxfr -b

    マスターサーバー: ypserv -d

    スレーブサーバー: ypxfr -b

    Solaris NIS 

    マスターサーバー: makedbm -b

    スレーブサーバー: ypxfr

    マスターサーバー: makedbm -b

    スレーブサーバー: ypxfr

    マスターサーバー: ypserv -d

    スレーブサーバー: resolve.confが存在するypxfr または ypxfr -b

Solaris オペレーティング環境には、リゾルバを構成している動的ライブラリルーチンが含まれています。