Solaris ネーミングの管理

第 29 章 DNS の管理

この章では、DNS の管理方法を説明します。詳しくは、Cricket Liu、Paul Albitz 著『DNS and Bind』(O'Reilly, 1992) と『Name Server Operations Guide for BIND』, University of California, Berkeley をお読みください。

ドメイン名の終わりにつけるドット

DNS 関連のファイルで作業する際、ドメイン名の終わりにつけるドットに関しては以下に述べるルールに従ってください。

DNS データファイルの変更

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

SOA のシリアル番号の変更

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

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

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


; 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.boot を再び読み込み、データベースを再度読み込むには、以下のとおり入力します。


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

これを行うと以前のキャッシュはすべて削除され、キャッシュの処理が再スタートされます。


注意 - 注意 -

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


マシンの追加と削除

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

マシンの追加

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

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

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

  2. rigel/etc/nsswitch.conf ファイルの hosts の行に dns を追加します (「DNS とインターネットでのアクセス」を参照)。

  3. 主サーバーの hosts ファイルに、rigel のためのアドレス (A) レコードを追加します。

    例を以下に示します。


    rigel  IN  A  123.45.6.112
  4. 主サーバーの hosts ファイルに rigel のためのオプションのレコードを追加します。

    オプションのレコードには以下のものがあります。

    • エイリアス (CNAME)

    • メール交換 (MX)

    • よく知られたサービス (WKS)

    • ホスト情報 (HINFO)

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

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

  7. サーバーのデータを再ロードします。

    サーバーをリブートするか、または以下のとおり入力します。


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

    これらの手順は、『Solaris ネーミングの設定と構成』で詳しく説明されています。

マシンの削除

DNS ドメインからマシンを取り除く場合は次のように実行します。

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

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

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

  4. CNAME レコードがそのマシンにあるなら、その CNAME のレコードも hosts ファイルから削除される必要があります。

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

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

DNS サーバーの追加

ネットワークに主サーバーや副サーバーを追加できます。DNS サーバーを追加するには、以下のとおりにしてください。

  1. DNS クライアントとしてサーバーを設定します。

    詳細は、「マシンの追加」を参照してください。

  2. サーバーのブートファイルを設定します。

  3. サーバーの named.ca ファイルを設定します。

  4. サーバーの hosts ファイルを設定します。

  5. サーバーの hosts.rev ファイルを設定します。

  6. サーバーの named.local ファイルを設定します。

  7. サーバーを初期化します。

  8. サーバーをテストします。

    以上の手順については、『Solaris ネーミングの設定と構成』に詳しい説明があります。

DNS サブドメインの作成

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

ネットワークを親ドメインとひとつ以上のサブドメインに分割すると、負担が複数のドメインに分散して、各 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. 新しいサブドメイン内のすべてのマシンが DNS クライアントとして正しく設定されていることを確認してください。

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

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

    各サーバーに以下のファイルをインストールします (詳細は、『Solaris ネーミングの設定と構成』を参照)。

    • /etc/named.boot.

    • /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

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


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

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


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

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


    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 を実行する代わりに、リブートもできます。詳しくは、『Solaris ネーミングの設定と構成』を参照してください。

DNS エラーメッセージと問題解決

DNS の問題解決とエラーメッセージに関しては、付録 A 「問題と解決方法」付録 B 「エラーメッセージ」 を参照してください。