11    DNS サーバのテスト

DNS/BIND サーバのテストとは,概念的には,必要な情報が置かれている場所を探し出すことです。 具体的には,探している情報を格納しているサーバを見つけるまで,各サーバ群およびそれらのデータベースを調べて,ネットワークをトレースすることです。 この章では,情報の位置を調べるために使用できるテストについて説明します。

11.1    用語一覧

次に,この章で使用されている用語を示します。 テスト実行中に,必要に応じて参照してください。

オーソライタティブ・サーバ

ローカルに情報を格納しているサーバ。 オーソライタティブ・サーバの例としては,マスタ・サーバおよびスレーブ・サーバがあります。 この両サーバは,与えられたドメインに対してそれぞれ 1 次権限および 2 次権限を持っています。

これとは対照的に,要求された情報を持っていないサーバは,ターゲット・ホストについての情報を他のサーバに要求する必要があります。 そのような要求に答えられるフォワーダのリストに,クエリーを転送するタイプのサーバには,たとえば転送専用のサーバがあります。

現在のサーバ

現在ログインしてテストを行っているサーバ。

データ型

DNS データベース・ファイル内のリソース・レコードの型。 すべての型のリストおよび説明については, named(8) を参照してください。

フォワーダ

DNS 照会に対して自身のデータベースおよびキャッシュ内のデータから応答できるサーバ。 オリジナル・データを持っているかどうかは関係ありません。 転送サーバのエントリは named.boot ファイルに書き込めます。

ネーム・サーバ (NS) レコード

ネーム・サーバ・レコードは,ドメインに属するシステムにドメイン名をマップし, システムがオーソライタティブ・ドメインのネーム・サーバを知っているかどうかを決定します。 次に,ネーム・サーバ・レコードの形式を示します。

domain-name          IN      NS      machine-name

左がドメイン名で,右がドメインにサービスするマシンの名前です。

マスタ・サーバ

ターゲット・ドメインのデータベースのメイン・コピーを格納するサーバ。 マスタ・サーバは,与えられたドメイン内のネーム・サービス情報についての 1 次権限を持ちます。

スレーブ・サーバ

ターゲット・ドメインのデータを他のサーバからコピーするサーバ。 ほとんどの場合,マスタ・サーバのデータをコピーしますが,他のスレーブ・サーバからコピーする場合もあります。

スレーブ・サーバは,与えられた 1 つのドメイン内のネーム・サービス情報についての 2 次権限を持ちます。

SOA (start of authority)レコード

SOA レコードは,オーソリティ・ゾーンの始点をマークします。 このレコードは,各マスタ・データベース・ファイルの最初にあります。 SOA レコードの形式を次に示します。

domain-name          IN      SOA      machine-name

ターゲット・ドメイン名

ターゲット・ホスト名の,最初のピリオド (.) 以降の部分。

ターゲット・ホスト

解決しようとしているホストの名前。 ターゲット・ドメイン名は,ターゲット・ホスト名の一部です。

11.2    DNS サーバのテスト用ワークシート

図 11-1 は, この後の節にあるテストから得る情報を記入するためのDNS サーバのテスト用ワークシートを示しています。 本書をオンラインで参照している場合には,使用しているブラウザのプリント機能を使用して,このワークシートをプリントできます。 ワークシートには現在のサーバ名,現在のドメイン名,そしてターゲット・ドメイン名を記入してください。

図 11-1:  DNS サーバのテスト用ワークシート

11.3    DNS サーバのテストの開始

現在のサーバがターゲット・データを解決できるかどうかを判定するには, 次の手順に従ってください。

  1. 現在のサーバがターゲット・データにアクセスできるかどうかを判定します。 次のコマンドを使用します。

    # nslookup
    Default Server: host1.corp.com
    Address:  127.0.0.1
     
    > server localhost
    Default Server: localhost.corp.com
    Address:  127.0.0.1
     
    > set timeout=45
    > set retry=2
    > target_host.target_domain.
    

    nslookup コマンドの実行結果 処置
    成功 手順 3 に進みます。
    失敗 1 回目の場合は,手順 2 に進みます。
      2 回目の場合は,11.4 節に進みます。

  2. 次のコマンドを使用して, named デーモンが実行されていることを確かめます。

    # ps gax | grep named
    

    named デーモンの状態 処置
    実行されている。 手順 1 に進みます。
    実行されていない。 /sbin/init.d/named start コマンドを使用して,デーモンをスタートさせます。 Internet name service started というメッセージが表示された場合は,手順 1 に進みます。
      メッセージが表示されない場合は,マシンが DNS サーバとして構成されていません。 マシンの構成を決めてください。 詳細については, 2.5 節を参照してください。

  3. クライアント・システムにログインして,nslookup コマンドを使用してターゲット・データにアクセスします。

    nslookup コマンドの実行結果 処置
    成功 手順は終了です。 クライアントはターゲット・データを解決できます。
    失敗 サーバは情報を認識していますが,クライアントに転送していません。 クライアントからログアウトします。 /sbin/init.d/named restart コマンドを使用して,サーバで DNS を再起動させます。 クライアントにログインして,nslookup コマンドを実行します。 それでもターゲット・データを解決できない場合は,誤ったサーバを指定しているか,または DNS サーバが正しく機能していません。

11.4    サーバの種類の判定

現在のサーバがマスタ・サーバとスレーブ・サーバのどちらであるかを判定するには,次の手順に従ってください。

  1. ターゲット・ドメイン名を,/etc/named.conf ファイルにあるマスタおよびスレーブ・エントリのすべてのドメイン名と比較します。 これらのエントリの形式は,次のとおりです。

    zone "domain" {         type server-type;         file "filename.db"; };

    次の例は,ターゲット・ドメイン zz.bb.cc. と,そのサブセット群を示しています。

    例 11-1:  named.conf ファイル内でのターゲット・ドメインの見つけ方

    # cat /etc/named.conf
       
    .
    .
    .
    options { directory "/etc/namedb"; };   zone "aa.bb.cc" { [1] type master; file "aa.bb.cc.db"; };   zone "cc" { [2] type master; file "cc.db"; };   zone "bb.cc" { [3] type slave; file "bb.cc.db"; masters { 128.102.0.42; }; };   zone "zz.bb.cc" { [4] type slave; file "zz.bb.cc.db"; masters { 128.102.29.73; }; };
    .
    .
    .

    1. このゾーン・エントリは,zz.bb.cc. ドメインのサブセットではありません。 [例に戻る]

    2. このゾーン・エントリは zz.bb.cc. ドメインのサブセットです。 サーバは cc. ドメインのマスタ・サーバであり,このドメインの情報を cc.db ファイルに格納します。 [例に戻る]

    3. このゾーン・エントリは zz.bb.cc. ドメインのサブセットです。 サーバは bb.cc. ドメインのスレーブ・サーバであり,このドメインの情報を bb.cc.db ファイルに格納します。 [例に戻る]

    4. このゾーン・エントリは zz.bb.cc. ドメインと一致しています。 サーバは zz.bb.cc. ドメインのスレーブ・サーバであり,このドメインの情報を zz.bb.cc.db ファイルに格納します。 [例に戻る]

    named.conf ファイルのフォーマットについての詳細は, named.conf(8) と『BIND Configuration File Guide』を参照してください。

    次の表の指示に従って,ワークシートの named.boot ファイル・セクションに情報を記録してください。

    named.boot エントリの比較結果 最初のフィールド 処置
    ターゲット・ドメイン名と一致する。 マスタ サーバの種類,ドメイン名,およびデータベース・ファイル名をワークシートに記入して,11.8 節に進みます。
      スレーブ サーバの種類,ドメイン名,データベース・ファイル名,およびホストのIPアドレスをワークシートに記入して,11.7 節に進みます。
    ターゲット・ドメイン名のサブセット。 マスタ サーバの種類,ドメイン名,およびデータベース・ファイル名をワークシートに記入して,手順 2 に進みます。
      スレーブ サーバの種類,ドメイン名,データベース・ファイル名,およびホストの IP アドレスをワークシートに記入して,手順 2 に進みます。
    ターゲット・ドメイン名と一致せず,サブセットでもない。 マスタまたはスレーブ 11.5 節に進みます。

  2. ターゲット・ドメイン名を,ワークシートに記録されたデータベース・ファイルにあるすべてのネーム・サーバ (NS) のレコードと比較します。 次の表の中で指示された場合は,ワークシートの Nameserver セクションに情報を記録してください。 次のコマンドを使用して,NS レコードのリストを作成および表示します。

    # grep -n NS database_file > ns_list
    # grep -n ORIGIN database_file >> ns_list
    # sort -n ns_list > ns_list.srt
    # cat ns_list.srt
    

    次の例は,これらのコマンドで作成されたファイルを示しています。 ターゲット・ドメインは zz.bb.cc. です。

    例 11-2:  DNS データベース内でのターゲット・ドメインの見つけ方

    # cat ns_list.srt
    1:$ORIGIN cc.
    10:             IN         NS        server_1.cc.
    17:$ORIGIN cc.
    18:bb           IN         NS        server_3.bb.cc.
    21:$ORIGIN cc.
    22:bb           IN         NS        server_4.bb.cc.
    41:$ORIGIN bb.cc.
    42:zz           IN         NS        server_5.zz.bb.cc.   [1]
    45:$ORIGIN bb.cc.
    46:zz           IN         NS        server_6.bb.cc.    [2]
    

    1. このエントリは,ターゲット・ドメインの,長い名前のサブセット (厳密に一致) です。 直前の $ORIGIN 行のドメイン名 (.bb.cc.) が,この行のドメイン名 zz に追加されて,zz.bb.cc. となっています。 [例に戻る]

    2. このエントリは,ターゲット・ドメインの,長い名前のサブセット (厳密に一致) です。 直前の $ORIGIN 行のドメイン名 (.bb.cc.) が,この行のドメイン名 zz に追加されて,zz.bb.cc. となっています。 [例に戻る]

    NS レコードの状態 サーバ 処置
    ワークシートに記入されたドメイン名より長いターゲット・ドメイン名のサブセットを含む。 マスタまたはスレーブ サーバは,ターゲット情報の 1 次権限または 2 次権限ではありません。 サーバの名前をワークシートに記入して,手順 3 に進みます。
    ワークシートに記入されたドメイン名より短いか,または等しいターゲット・ドメイン名のサブセットを含む。 マスタ データベース・ファイルにターゲット情報が存在します。 11.8 節に進みます。
      スレーブ データベース・ファイルにターゲット情報が存在します。 11.7 節に進みます。

  3. ワークシートに記入されたすべてのネーム・サーバの IP アドレスを,データベース・ファイルから検索します。 次のコマンドを使用します。

    # grep -n ORIGIN database_file > ip_list
    # grep -n server_name database_file >> ip_list
       
    .
    .
    .
    # sort -n ip_list > ip_list.srt # cat ip_list.srt

    ワークシートの対応サーバ名の隣りに IP アドレスを記入して, 11.5 節に進みます。

    次に,これまで実行されたコマンドによって作成されたファイルの例を示します。

    # cat ip_list.srt
    1:$ORIGIN cc.
    17:$ORIGIN cc.
    21:$ORIGIN cc.
    41:$ORIGIN bb.cc.
    42:zz           IN         NS        server_5.zz.bb.cc.
    43:$ORIGIN zz.bb.cc.
    44:server_5     IN         A         10.140.48.3      [1]
    45:$ORIGIN bb.cc.
    46:zz           IN         NS        server_6.bb.cc.
    47:$ORIGIN bb.cc.
    48:server_6     IN         A         10.12.48.3    [2]
    

    1. server_5 の IP アドレスは 10.140.48.3 です。 [例に戻る]

    2. server_6 の IP アドレスは 10.12.48.3 です。 [例に戻る]

11.5    ターゲット・ドメイン情報の検索

ターゲット・ドメインの情報を得るために現在のサーバが通信しているサーバを調べるには,次の手順に従ってください。

  1. named.conf ファイルを探索し,フォワーダ (forwarders) のエントリをすべて探し出します。 これらのエントリは,次のフォームを持っています。

    options {         directory "directory-name";         forward only;         forwarders {                 IP-address;                 IP-address;         }; }; 

    次の表の中で指示された場合は,ワークシートの Forwarders セクションに情報を記録してください。

    フォワーダの行 処置
    ある 現在のサーバは要求を転送します。 すべての転送サーバの IP アドレスをワークシートに記入して, 11.6 節に進みます。
    ない 現在のサーバは要求を転送しません。 手順 2 に進みます。

  2. ターゲット・ドメイン名を,ワークシートに記録されたデータベース・ファイルに存在するすべてのネーム・サーバ (NS) のレコードと比較します。 次の表の中で指示された場合は,ワークシートの Nameserver セクションに情報を記録してください。

    次のコマンドを使用して,各データベース・ファイルの NS レコードのリストを作成および表示します。

    # grep -n NS database_file > ns_list
    # grep -n ORIGIN database_file >> ns_list
    # sort -n ns_list > ns_list.srt
    # cat ns_list.srt
    

    NSレコードの状態 その他の条件 処置
    ワークシートに記入されたドメイン名より長いターゲット・ドメイン名のサブセットを含む。 --> サーバの名前をワークシートに記入して,手順 3 に進みます。
    ワークシートに記入されたドメイン名より短いか, または等しいターゲット・ドメイン名のサブセットを含む。 ワークシートのNameserverセクションが空白。 11.9 節に進みます。

  3. ワークシートに記入されているすべてのネーム・サーバの IP アドレスをデータベース・ファイルから検索します。 次のコマンドを使用します。

    # grep -n ORIGIN database_file > ip_list
    # grep -n server_name database_file >> ip_list
       
    .
    .
    .
    # sort -n ip_list > ip_list.srt # cat ip_list.srt

    ワークシートの対応サーバ名の隣りに IP アドレスを記入して,手順 4 に進みます。

  4. ping コマンドを使用して, ワークシートの Nameservers セクションにリストされた各サーバに到達可能であることを確認します。

    サーバの状態 その他の条件 処置
    ping コマンドに応答する。 そのサーバに root でアクセスできる。 サーバは到達可能で,管理者として管理できます。 この 2 つのことをワークシートに記入します。 手順 5 に進みます。
      サーバに root でアクセスできない。 サーバは到達可能ですが,管理者として管理することはできません。 この 2 つのことをワークシートに記入します。 手順 5 に進みます。
    ping コマンドに応答しない。 --> ワークシートにこのことを記入します。
        ping コマンドに応答するサーバがない場合は,手順はここで終了です。 現在のサーバは,ネットワーク上にある各サーバから独立しています。 この問題は解決できません。 ネットワーク管理者にお問い合わせください。

  5. telnet コマンドを使用して,到達可能な各サーバにログインします。 ログインしたサーバが現在のサーバとなります。 新しいワークシートを用意して,現在のサーバ名,現在のドメイン名,およびターゲット・ドメイン名を記入します。 各サーバごとに DNS サーバのテストを実施します。 11.3 節を参照してください。

11.6    フォワーダのテスト

フォワーダのためにターゲット・ホスト名を解決できないのかどうかを判定するには,次の手順に従ってください。

  1. ping コマンドを使用して,ワークシートにリストされた各フォワーダが到達可能かどうかを調べます。

    フォワーダの状態 その他の条件 処置
    ping コマンドに応答する。 そのフォワーダにルートでアクセスできる。 フォワーダは到達可能で,管理者として管理できます。 この 2 つのことをワークシートに記入します。 手順 2 に進みます。
      フォワーダにルートでアクセスできない。 フォワーダは到達可能ですが,管理者として管理することはできません。 この 2 つのことをワークシートに記入します。 手順 2 に進みます。
    ping コマンドに応答しない。 --> ワークシートにこのことを記入します。
        ping コマンドに応答するフォワーダがない場合は,手順はここで終了です。 現在のサーバは,ネットワーク上にある各フォワーダから独立しています。 この問題は解決できません。 ネットワーク管理者にお問い合わせください。

  2. named.boot ファイルを編集して, ping コマンドに応答しなかったフォワーダをすべて削除します。

  3. ターゲット・ホストに対して,nslookup コマンドを再実行します。

    nslookup コマンドの実行結果 処置
    成功 手順 4 に進みます。
    失敗 手順 5 に進みます。

  4. named.boot ファイルを編集して, フォワーダの行の最後に手順2で削除したフォワーダを追加します。 さらに,自分が管理していない転送サーバの管理者に問い合わせて, 相手のフォワーダに問題があるかもしれないことを伝えます。 手順はここで終了です。

  5. telnet コマンドを使用して,到達可能な各フォワーダにログインします。 ログインしたフォワーダが現在のサーバとなります。 新しいワークシートを用意して,現在のサーバ名,現在のドメイン名,およびターゲット・ドメイン名を記入します。 各サーバごとに DNS サーバのテストを実施します。 11.3 節を参照してください。

    フォワーダまたは他のマシンの状態 処置
    ターゲットの名前を解決できません。 named.boot ファイルから,そのフォワーダを削除します。
    ターゲットの名前を解決できます。 手順は終了です。

11.7    スレーブ・サーバのテスト

スレーブ・サーバが希望するデータを持っているかどうかを調べるには,次の手順に従ってください。

  1. データベース・ファイルの SOA (start of authority) レコードからデータベースのシリアル番号を検索します。 次のコマンドを使用します。

    # head -4 database_file
    

    シリアル番号である最初の数字をワークシートの named.conf セクションに記入します。 以前のワークシートにシリアル番号が記入してある場合は,この現在のシリアル番号と比較します。 現在のシリアル番号が前の番号より大きい (新しい) か,または前の番号より小さい (古い) かに注意してください。

    次に示す例は,シリアル番号が 23 の場合です。

    # head -4 database_file
    $ORIGIN cc.
    bb          IN        SOA        host1.bb.cc. postmaster.host1.bb.cc. (
                23 300 60 1209600 43200 )
                IN        MX         100 host1.bb.cc.
    

  2. ワークシートに記入されたデータベース・ファイルに,ターゲット・データが含まれているかどうかを調べます。 次のコマンドを使用して,リソース・レコードのリストを作成および表示します。

    # grep -n data_type database_file > ns_list
    # grep -n ORIGIN database_file >> ns_list
    # sort -n ns_list > ns_list.srt
    # cat ns_list.srt
    

    データベース・ファイルの内容 シリアル番号 処置
    ターゲット・データを含む。 ドメインにターゲット・データが存在します。 手順 3 に進みます。
    ターゲット・データを含む。 旧または同じ サーバが正常に機能していないか,または手順が間違っています。 これまでのすべての手順を確認してください。
    ターゲット・データを含まない。 --> ドメインにターゲット・データはありません。 手順 4 に進みます。

  3. 現在のサーバがターゲット・データにアクセスできるかどうかを調べます。 次のコマンドを使用します。

    # nslookup
    Default Server: host1.corp.com
    Address:  127.0.0.1
     
    > server localhost
    Default Server: localhost.corp.com
    Address:  127.0.0.1
     
    > set timeout=45
    > set retry=2
    > target_host.target_domain.
    

    nslookup コマンドの実行結果 データベースのシリアル番号 処置
    成功 --> 手順は終了です。 サーバは動作しています。 クライアントまたはサーバが現在のサーバと通信できていないか,または現在のサーバはスタートしたばかりです。
    成功 スレーブ・サーバからログアウトします。 以前のスレーブ・サーバのワークシートを用意して,手順 8 に進みます。
    失敗 --> /sbin/init.d/named restart コマンドを使用して,現在のスレーブ・サーバを再起動させます。 その後,nslookup コマンドを再実行します。

  4. ping コマンドを使用して,ワークシートにリストされた各ネーム・サーバまで到達可能かどうかを確認します。

    サーバの状態 その他の条件 処置
    ping コマンドに応答しない。 そのサーバにルートでアクセスできる。 ネーム・サーバは到達可能で,管理者として管理できます。 この 2 つのことをワークシートに記入します。
      サーバにルートでアクセスできない。 サーバは到達可能ですが,管理者として管理することはできません。 この 2 つのことをワークシートに記入します。
    ping コマンドに応答しない。 --> ワークシートにこのことを記入します。
        ping コマンドに応答するサーバがない場合は,手順はここで終了です。 現在のサーバは,ネットワーク上にある各サーバから独立しています。 この問題は解決できません。 ネットワーク管理者にお問い合わせください。

    ping コマンドに応答したサーバのうち, 自分が管理者として管理できるサーバの数を数えます。 0 の場合は,11.10 節に進みます。

  5. named.boot ファイルを編集して,secondary のエントリを見つけます。 到達可能ではないサーバ,および自分が管理者として管理しないサーバの IP アドレスを削除します。 これらのエントリもワークシートから削除します。

  6. telnet コマンドを使用して,到達可能な各サーバにログインします。 各サーバごとに新しいワークシートを用意して,そのサーバの名前を現在のサーバとして記入します。 今までのワークシートは保管しておいてください。

  7. ターゲット・ドメイン名を,/etc/named.conf ファイルにあるマスタおよびスレーブ・エントリのすべてのドメイン名と比較します。 これらのエントリの形式は,次のとおりです。

    zone "domain" {         type server-type;         file "filename.db"; };

    次の表の中で指示された場合は,ワークシートの named.conf ファイル・セクションに情報を記録してください。

    named.boot の比較結果 最初のフィールド 処置
    ターゲット・ドメイン名と一致する。 マスタ ドメイン名およびデータベース・ファイル名をワークシートに記入して,11.8 節に進みます。
      スレーブ ドメイン名,ホストのIPアドレスおよびデータベース・ファイル名をワークシートに記入して,手順 1 に進みます。
    ターゲット・ドメイン名のサブセット。 --> 手順を終了し,他のマスタ・サーバまたはスレーブ・サーバのエントリを調べます。
    ターゲット・ドメイン名と一致しない。 サブセットでもない。 --> 手順を終了し,次のマスタ・サーバまたはスレーブ・サーバのエントリを調べます。

  8. 次のコマンドを使用して,現在のスレーブ・サーバを再起動させます。

    # /sbin/init.d/named restart
    

    再起動後,数分間待ってから次の手順に進みます。 この間にデータベースが更新されます。

  9. 現在のサーバがターゲット・データにアクセスできるかどうかを調べます。 次のコマンドを使用します。

    # nslookup
    Default Server: host1.corp.com
    Address:  127.0.0.1
     
    > server localhost
    Default Server: localhost.corp.com
    Address:  127.0.0.1
     
    > set timeout=45
    > set retry=2
    > target_host.target_domain.
    

    nslookup コマンドの実行結果 処置
    成功 手順は終了です。 サーバは正常に動作しています。 telnet で他のスレーブ・サーバに接続している場合は,ログアウトして手順 8 に進みます。
    失敗 他のサーバとの telnet セッションを終了したばかりの場合は,手順 10 に進みます。
      telnet セッションを終了していない場合は,現在のサーバが正常に機能していないためデータベース・ファイルを読み取れないか,または手順が誤っています。 これまでのすべての手順を確認してください。

  10. 現在のサーバのデータベースのシリアル番号と,直前にログアウトしたサーバのデータベースのシリアル番号を比較します。 次のコマンドを使用します。

    # head -4 database_file
    

    現在のデータベースのシリアル番号の比較結果 処置
    現在のサーバがオーソライタティブ・サーバからデータベースをコピーできないか,または手順が誤っています。 これまでのすべての手順を確認してください。
    同じ シリアル番号が同じになることはありません。 これまでのすべての手順を確認してください。

11.8    マスタ・サーバのテスト

希望するデータがマスタ・サーバにあるかどうかを調べるには,次の手順に従ってください。

  1. telnet セッションでスレーブ・サーバからマスタ・サーバに接続している場合は,手順 2 に進みます。 それ以外の場合は,手順3に進みます。

  2. データベース・ファイルの SOA (start of authority) レコードからデータベースのシリアル番号を検索します。 次のコマンドを使用します。

    # head -4 database_file
    

    シリアル番号である最初の数字をワークシートの named.conf セクションに記入します。 以前のワークシートのシリアル番号が記入してある場合は,現在のシリアル番号と比較します。 現在のシリアル番号が前の番号より大きい (新しい) か,または前の番号より小さい (古い) かに注意してください。

    前の番号より小さい場合は,「旧」と記入します。 前の番号と同じ場合は,「同じ」と記入します。 次に示す例は,シリアル番号が 23 の場合です。

    # head -4 database_file
    $ORIGIN cc.
    bb          IN        SOA        host1.bb.cc. postmaster.host1.bb.cc. (
                23 300 60 1209600 43200 )
                IN        MX         100 host1.bb.cc.
    

  3. ワークシートに記入されたデータベース・ファイルに,ターゲット・データが含まれているかどうかを調べます。 次のコマンドを使用して,リソース・レコードのリストを作成および表示します。

    # grep -n data_type database_file > ns_list
    # grep -n ORIGIN database_file >> ns_list
    # sort -n ns_list > ns_list.srt
    # cat ns_list.srt
    

    データベース・ファイルの内容 処置
    ターゲット・データを含む。 ドメインにターゲット・データが存在します。 手順 4 に進みます。
    ターゲット・データを含む。 ドメインにターゲット・データが存在しません。 手順 5 に進みます。

  4. 現在のサーバがターゲット・データにアクセスできるかどうかを調べます。 次のコマンドを使用します。

    # nslookup
    Default Server: host1.corp.com
    Address:  127.0.0.1
     
    > server localhost
    Default Server: localhost.corp.com
    Address:  127.0.0.1
     
    > set timeout=45
    > set retry=2
    > target_host.target_domain.
    

    nslookup コマンドの実行結果 データベースのシリアル番号 処置
    成功 --> 手順は終了です。 サーバは動作しています。 最後のサーバが現在のサーバと通信できていないか,または現在のサーバはスタートしたばかりです。
    成功 旧または同じ 手順は終了です。 サーバが正常に機能していないか,または手順が誤っています。 これまでのすべての手順を確認してください。
    成功 使用しているマスタ・サーバからログアウトします。 以前のスレーブ・サーバのワークシートを用意して,11.7 節の手順 8 に進みます。
    失敗 --> /sbin/init.d/named restart コマンドを使用して, 現在のマスタ・サーバを再起動させます。 その後,nslookup コマンドを再実行します。

  5. データベース・ファイルを編集して, データベースのシリアル番号を 1 つ増やし,データベースを更新します。 次に,編集前および編集後の SOA レコードの例を示します。 シリアル番号が 23 から 24 に増加していることに注意してください。

    # head -4 database_file
    $ORIGIN cc.
    bb          IN        SOA        host1.bb.cc. postmaster.host1.bb.cc. (
                23 300 60 1209600 43200 )
                IN        MX         100 host1.bb.cc.
    # vi database_file
       
    .
    .
    .
    # head -4 database_file $ORIGIN cc. bb IN SOA host1.bb.cc. postmaster.host1.bb.cc. ( 24 300 60 1209600 43200 ) IN MX 100 host1.bb.cc.

  6. データベース・ファイルを編集して,データベースに新しいデータを追加します。 有効なデータ型についての説明は,11.1 節を参照してください。 新しいエントリの先頭には,必ず $ORIGIN エントリを追加し,データベースのフィールドはタブで区切ってください。 次に,host1.bb.cc. ホストの新しいアドレス・レコードの例を示します。

    $ORIGIN bb.cc
    host1            IN        A           16.141.112.11
    

  7. 次のコマンドを使用して,マスタ・サーバを再起動させます。

    # /sbin/init.d/named restart
    

  8. 現在のサーバがターゲット・データにアクセスできるかどうかを確かめます。 次のコマンドを使用します。

    # nslookup
    Default Server: host1.corp.com
    Address:  127.0.0.1
     
    > server localhost
    Default Server: localhost.corp.com
    Address:  127.0.0.1
     
    > set timeout=45
    > set retry=2
    > target_host.target_domain.
    

    nslookup コマンドの実行結果 処置
    成功 マスタ・サーバからログアウトします。 以前のスレーブ・サーバのワークシートを用意して, 11.7 節の手順 8 に進みます。
    失敗 サーバが正常に機能していないか,または手順が間違っています。 これまでのすべての手順を確認してください。

11.9    ルート・ネーム・サーバからの情報のトレース

DNS ネーム・スペースのルートで始まるターゲット名を解決するには,次の手順に従ってください。

  1. ルート・サーバを探し出すために必要な情報を含むキャッシュ・ファイルが現在のサーバにあるかどうかを調べます。 次のコマンドを使用します。

    # grep cache /etc/named.boot
    

    キャッシュ行の有無 処置
    存在しない。 現在のサーバはルート・ネーム・サーバと通信できません。 ワークシートにこのことを記入して,手順 2 に進みます。
    存在する。 ワークシートにこのことを記入して,手順 3 に進みます。

  2. 使用しているサーバにキャッシュ・ファイルを追加します。

    注意

    キャッシュ・ファイルを追加すると多くのシステム・ファイルが変更されます。 ご使用のシステムが正しく動作するように,次に示す手順どおりに操作してください。

    1. 必要な DNS ファイルおよびシステム・ファイルのコピーを作成します。 次のコマンドを入力します。

      # cd /etc
      # cp -r namedb namedb.back
      # cp rc.config.common rc.config.common.back
      # cp hosts hosts.back
      # cp resolv.conf resolv.conf.back
      # cp svc.conf svc.conf.back
      # cd /var/adm/sendmail
      # cp sendmail.cf sendmail.cf.back
      

    2. hostname コマンドを使用して,ローカル・ホスト名を表示します。 SysMan Menu ユーティリティを実行してシステム・ファイルをコピーした後に,ローカル・ホスト名を再設定する必要があります。

    3. SysMan Menu ユーティリティを実行します。 構成を変更して,キャッシュ・サーバを作成します (2.5.3 項参照)。 DNS デーモンを自動的にスタートさせないでください。 また,svcsetup コマンドを実行しないでください。

    4. システム・ファイルをコピーして /etc ディレクトリに戻します。 次のコマンドを使用します。

      # cd /etc
      # cp rc.config.common.back rc.config.common
      # cp hosts.back hosts
      # cp resolv.conf.back resolv.conf
      # cp svc.conf.back svc.conf
      

    5. hostname コマンドを使用して,ホスト名を元のホスト名に戻します。

    6. sendmail ファイルをコピーして /var/adm/sendmail ディレクトリに戻してから,sendmail を再起動させます。 次のコマンドを使用します。

      # cd /var/adm/sendmail
      # cp sendmail.cf.back sendmail.cf
      # /sbin/init.d/sendmail restart
      

    7. DNSの各ファイルをコピーして /etc ディレクトリに戻します。 次のコマンドを使用します。

      # cd /etc
      # cp namedb/namedb.boot namedb.back/named.conf_new
      # cp namedb/namedb.ca namedb.back
      # rm -rf namedb.back namedb
      # mv namedb.back namedb
      # cd namedb
      

    8. named.boot ファイルを編集して,ファイルの最後に次の行を追加してください。

      zone "." {
         type hint;
         file "named.ca";
      };
      

    9. named.conf_new ファイルを削除します。

    10. /sbin/init.d/named restart コマンドを使用して,現在のサーバを再起動させます。

  3. 次のコマンドを使用して,named.ca ファイルを表示します。

    # cat named.ca
    

    ワークシートのRoot nameserverセクションに,ルート・ネーム・サーバの名前および IP アドレスを記入します。

  4. ping コマンドを使用して,ワークシートにリストされた各ルート・ネーム・サーバに到達可能かどうかを確認します。

    ルート・ネーム・サーバの状態 処置
    ping コマンドに応答する。 ワークシートにこのことを記入します。 11.11 節に進みます。
    ping コマンドに応答しない。 ワークシートにこのことを記入します。 ping コマンドに応答するサーバがない場合は,手順 5 に進みます。

  5. 次のいずれかを実行します。

11.10    ターゲット・データの解決

ネーム・サーバを使用してターゲット・データを解決するには,次の手順に従ってください。

  1. ターゲット・システムに対して,nslookup コマンドを実行します。 Root nameserver セクションまたは Nameserver セクションの,最初のネーム・サーバを選択します。 次のコマンドを使用します。

    current_server> nslookup
    Default Server:  localhost.omni.corp.com
    Address:  127.0.0.1
     
    > server IP_address
    Default Server:  [IP_address]
    Address:  128.102.16.10
     
    > set type data_type
    > target_name
    

    nslookup コマンドの実行結果 その他の条件 処置
    成功 --> 手順は終了です。 サーバは動作しています。 最後に調べたサーバが現在のサーバと通信していないか,または現在のサーバはスタートしたばかりです。 これまでのすべての手順を確認してください。
    失敗 エラー・メッセージが返される。 non-existent domain というメッセージが表示される場合は,target_name のデータは存在していません。 11.11 節に進みます。
        no information available というメッセージが表示される場合は,target_name は存在していますが,希望する情報が対応付けされていません。 このデータが必要な場合には,ターゲット・ドメインの管理者に連絡し,このデータをドメインに追加するように求めます。
        timed-out というメッセージが表示される場合は,照会の宛先のサーバが,情報が格納されているサーバに到達できません。 手順 2 に進みます。
    失敗 エラー・メッセージが返されない。 未知のエラーです。 ターゲット・ドメインの管理者にお問い合わせください。

  2. 再試行およびタイムアウトの値を変更して,nslookup コマンドを再実行します。 次のコマンドを入力します。

    current_server> nslookup
    Default Server:  localhost.omni.corp.com
    Address:  127.0.0.1
     
    > server IP_address
    Default Server:  [IP_address]
    Address: IP_address
     
    > set type data_type
    > target_name
    

    nslookup コマンドの実行結果 その他の条件 処置
    成功 --> 手順は終了です。 サーバは動作していますが,低速です。 このままでは照会が解決されない可能性があります。 サーバまでのネットワーク接続を確かめます。 正しく接続されている場合は,性能が向上するのを待ちます。 性能が向上しない場合は,サーバの管理者にお問い合わせください。
    失敗 エラー・メッセージが返される。 non-existent domain というメッセージが表示される場合は,target_name のデータは存在していません。 11.11 節に進みます。
        no information available というメッセージが表示される場合は,target_name は存在していますが,希望するデータは対応付けされていません。 このデータが必要な場合には,ターゲット・ドメインの管理者に連絡し,このデータをドメインに追加するように求めます。
        timed-out というメッセージが表示される場合は,照会の宛先のサーバが,データが格納されているサーバにアクセスできません。 ワークシートから別のネーム・サーバを選択して,手順 1 に進みます。
    失敗 エラー・メッセージが返されない。 未知のエラーです。 ターゲット・ドメインの管理者にお問い合わせください。

11.11    存在しない最初のドメインの検索

ターゲット名の中から存在しない最初のドメインを検索するには, 次の手順に従ってください。

  1. ターゲット・ドメイン名の最小サブセットを使用して,nslookup コマンドを実行します。 次のコマンドを入力します。

    current_server> nslookup
    Default Server:  localhost.omni.corp.com
    Address:  127.0.0.1
     
    > server IP_address
    Default Server:  [IP_address]
    Address: IP_address
     
    > set type=ns
    > target_name_subset
    

    たとえば,ターゲット・ドメイン名が zz.bb.cc. の場合は, まず最初に,ターゲット名の cc. サブセットを解決します。 必要な場合は,2回目として bb.cc. を使用します。 必要な場合は,3回目として,zz.bb.cc. を使用します。

    nslookup コマンドの実行結果 その他の条件 処置
    成功 --> 手順3に進みます。
    失敗 エラー・メッセージが返される。 non-existent domain というメッセージが表示される場合は,target_name のデータは存在していません。 このデータが必要な場合には,ドメインの管理者に連絡し,このデータをドメインに追加するように求めます。 手順はここで終了です。
        timed-out というメッセージが表示される場合は,手順 2 に進みます。

  2. 再試行およびタイムアウトの値を変更して,nslookup コマンドを再実行します。 次のコマンドを入力します。

    current_server> nslookup
    Default Server:  localhost.omni.corp.com
    Address:  127.0.0.1
     
    > server IP_address
    Default Server:  [IP_address]
    Address: IP_address
     
    > set retry=2
    > set timeout=45
    > set type=ns
    > target_name_subset
    

    nslookup コマンドの実行結果 その他の条件 処置
    成功 --> 手順 3 に進みます。
    失敗 エラー・メッセージが返される。 non-existent domain というメッセージが表示される場合は,target_name のデータは存在していません。 この情報が確かに存在する場合には,ターゲット・ドメインの管理者に問い合わせて,希望する情報をドメインに追加するように要求してください。 手順はここで終了です。
        timed-out というメッセージが表示される場合は,ワークシートから別のネーム・サーバを選択して,11.10 節に進みます。

  3. ターゲット・サブセットにターゲット・ドメイン名の次の部分を追加して,手順 1 に進みます。