Solaris のシステム管理 (IP サービス)

第 17 章 DHCP の障害追跡 (リファレンス)

この章では、DHCP サーバーまたは DHCP クライアントを構成する際に発生する可能性がある問題点の解決に役立つ情報を提供します。さらに、構成が完了したあとで DHCP を使用しているときに起こる問題とその解決方法についても説明します。

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

DHCP サーバーの構成については、第 14 章DHCP サービスの構成 (手順)を参照してください。DHCP クライアントの構成については、「Oracle Solaris DHCP クライアントを使用可能または使用不可にする」を参照してください。

DHCP サーバーの問題の障害追跡

サーバーを構成する際に発生する問題は、次のカテゴリに分類されます。

NIS+ の問題と DHCP データストア

DHCP データストアとして NIS+ を使用する場合に起こる問題は、次のカテゴリに分けられます。

NIS+ を DHCP データストアとして選択できない

NIS+ を データストアとして使用しようとしても、DHCP マネージャが NIS+ をデータストアの候補として認識しないことがあります。dhcpconfig コマンドを使用すると、NIS+ がインストールされておらず、動作していないという意味のメッセージが表示されることがあります。どちらの問題の場合も、このネットワークでは NIS+ が使用されている可能性はあるが、このサーバーには NIS+ が構成されていないことを意味します。NIS+ をデータとして選択するためには、サーバーマシンが NIS+ クライアントとして構成されている必要があります。

DHCP サーバーシステムを NIS+ クライアントとして設定する前に、次の要件が満たされていなければなりません。

NIS+ クライアントの構成に関する詳しい情報については、『Solaris のシステム管理 (ネーミングとディレクトリサービス : NIS+ 編)』「NIS+ クライアントマシンの設定」を参照してください。

NIS+ が DHCP データストア用に適切に構成されていない

DHCP で NIS+ を使用できるようになったあとに NIS+ を変更すると、エラーになることがあります。このような変更が構成の問題を引き起こす可能性があるからです。問題と解決策の次の説明に従って、構成の問題の原因を判別してください。

問題:

ルートオブジェクトが NIS+ ドメインに存在しない。

対処方法:

次のコマンドを入力します。

/usr/lib/nis/nisstat

このコマンドによって、ドメインの統計情報が表示されます。ルートオブジェクトが存在しない場合は、統計情報は表示されません。

『Solaris のシステム管理 (ネーミングとディレクトリサービス : NIS+ 編)』に従って NIS+ ドメインを設定します。

問題:

passwdpublickey の情報について NIS+ が使用されていない。

対処方法:

次のコマンドを入力して、ネームサービススイッチの構成ファイルを表示します。

cat /etc/nsswitch.conf

この「nisplus」キーワードに関する passwdpublickey の項目を確認します。ネームサービススイッチの構成につい ては、『Solaris のシステム管理 (ネーミングとディレクトリサービス : NIS+ 編)』を参照してください。

問題:

ドメイン名が空である。

対処方法:

次のコマンドを入力します。

domainname

このコマンドによって空の文字列がリストされた場合は、このドメインについてドメイン名が設定されていません。データストアにローカルファイルを使用するか、あるいは、ネットワーク用に NIS+ ドメインを設定します。詳細は、『Solaris のシステム管理 (ネーミングとディレクトリサービス : NIS+ 編)』を参照してください。

問題:

NIS_COLD_START ファイルが存在しない。

対処方法:

サーバーシステムで次のコマンドを入力して、ファイルの存在を確認します。

cat /var/nis/NIS_COLD_START

データストアのローカルファイルを使用するか、あるいは、NIS+ クライアントを作成します。詳細は、『Solaris のシステム管理 (ネーミングとディレクトリサービス : NIS+ 編)』を参照してください。

DHCP データストアに対する NIS+ アクセス権の問題

NIS+ のアクセス権に問題があると、DES 資格が適切でない、またはアクセス権が不十分なため NIS+ オブジェクトやテーブルを更新できないというエラーメッセージが表示されることがあります。問題と解決策の次の説明に従って、NIS+ アクセス権のエラーの原因を判別します。

問題:

NIS+ ドメイン内の org_dir オブジェクトへの作成アクセス権が DHCP サーバーシステムにない。

対処方法:

次のコマンドを入力します。


nisls -ld org_dir

アクセス権は r---rmcdrmcdr--- といった形式でリストされます。これらのアクセス権はそれぞれ、未認証、所有者、グループ、その他に対応しています。オブジェクトの所有者が次にリストされます。

通常は、所有者とグループの両方に、org_dir ディレクトリオブジェクトへの完全なアクセス権があります。完全な権限は、読み取り、変更、作成、破棄からなります。その他と未認証のクラスには、org_dir ディレクトリオブジェクトへの読み取りアクセス権だけがあります。

DHCP サーバー名は、org_dir オブジェクトの所有者か、グループ内の主体としてリストされていなければなりません。グループには作成アクセス権が必要です。次のコマンドでグループをリストします。


nisls -ldg org_dir

必要な場合は、nischmod コマンドを使って、org_dir に対するアクセス権を変更します。たとえば、グループに作成アクセス権を追加する場合は、次のコマンドを使用します。


nischmod g+c org_dir

詳細は、nischmod(1) のマニュアルページを参照してください。

問題:

DHCP サーバーに、org_dir オブジェクトの下にテーブルを作成するアクセス権がない。

通常、この問題は、サーバーシステムの主体名が org_dir オブジェクトの所有グループのメンバーでないか、所有グループが存在しないことを意味します。

対処方法:

次のコマンドを入力して所有グループ名を検索します。


niscat -o org_dir

次のような行を見つけます。

Group : "admin.example.com."

次のコマンドを使ってグループ内の主体名をリストする


nisgrpadm -l groupname

たとえば、次のコマンドを実行すると、グループ admin.example.com の主体名が表示されます。

nisgrpadm -l admin.example.com

サーバーシステムの名前がグループの明示的なメンバーとしてリストされるか、グループの暗黙的なメンバーとして含まれているはずです。必要なら、nisgrpadm コマンドを使ってサーバーシステムの名前をグループに追加します。

たとえば、サーバー名 pacific をグループ admin.example.com に追加するには、次のように入力します。


nisgrpadm -a admin.example.com pacific.example.com

詳細は、nisgrpadm(1) のマニュアルページを参照してください。

問題:

DHCP サーバーの NIS+ cred テーブルに有効な Data Encryption Standard (DES) 資格が存在しない。

対処方法:

資格の問題がある場合には、ユーザーが NIS+ ネームサービスに DES 資格を持っていないことを示すエラーメッセージが表示されます。

nisaddcred コマンドを使って、DHCP サーバーシステムのセキュリティー資格を追加します。

次の例では、ドメイン example.com にあるシステム mercury についての DES 資格を追加する方法を示します。 。


nisaddcred -p unix.mercury@example.com \
-P mercury.example.com. DES example.com.

このコマンドは、暗号化された秘密鍵の生成に必要なスーパーユーザーのパスワードを要求します。

詳細は、nisaddcred(1M) のマニュアルページを参照してください。

DHCP における IP アドレスの割り当てエラー

クライアントが IP アドレスを取得または検証しようとすると、問題が syslog に記録されたり、サーバーデバッグモード出力に書き込まれることがあります。よく見られる次の各エラーメッセージが、考えられる原因と解決策を示しています。


There is no n.n.n.n dhcp-network table for DHCP client's network

原因:

クライアントが、特定の IP アドレスを要求しているか、現在の IP アドレスのリースを延長しようとしています。DHCP サーバーは、DHCP ネットワークテーブルでそのアドレスを発見できません。

対処方法:

DHCP ネットワークテーブルが誤って削除されている場合があります。DHCP マネージャか dhcpconfig コマンドを使ってネットワークを再び追加し、ネットワークテーブルを作り直すことができます。


ICMP ECHO reply to OFFER candidate: n.n.n.n, disabling

原因:

DHCP クライアントに提供されようとしている IP アドレスがすでに使用されています。このアドレスを複数の DHCP サーバーで所有していると、この問題が起こることがあります。さらに、アドレスが DHCP 以外のネットワーククライアント用に手動で構成されている場合にも、この問題が起こることがあります。

対処方法:

アドレスの正しい所有者を判別します。DHCP サーバーデータベースか、ホストのネットワーク構成を修正します。


ICMP ECHO reply to OFFER candidate: n.n.n.n. No corresponding dhcp network record.

原因:

DHCP クライアントに提供されようとしている IP アドレスのレコードがネットワークテーブルにありません。このエラーは、IP アドレスが、選択されたあとに DHCP ネットワークテーブルレコードから削除されたことを示します。このエラーが起こるのは (もし起こるのなら)、アドレスの重複チェックが終了するまでの短い時間においてだけです。

対処方法:

DHCP マネージャまたは pntadm コマンドを使って、DHCP ネットワークテーブルを表示します。その IP アドレスが存在しない場合は、DHCP マネージャの「アドレス (Address)」タブから「編集 (Edit)」メニュの「作成 (Create)」を選択してアドレスを作成します。さらに、pntadm 使ってこの IP アドレスを作成することもできます。


DHCP network record for n.n.n.nis unavailable, ignoring request.

原因:

要求された IP アドレスのレコードは DHCP ネットワークテーブルに存在しないので、サーバーが要求をドロップします。

対処方法:

DHCP マネージャまたは pntadm コマンドを使って、DHCP ネットワークテーブルを表示します。その IP アドレスが存在しない場合は、DHCP マネージャの「アドレス (Address)」タブから「編集 (Edit)」メニュの「作成 (Create)」を選択してアドレスを作成します。さらに、pntadm 使ってこのアドレスを作成することもできます。


n.n.n.n currently marked as unusable.

原因:

ネットワークテーブルで使用不可に指定されているため、要求された IP アドレスを提供できません。

対処方法:

DHCP マネージャまたは pntadm コマンドを使って、アドレスを使用可能にします。


n.n.n.n was manually allocated. No dynamic address will be allocated.

原因:

クライアントの ID は、手動で割り当てられたアドレスに割り当てられています。そのアドレスは使用不可に指定されています。そのため、サーバーがこのクライアントに別のアドレスを割り当てることができません。

対処方法:

DHCP マネージャまたは pntadm コマンドを使って、そのアドレスを使用できるようにするか、そのクライアントに別のアドレスを手動で割り当てます。


Manual allocation (n.n.n.n, client ID) has n other records. Should have 0.

原因:

指定されたクライアント ID を持つクライアントに、複数の IP アドレスが手動で割り当てられています。クライアントには、1 つのアドレスだけが割り当てられているべきです。サーバーは、ネットワークテーブルにある、最後に手動で割り当てられたアドレスを選択します。

対処方法:

DHCP マネージャまたは pntadm コマンドを使って、IP アドレスを修正し、余分な手動割り当てを取り除きます。


No more IP addresses on n.n.n.nnetwork.

原因:

指定されたネットワーク上で DHCP が現在管理しているすべての IP アドレスは、すでに割り当てられています。

対処方法:

DHCP マネージャまたは pntadm コマンドを使って、このネットワーク用に新しい IP アドレスを作成します。


Client: clientid lease on n.n.n.n expired.

原因:

リースがネゴシエーション可能ではなく、有効期限が切れています。

対処方法:

クライアントは、プロトコルを自動的に再起動して新しいリースを取得すべきです。


Offer expired for client: n.n.n.n

原因:

サーバーがクライアントに IP アドレスを提供したが、クライアントの応答に時間がかかり過ぎ、このオファーは期限切れとなっています。

対処方法:

クライアントは、新たな検索メッセージを自動的に発行すべきです。このメッセージも期限切れとなった場合は、DHCP サーバーのキャッシュオファータイムアウトを増加させます。DHCP マネージャでは、「サービス (Service)」メニューから「変更 (Modify)」を選択する


Client: clientid REQUEST is missing requested IP option.

原因:

クライアントの要求が、提供された IP アドレスを指定しなかったため、DHCP サーバーはこの要求を無視しました。更新された DHCP プロトコル (RFC 2131) に準拠していない、Sun 以外の DHCP クライアントを使用すると、この問題が起こることがあります。

対処方法:

クライアントのソフトウェアを更新してください。


Client: clientid is trying to renew n.n.n.n, an IP address it has not leased.

原因:

DHCP ネットワークテーブルにあるこのクライアント用の IP アドレスが、クライアントが更新要求で指定した IP アドレスと一致しません。DHCP サーバーはこのリースを更新しません。この問題は、クライアントがまだ IP アドレスを使用しているのに、クライアントのレコードを削除した場合に発生することがあります。

対処方法:

DHCP マネージャまたは pntadm コマンドを使って、ネットワークテーブルを調べて、必要であれば、クライアントのレコードを修正します。クライアント ID は、指定された IP アドレスと結合されていなければなりません。結合されていない場合は、アドレスプロパティーを編集してこのクライアント ID を追加します。


Client: clientid is trying to verify unrecorded address: n.n.n.n, ignored.

原因:

指定されたクライアントは、このアドレスに対して DHCP ネットワークテーブルに登録されていません。そのため、要求は DHCP サーバーに無視されます。

このネットワークの別の DHCP サーバーで、このクライアントにアドレスを割り当てられます。ただし、クライアントがこの IP アドレスをまだ使用しているのにそのクライアントのレコードが削除されていることが原因の場合もあります。

対処方法:

DHCP マネージャまたは pntadm コマンドを使って、このサーバーとネットワーク上のほかの DHCP サーバーで、ネットワークテーブルを調べます。必要なら修正します。

さらに、何もせずにリースを期限切れにすることもできます。クライアントは自動的に新しいリースを要求します。

クライアントに新しいリースをすぐに取得させたい場合は、次のコマンドを使って、このクライアント上で DHCP プロトコルを再起動する


ifconfig interface dhcp release
ifconfig interface dhcp start

DHCP クライアント設定の障害追跡

DHCP クライアントに関連する問題は、一般的に次のカテゴリに分類されます。

DHCP サーバーとの通信の問題

この節では、ネットワークに DHCP クライアントを追加する際に発生する可能性がある問題について説明します。

クライアントソフトウェアを使用可能にし、システムをリブートすると、クライアントはそのネットワーク構成を DHCP サーバーから取得しようとします。クライアントがサーバーと通信できない場合は、次のようなエラーメッセージが表示されます。


DHCP or BOOTP server not responding 

    問題を特定するには、クライアントとサーバーの両方から診断情報を収集する必要があります。情報を収集するには、次の方法があります。

  1. 「DHCP クライアントをデバッグモードで実行する方法」

  2. 「DHCP サーバーをデバッグモードで実行する方法」

  3. snoop を使用して DHCP ネットワークトラフィックを監視する方法」

これらの方法を個別に、または同時に実行できます。

収集した情報は、問題が発生した場所がクライアントなのか、サーバーなのか、リレーエージェントなのかを判別する上で役立ちます。そして、そのあとで解決策を見つます。

ProcedureDHCP クライアントをデバッグモードで実行する方法

Oracle Solaris DHCP クライアント以外のクライアントをデバッグモードで実行する方法については、そのクライアントのマニュアルを参照してください。

Oracle Solaris DHCP クライアントをデバッグモードで実行するには、次のようにします。

  1. DHCP クライアントシステムでスーパーユーザーになります。

  2. DHCP クライアントデーモンを終了します。


    # pkill -x dhcpagent
    
  3. デーモンをデバッグモードで再起動します。


    # /sbin/dhcpagent -d1 -f &
    

    -d スイッチによって、DHCP クライアントは、詳細レベル 1 のデバッグモードで動作します。-f スイッチによって、出力は、syslog の代わりにコンソールに送信されます。

  4. DHCP ネゴシエーションを開始するようにインタフェースを構成します。


    # ifconfig interface dhcp start
    

    interface には、クライアントネットワークインタフェースの名前 (たとえば、ge0) を指定します。

    デバッグモードで実行すると、クライアントデーモンは、DHCP 要求を実行している間、画面にメッセージを表示します。クライアントのデバッグモード出力については、「デバッグモードで動作する DHCP クライアントの出力」を参照してください。

ProcedureDHCP サーバーをデバッグモードで実行する方法

  1. サーバーシステム上でスーパーユーザーになります。

  2. DHCP サーバーを一時的に停止します。


    # svcadm disable -t svc:/network/dhcp-server
    

    DHCP マネージャか dhcpconfig でサーバーを停止することもできます。

  3. デーモンをデバッグモードで再起動します。


    # /usr/lib/inet/in.dhcpd -d -v
    

    また、デーモンを実行する際に通常使用する in.dhcpd コマンド行オプションも使用する必要があります。たとえば、デーモンを BOOTP リレーエージェントとして実行する場合は、in.dhcpd -d -v コマンドに -r オプションを付けます。

    デバッグモードで動作しているデーモンは、DHCP 要求や BOOTP 要求を処理している間、画面にメッセージを表示します。サーバーのデバッグモードの出力については、「デバッグモードで動作する DHCP サーバーの出力」を参照してください。

Proceduresnoop を使用して DHCP ネットワークトラフィックを監視する方法

  1. DHCP サーバーシステム上でスーパーユーザーになります。

  2. snoop を起動して、サーバーのネットワークインタフェース間のネットワークトラフィックの追跡を開始します。


    # /usr/sbin/snoop -d interface -o snoop-output-filename udp port 67 or udp port 68
    

    たとえば、次のように入力します。


    #  /usr/sbin/snoop -d hme0 -o /tmp/snoop.output udp port 67 or udp port 68
    

    必要な情報を入手したあとも、Control-C を押してsnoop を停止するまで、snoop はインタフェースを監視し続けます。

  3. クライアントシステムを起動するか、クライアントシステムで dhcpagent を再起動します。

    「DHCP クライアントをデバッグモードで実行する方法」 を再起動する方法については、 How to Run the DHCP Client in Debugging Modeを参照してください。

  4. サーバーシステムで snoop を使用して、ネットワークパケットの内容を含む出力ファイルを表示させます。


    # /usr/sbin/snoop -i snoop-output-filename -x0 -v
    

    たとえば、次のように入力します。

    # /usr/sbin/snoop -i /tmp/snoop.output -x0 -v
    
参照

出力の解釈については、「DHCP snoop 出力」を参照してください。

デバッグモードで動作する DHCP クライアントの出力

次の例では、デバッグモードで動作する DHCP クライアントが DHCP 要求を送信し、DHCP サーバーから構成情報を受信した場合の、通常のデバッグ出力を示しています。


例 17–1 デバッグモードで動作する DHCP クライアントの通常の出力


/sbin/dhcpagent: debug: set_packet_filter: set filter 0x27fc8 (DHCP filter) 
/sbin/dhcpagent: debug: init_ifs: initted interface hme0 
/sbin/dhcpagent: debug: insert_ifs: hme0: sdumax 1500, optmax 1260, hwtype 1, hwlen 6 
/sbin/dhcpagent: debug: insert_ifs: inserted interface hme0 
/sbin/dhcpagent: debug: register_acknak: registered acknak id 5 
/sbin/dhcpagent: debug: unregister_acknak: unregistered acknak id 5 
/sbin/dhcpagent: debug: set_packet_filter: set filter 0x26018 (ARP reply filter)
/sbin/dhcpagent: info: setting IP netmask on hme0 to 255.255.192.0 
/sbin/dhcpagent: info: setting IP address on hme0 to 10.23.3.233 
/sbin/dhcpagent: info: setting broadcast address on hme0 to 10.23.63.255 
/sbin/dhcpagent: info: added default router 10.23.0.1 on hme0 
/sbin/dhcpagent: debug: set_packet_filter: set filter 0x28054 (blackhole filter) 
/sbin/dhcpagent: debug: configure_if: bound ifsp->if_sock_ip_fd 
/sbin/dhcpagent: info: hme0 acquired lease, expires Tue Aug 10 16:18:33 2006 
/sbin/dhcpagent: info: hme0 begins renewal at Tue Aug 10 15:49:44 2006 
/sbin/dhcpagent: info: hme0 begins rebinding at Tue Aug 10 16:11:03 2006

クライアントから DHCP サーバーにアクセスできないと、通常、次のようなデバッグモード出力が表示されます。


例 17–2 デバッグモードで動作する DHCP クライアントの出力 (問題があることを示す)


/sbin/dhcpagent: debug: set_packet_filter: set filter 0x27fc8 (DHCP filter)
/sbin/dhcpagent: debug: init_ifs: initted interface hme0 
/sbin/dhcpagent: debug: select_best: no valid OFFER/BOOTP reply
/sbin/dhcpagent: debug: select_best: no valid OFFER/BOOTP reply
/sbin/dhcpagent: debug: select_best: no valid OFFER/BOOTP reply
 

このメッセージは、クライアント要求がサーバーに届いていないか、サーバーが回答をクライアントに送信できないことを意味します。サーバーで snoop を実行して、クライアントのパケットがサーバーに届いたかどうかを判別します (snoop を使用して DHCP ネットワークトラフィックを監視する方法」 を参照)。

デバッグモードで動作する DHCP サーバーの出力

サーバーからの通常のデバッグモード出力には、サーバー構成情報が表示され、続いて、デーモンの起動とともに各ネットワークインタフェースの情報が表示されます。デーモンが起動されると、デバッグモード出力には、デーモンが処理している要求の情報が表示されます。例 17–3 は、起動されたばかりの DHCP サーバーからのデバッグモード出力を表しています。サーバーはクライアントのリースを延長します。このクライアントは現在、応答しない別の DHCP サーバーによって所有されているアドレスを使用しています。


例 17–3 デバッグモードで動作する DHCP サーバーの通常の出力


Daemon Version: 3.1  
Maximum relay hops: 4  
Transaction logging to console enabled.  
Run mode is: DHCP Server Mode.  
Datastore: nisplus  
Path: org_dir.dhcp.test..:dhcp.test..:$ 
DHCP offer TTL: 10  
Ethers compatibility enabled.  
BOOTP compatibility enabled.  
ICMP validation timeout: 1000 milliseconds, Attempts: 2.  
Monitor (0005/hme0) started...  
Thread Id: 0005 - Monitoring Interface: hme0 *****  
MTU: 1500      Type: DLPI  
Broadcast: 10.21.255.255 
Netmask: 255.255.0.0  
Address: 10.21.0.2  
Monitor (0006/nf0) started...  
Thread Id: 0006 - Monitoring Interface: nf0 *****  
MTU: 4352      Type: DLPI  
Broadcast: 10.22.255.255  
Netmask: 255.255.0.0  
Address: 10.22.0.1  
Monitor (0007/qfe0) started...  
Thread Id: 0007 - Monitoring Interface: qfe0 *****  
MTU: 1500      Type: DLPI   
Broadcast: 10.23.63.255  
Netmask: 255.255.192.0  
Address: 10.23.0.1  
Read 33 entries from DHCP macro database on Tue Aug 10 15:10:27 2006 
Datagram received on network device: qfe0  
Client: 0800201DBA3A is requesting verification of address owned by 10.21.0.4 
Datagram received on network device: qfe0  
Client: 0800201DBA3A is requesting verification of address owned by 10.21.0.4  
Datagram received on network device: qfe0  
Client: 0800201DBA3A is requesting verification of address owned by 10.21.0.4  
Datagram received on network device: qfe0  
Client: 0800201DBA3A maps to IP: 10.23.3.233  
Unicasting datagram to 10.23.3.233 address.  
Adding ARP entry: 10.23.3.233 == 0800201DBA3A  
DHCP EXTEND 0934312543 0934316143 10.23.3.233 10.21.0.2 
          0800201DBA3A SUNW.Ultra-5_10 0800201DBA3A

例 17–4 は、BOOTP リレーエージェントとして起動された DHCP デーモンのデバッグモード出力を表しています。エージェントは、クライアントの要求を DHCP サーバーに中継し、サーバーの応答をクライアントに中継します。


例 17–4 デバッグモードで動作する BOOTP リレーの通常の出力


Relay destination: 10.21.0.4 (blue-servr2)     network: 10.21.0.0  
Daemon Version: 3.1  
Maximum relay hops: 4  
Transaction logging to console enabled.  
Run mode is: Relay Agent Mode.  
Monitor (0005/hme0) started...  
Thread Id: 0005 - Monitoring Interface: hme0 *****  
MTU: 1500      Type: DLPI  
Broadcast: 10.21.255.255  
Netmask: 255.255.0.0  
Address: 10.21.0.2  
Monitor (0006/nf0) started...  
Thread Id: 0006 - Monitoring Interface: nf0 *****  
MTU: 4352      Type: DLPI  
Broadcast: 10.22.255.255  
Netmask: 255.255.0.0  
Address: 10.22.0.1  
Monitor (0007/qfe0) started...  
Thread Id: 0007 - Monitoring Interface: qfe0 *****  
MTU: 1500      Type: DLPI  
Broadcast: 10.23.63.255  
Netmask: 255.255.192.0  
Address: 10.23.0.1  
Relaying request 0800201DBA3A to 10.21.0.4, server port.  
BOOTP RELAY-SRVR 0934297685 0000000000 0.0.0.0 10.21.0.4 0800201DBA3A 
N/A 0800201DBA3A  
Packet received from relay agent: 10.23.0.1  
Relaying reply to client 0800201DBA3A  
Unicasting datagram to 10.23.3.233 address.  
Adding ARP entry: 10.23.3.233 == 0800201DBA3A  
BOOTP RELAY-CLNT 0934297688 0000000000 10.23.0.1 10.23.3.233 0800201DBA3A 
N/A 0800201DBA3A  
Relaying request 0800201DBA3A to 10.21.0.4, server port.  
BOOTP RELAY-SRVR 0934297689 0000000000 0.0.0.0 10.21.0.4 0800201DBA3A 
N/A 0800201DBA3A  
Packet received from relay agent: 10.23.0.1  
Relaying reply to client 0800201DBA3A  
Unicasting datagram to 10.23.3.233 address.  
Adding ARP entry: 10.23.3.233 == 0800201DBA3A 
 

DHCP に問題があると、デバッグモード出力に警告メッセージやエラーメッセージが表示されることがあります。次の DHCP サーバーのエラーメッセージから解決策を見つけてください。


ICMP ECHO reply to OFFER candidate: ip_address disabling

原因:

DHCP サーバーは、IP アドレスをクライアントに提供する前に、ping コマンドを実行してそのアドレスが使用されていないことを確認します。クライアントの回答がある場合には、そのアドレスは使用されています。

対処方法:

構成したアドレスが使用されていないことを確認します。それには、ping コマンドを使用します。詳細は、ping(1M) のマニュアルページを参照してください。


No more IP addresses on network-address network.

原因:

クライアントのネットワークに対応する DHCP ネットワークテーブル中に、使用可能な IP アドレスがありません。

対処方法:

DHCP マネージャまたは pntadm コマンドを使って、IP アドレスを追加作成します。DHCP デーモンが複数のサブネットを監視している場合は、クライアントが属するサブネットに IP アドレスを追加します。詳細は、「DHCP サービスへの IP アドレスの追加」を参照してください。


No more IP addresses for network-address network when you are running the DHCP daemon in BOOTP compatibility mode.

原因:

BOOTP はリース期間を使用しないので、DHCP サーバーは、BOOTP クライアントに割り当てるために設定された BOOTP フラグを持つ空きアドレスを検索します。

対処方法:

DHCP マネージャを使用して、BOOTP アドレスを割り当てます。詳細は、「DHCP サービスによる BOOTP クライアントのサポート (作業マップ)」を参照してください。


Request to access nonexistent per network database: database-name in datastore: datastore.

原因:

DHCP サーバーの構成の際に、サブネットの DHCP ネットワークテーブルが作成されていません。

対処方法:

DHCP マネージャまたは pntadm コマンドを使って、DHCP ネットワークテーブルと新しい IP アドレスを作成します。詳細は、「DHCP ネットワークの追加」を参照してください。


There is no table-name dhcp-network table for DHCP client's network.

原因:

DHCP サーバーの構成の際に、サブネットの DHCP ネットワークテーブルが作成されていません。

対処方法:

DHCP マネージャまたは pntadm コマンドを使って、DHCP ネットワークテーブルと新しい IP アドレスを作成します。詳細は、「DHCP ネットワークの追加」を参照してください。


Client using non_RFC1048 BOOTP cookie.

原因:

ネットワーク上のデバイスが、BOOTP のサポートされていない実装にアクセスしようとしました。

対処方法:

このデバイスを構成する必要がない場合は、このメッセージを無視します。このデバイスをサポートする方法については、「DHCP サービスによる BOOTP クライアントのサポート (作業マップ)」を参照してください。

DHCP snoop 出力

下記の snoop 出力を見ると、DHCP クライアントシステムと DHCP サーバーシステムの間でパケットが交換されていることがわかります。パケットには、各システムの IP アドレスが示されています。さらに、パケットのパスにルーターやリレーエージェントがある場合は、その IP アドレスも含まれています。システム間でパケットの交換が行われない場合は、クライアントシステムからサーバーシステムに全くアクセスできないことがあります。その場合、問題はそれより下のレベルにあります。

snoop 出力を評価するためには、期待する動作がどのようなものかを知っておく必要があります。たとえば、要求が BOOTP リレーエージェントを通るべきかどうかを知っている必要があります。さらに、関係するシステムの MAC アドレスや IP アドレスを知っている必要があります。それによって、それらの値が本来のものかどうかを判別できるからです。また、複数のネットワークインタフェースがある場合は、ネットワークインタフェースのアドレスも知っている必要があります。

次の例は、DHCP 肯定応答メッセージの通常の snoop 出力を示しています。このメッセージは、blue-servr2 上の DHCP サーバーから MAC アドレスが 8:0:20:8e:f3:7e のクライアントに送信されたものです。このメッセージで、サーバーは IP アドレス 192.168.252.6 とホスト名 white-6 をクライアントに割り当てます。さらに、このメッセージには、クライアントに対するいくつもの標準的なネットワークオプションといくつかのベンダー固有のオプションが含まれています。


例 17–5 1 つのパケットに関する snoop 出力の例


ETHER:  ----- Ether Header ----- 
ETHER:   
ETHER:  Packet 26 arrived at 14:43:19.14 
ETHER:  Packet size = 540 bytes 
ETHER:  Destination = 8:0:20:8e:f3:7e, Sun 
ETHER:  Source      = 8:0:20:1e:31:c1, Sun 
ETHER:  Ethertype = 0800 (IP) 
ETHER:  
IP:   ----- IP Header ----- 
IP:    
IP:   Version = 4 
IP:   Header length = 20 bytes 
IP:   Type of service = 0x00 
IP:         xxx. .... = 0 (precedence) 
IP:         ...0 .... = normal delay 
IP:         .... 0... = normal throughput 
IP:         .... .0.. = normal reliability 
IP:   Total length = 526 bytes 
IP:   Identification = 64667 
IP:   Flags = 0x4 IP:         .1.. .... = do not fragment 
IP:         ..0. .... = last fragment 
IP:   Fragment offset = 0 bytes 
IP:   Time to live = 254 seconds/hops 
IP:   Protocol = 17 (UDP) 
IP:   Header checksum = 157a 
IP:   Source address = 10.21.0.4, blue-servr2 
IP:   Destination address = 192.168.252.6, white-6 
IP:   No options 
IP:   UDP:  ----- UDP Header ----- 
UDP:   
UDP:  Source port = 67 
UDP:  Destination port = 68 (BOOTPC) 
UDP:  Length = 506  
UDP:  Checksum = 5D4C  
UDP:  
DHCP: ----- Dynamic Host Configuration Protocol ----- 
DHCP:  
DHCP: Hardware address type (htype) =  1 (Ethernet (10Mb)) 
DHCP: Hardware address length (hlen) = 6 octets 
DHCP: Relay agent hops = 0 
DHCP: Transaction ID = 0x2e210f17 
DHCP: Time since boot = 0 seconds 
DHCP: Flags = 0x0000 
DHCP: Client address (ciaddr) = 0.0.0.0 
DHCP: Your client address (yiaddr) = 192.168.252.6 
DHCP: Next server address (siaddr) = 10.21.0.2 
DHCP: Relay agent address (giaddr) = 0.0.0.0 
DHCP: Client hardware address (chaddr) = 08:00:20:11:E0:1B 
DHCP:  
DHCP: ----- (Options) field options ----- 
DHCP:  
DHCP: Message type = DHCPACK 
DHCP: DHCP Server Identifier = 10.21.0.4 
DHCP: Subnet Mask = 255.255.255.0 
DHCP: Router at = 192.168.252.1 
DHCP: Broadcast Address = 192.168.252.255 
DHCP: NISPLUS Domainname = dhcp.test 
DHCP: IP Address Lease Time = 3600 seconds 
DHCP: UTC Time Offset = -14400 seconds 
DHCP: RFC868 Time Servers at = 10.21.0.4 
DHCP: DNS Domain Name = sem.example.com 
DHCP: DNS Servers at = 10.21.0.1 
DHCP: Client Hostname = white-6 
DHCP: Vendor-specific Options (166 total octets): 
DHCP:   (02) 04 octets  0x8194AE1B (unprintable) 
DHCP:   (03) 08 octets  "pacific" 
DHCP:   (10) 04 octets  0x8194AE1B (unprintable) 
DHCP:   (11) 08 octets  "pacific" 
DHCP:   (15) 05 octets  "xterm" 
DHCP:   (04) 53 octets  "/export/s2/base.s2s/latest/Solaris_8/Tools/Boot" 
DHCP:   (12) 32 octets  "/export/s2/base.s2s/latest" 
DHCP:   (07) 27 octets  "/platform/sun4u/kernel/unix" 
DHCP:   (08) 07 octets  "EST5EDT" 
  0: 0800 208e f37e 0800 201e 31c1 0800 4500    .. .ó~.. .1...E.
 16: 020e fc9b 4000 fe11 157a ac15 0004 c0a8    ....@....z......           
 32: fc06 0043 0044 01fa 5d4c 0201 0600 2e21    ...C.D..]L.....!           
 48: 0f17 0000 0000 0000 0000 c0a8 fc06 ac15    ................           
 64: 0002 0000 0000 0800 2011 e01b 0000 0000    ........ .......           
 80: 0000 0000 0000 0000 0000 0000 0000 0000    ................           
 96: 0000 0000 0000 0000 0000 0000 0000 0000    ................          
112: 0000 0000 0000 0000 0000 0000 0000 0000    ................          
128: 0000 0000 0000 0000 0000 0000 0000 0000    ................          
144: 0000 0000 0000 0000 0000 0000 0000 0000    ................          
160: 0000 0000 0000 0000 0000 0000 0000 0000    ................          
176: 0000 0000 0000 0000 0000 0000 0000 0000    ................          
192: 0000 0000 0000 0000 0000 0000 0000 0000    ................          
208: 0000 0000 0000 0000 0000 0000 0000 0000    ................          
224: 0000 0000 0000 0000 0000 0000 0000 0000    ................          
240: 0000 0000 0000 0000 0000 0000 0000 0000    ................          
256: 0000 0000 0000 0000 0000 0000 0000 0000    ................          
272: 0000 0000 0000 6382 5363 3501 0536 04ac    ......c.Sc5..6..          
288: 1500 0401 04ff ffff 0003 04c0 a8fc 011c    ................          
304: 04c0 a8fc ff40 0964 6863 702e 7465 7374    .....@.dhcp.test          
320: 3304 0000 0e10 0204 ffff c7c0 0404 ac15    3...............          
336: 0004 0f10 736e 742e 6561 7374 2e73 756e    ....sem.example.          
352: 2e63 6f6d 0604 ac15 0001 0c07 7768 6974    com.........whit          
368: 652d 362b a602 0481 94ae 1b03 0861 746c    e-6+.........pac          
384: 616e 7469 630a 0481 94ae 1b0b 0861 746c    ific.........pac          
400: 616e 7469 630f 0578 7465 726d 0435 2f65    ific...xterm.5/e          
416: 7870 6f72 742f 7332 382f 6261 7365 2e73    xport/sx2/bcvf.s          
432: 3238 735f 776f 732f 6c61 7465 7374 2f53    2xs_btf/latest/S          
448: 6f6c 6172 6973 5f38 2f54 6f6f 6c73 2f42    olaris_x/Tools/B          
464: 6f6f 740c 202f 6578 706f 7274 2f73 3238    oot. /export/s2x          
480: 2f62 6173 652e 7332 3873 5f77 6f73 2f6c    /bcvf.s2xs_btf/l         
496: 6174 6573 7407 1b2f 706c 6174 666f 726d    atest../platform          
512: 2f73 756e 346d 2f6b 6572 6e65 6c2f 756e    /sun4u/kernel/un          
528: 6978 0807 4553 5435 4544 54ff              ix..EST5EDT.  

不正確な DHCP 設定情報に伴う問題

DHCP クライアントが受信するネットワーク構成情報に不正確な情報がある場合は、DHCP サーバーのデータを参照する必要があります。DHCP サーバーが処理するこのクライアント用のマクロのオプション値を確認してください。不正確な情報の例には、間違った NIS ドメイン名やルーター IP アドレスがあります。

正しくない情報の原因がどこにあるのかを特定する際には、次の一般的な指針に従ってください。

DHCP クライアント指定のホスト名に関連する問題

ここでは、独自のホスト名を DNS に登録する必要がある DHCP クライアントの問題について説明します。

DHCP クライアントがホスト名を要求しない

クライアントが Oracle Solaris DHCP クライアントでない場合は、そのクライアントのマニュアルを参照して、ホスト名を要求するために必要なクライアントの構成方法を調べてください。Oracle Solaris DHCP クライアントの場合は、「特定のホスト名を要求するように Oracle Solaris DHCPv4 クライアントを有効にする方法」を参照してください。

要求されたホスト名を DHCP クライアントが受け取らない

次の各項では、クライアントがそのホスト名を取得する際に起こる問題とその解決策について説明します。

問題:

クライアントは DHCP サーバーからオファーを受け取るが、サーバーが DNS 更新を行わない。

対処方法:

クライアントから 2 つの DHCP サーバーにアクセスできる場合は、両方のサーバーが DNS 更新を行うように構成されている必要があります。DHCP サーバーと DNS サーバーの構成については、「DHCP サーバーによる動的 DNS 更新の有効化」を参照してください。

DNS 更新を提供するように DHCP サーバーが構成されているかどうかを判別するには、次のようにします。

  1. クライアントの DHCP サーバーの IP アドレスを判別します。クライアントシステムで snoop か別のアプリケーションを使ってネットワークパケットを捕捉します。snoop を使用して DHCP ネットワークトラフィックを監視する方法」を参照し、その手順をクライアント (サーバーではなく) で実行します。snoop 出力で DHCP Server Identifier を探して、サーバーの IP アドレスを取得します。

  2. DHCP サーバーシステムにログインして、システムが、DNS 更新を行うように構成されているか確認します。次のコマンドをスーパーユーザーとして入力します。

    dhcpconfig -P

    UPDATE_TIMEOUT がサーバーパラメータとして表示される場合、DHCP サーバーは DNS 更新を行うように構成されています。

  3. DNS サーバーで /etc/named.conf ファイルを調べます。適切なドメインの zone セクションで allow-update キーワードを探します。サーバーが DHCP サーバーによる DNS 更新を許している場合は、DHCP サーバーの IP アドレスが allow-update キーワードにあります。

問題:

クライアントが FQDN オプションを使ってホスト名を指定している。FQDN オプションは DHCP プロトコルに正式には含まれていないため、現在、Oracle Solaris DHCP ではサポートされていません。

対処方法:

そのサーバーで snoop か別のアプリケーションを使ってネットワークパケットを捕捉します。詳細は、snoop を使用して DHCP ネットワークトラフィックを監視する方法」を参照してください。snoop 出力で、クライアントからのパケットにある FQDN オプションを探します。

Hostname オプションを使ってホスト名を指定するようにクライアントの構成を変更します。Hostname はオプションコード 12 です。 詳細は、クライアントのマニュアルを参照してください。

Oracle Solaris クライアントの場合は、「特定のホスト名を要求するように Oracle Solaris DHCPv4 クライアントを有効にする方法」を参照してください。

問題:

クライアントにアドレスオファーを行う DHCP サーバーがクライアントの DNS ドメインを知らない。

対処方法:

DHCP サーバーで、DNSdmain オプションに有効な値が設定されているか確認します。このクライアントに対して処理されるマクロの DNSdmain オプションに正しい DNS ドメイン名を設定します。DNSdmain は通常、ネットワークマクロに含まれているマクロ内のオプションの値を変更する方法については、「DHCP マクロの変更」を参照してください。

問題:

クライアントが要求したホスト名が DHCP サーバーが管理していない IP アドレスに対応している。Oracle Solaris DHCP サーバーは、自らが管理していない IP アドレスに対し DNS 更新を行いません。

対処方法:

次のいずれかの DHCP サーバーメッセージが syslog に書き込まれていないか調べます。

別の名前を要求するようにクライアントを構成します。「特定のホスト名を要求するように Oracle Solaris DHCPv4 クライアントを有効にする方法」を参照してください。新しく指定する名前には、DHCP サーバーが管理しているアドレスに対応する名前を選択します。DHCP マネージャの「アドレス (Addresses)」タブのアドレスマッピングを見てください。あるいは、どの IP アドレスにも対応していないアドレスを選択することもできます。

問題:

クライアントから要求されたホスト名が、使用不可の状態にある IP アドレスに対応している。このアドレスは、ほかの目的で使用されている可能性があります (別のクライアントにリースされているか、別のクライアントにオファー中である)。

対処方法:

次の DHCP サーバーメッセージが syslog に書き込まれていないか調べます。 ICMP ECHO reply to OFFER candidate: n.n.n.n.

異なる IP アドレスに対応する名前を選択するようにクライアントを構成します。あるいは、そのアドレスを使用するクライアントからアドレスを取り返します。

問題:

DHCP サーバーからの更新を受け付けるように DNS サーバーが構成されていない。

対処方法:

DNS サーバーの /etc/named.conf ファイルを調べます。DHCP サーバーのドメインに対する適切な zone セクションで allow-update キーワードが付いた DHCP サーバーの IP アドレスを探します。IP アドレスが存在しないなら、DNS サーバーは、DHCP サーバーからの更新を受け付けるようには構成されていません。

詳細は、「DHCP クライアント用に動的 DNS 更新を有効にする方法」を参照してください。

DHCP サーバーに複数のインタフェースがある場合は、DHCP サーバーのすべてのアドレスからの更新を受け付けるように DNS サーバーを構成する必要がある場合があります。DNS サーバーのデバッグ機能を有効にして、更新が DNS サーバーに届いているか確認します。DNS サーバーが更新要求を受け取っている場合は、デバッグモード出力を見て、更新が行われなかった原因を調べます。DNS デバッグモードについては、in.named(1M) のマニュアルページを参照してください。

問題:

DNS 更新が、割り当てられた時間内に行われていない可能性がある。設定された時間内に DNS 更新が完了しないと、DHCP サーバーはホスト名をクライアントに返しません。ただし、DNS 更新を完了する試みは続けられます。

対処方法:

nslookup コマンドを使って、更新が正常に終わっているかを確認します。詳細は、nslookup(1M) のマニュアルページを参照してください。

たとえば、DNS ドメインが hills.example.org で、DNS サーバーの IP アドレスが 10.76.178.11 であるとします。さらに、クライアントが登録したいホスト名は cathedral だとします。cathedral が DNS サーバーに登録されているかどうかを知るには、次のコマンドが使用できます。

nslookup cathedral.hills.example.org 10.76.178.11

更新は正常に行われたが、割り当てられた時間を超えている場合は、タイムアウト値を増やす必要があります。詳細は、「DHCP クライアント用に動的 DNS 更新を有効にする方法」を参照してください。この手順では、タイムアウトになる前に DNS サーバーから応答を受け取れるように、タイムアウトの秒数を増やすべきです。