Solaris DHCP の管理

第 5 章 DHCP の障害追跡

この章では、DHCP サーバーまたはクライアントを設定する際に検出される問題や、構成が完了した後に DHCP を使用する際の問題を解決する情報について説明します。

この章では、次の情報について説明します。

DHCP サーバーに関する問題の障害追跡

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

NIS+ の問題

DHCP データとして NIS+ を使用する場合に発生する問題は、次のカテゴリに分類されます。

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

NIS+ をデータストアとして選択しようとして、DHCP マネージャのデータストアの選択肢に NIS+ が含まれていなかったり、NIS+ のインストールと実行が確認できないというメッセージが dhcpconfig から返されたりすることがあります。これは、このネットワークでは NIS+ が使用されている可能性はあるが、このサーバーには NIS+ が構成されていないことを意味します。NIS+ をデータとして選択するためには、サーバーマシンが NIS+ クライアントとして構成されている必要があります。

サーバーを NIS+ クライアントとして設定するためには、ドメインがすでに構成され、そのマスターサーバーが動作している必要があります。さらに、ドメインのテーブルのマスターサーバーがすでに作成され、ホストテーブルには新しいクライアントシステムのエントリ (DHCP サーバー) が存在している必要があります。『Solaris ネーミングの設定と構成』の「NIS+ クライアントの構成」で、NIS+ クライアントの構成についての詳細が説明されています。

NIS+ が適切に構成されていない

DHCP で NIS+ が正常に使用できるようになっても、NIS+ を変更するとエラーになり、構成の問題が明らかになることがあります。表 5–1 を使用して、問題の原因を特定してください。

表 5–1 NIS+ 構成の問題

問題 

情報の収集 

解決法 

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

次のコマンドを入力する。  

/usr/lib/nis/nisstat

ドメインの統計情報が表示される。ルートオブジェクトが存在しない場合は、統計情報は表示されない

Solaris ネーミングの設定と構成』を参照して NIS+ ドメインを設定する

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

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

cat /etc/nsswitch.conf

この「nisplus」キーワードに関する passwordpublickey の項目を確認する

ネームサービススイッチの構成については、『Solaris ネーミングの設定と構成』を参照

ドメイン名が空である 

次のコマンドを入力する。  

domainname

このコマンドによって空の文字列がリストされた場合は、このドメインについてドメイン名が設定されていない 

データストアにローカルファイルを使用するか、あるいは、ネットワーク用に NIS+ ドメインを設定する。『Solaris ネーミングの設定と構成』を参照

NIS_COLD_START ファイルが存在しない

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

cat /var/nis/NIS_COLD_START

データストアのローカルファイルを使用するか、あるいは、NIS+ クライアントを作成します。『Solaris ネーミングの設定と構成』を参照

NIS+ アクセスの問題

NIS+ のアクセス権に問題があると、DES 資格が適切でない、またはアクセス権が不十分なため NIS+ オブジェクトやテーブルを更新できないというエラーメッセージが表示されることがあります。表 5–2 を使用して、受け取った NIS+ エラーの原因を特定してください。

表 5–2 NIS+ アクセスの問題

問題 

情報の収集 

解決法 

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

次のコマンドを入力する。  

nisls -ld org_dir

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

nischmod コマンドを使って org_dir. に対するアクセス権を変更する

たとえば、グループに作成アクセス権を追加する場合は、次のコマンドを使用する  

nischmod g+c org_dir

 

通常、org_dir ディレクトリオブジェクトでは、所有者とグループにすべての権利 (読み取り、変更、作成、 削除) が与えられ、その他と未認証に読み取りアクセス権だけが与えられる

詳細は nischmod(1) のマニュアルページを参照

 

DHCP サーバー名が org_dir オブジェクトの所有者としてリストされているか、グループの主体としてリストされていなければならない。さらに、このグループに作成アクセス権が与えられていなければならない。 次のコマンドでグループをリストする

nisls -ldg org_dir

 

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

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

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

niscat -o org_dir

次のような行を探す 

Group :"admin.myco.com."

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

nisgrpadm -l groupname

nisgrpadm コマンドを使ってサーバーシステムの名前をグループに追加する

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

nisgrpadm -a admin.myco.com pacific.myco.com

 

入力例 

nisgrpadm -l admin.myco.com

サーバーシステムの名前がグループの明示的なメンバーとしてリストされるか、グループの暗黙的なメンバーとして含まれているはずである 

詳細は、nisgrpadm(1) のマニュアルページを参照

DHCP サーバーが、NIS+ cred テーブルに有効なデータ暗号化規格 (DES) 資格を持っていない

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

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

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

  

nisaddcred -p unix.mercury@Faxco.COM \ -P mercury.Faxco.COM.DES Faxco.COM.

  

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

詳細は、nisaddcred(1M) のマニュアルページを参照

IP アドレスの割り当てエラー

クライアントが IP アドレスを取得または確認しようとすると、次の問題が syslog やサーバーデバッグ出力に書き込まれることがあります。

表 5–3 IP アドレスの割り当てとリースに関する問題

エラーメッセージ 

説明 

解決法 

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 アドレスが選択された後で、かつ重複アドレスチェックが完了する前に、その IP アドレスレコードが DHCP ネットワークテーブルから削除されると、この状態になることがある 

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

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

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

DHCP マネージャまたは pntadm を使って DHCP ネットワークテーブルを表示する。IP アドレスのレコードがない場合は、DHCP マネージャ (「アドレス (Addresses)」タブの「編集 (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 アドレスが手動で割り当てられている。割り当てられる IP アドレスは 1 つでなければならない。サーバーは、ネットワークテーブルにある、最後に手動で割り当てられたアドレスを選択する  

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

No more IP addresses on n.n.n.n network.

指定されたネットワーク上で 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 に準拠していないと、この状態になることがある 

クライアントのソフトウェアを更新する 

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. クライアントをデバッグモードで実行する

  2. サーバーをデバッグモードで実行する

  3. snoop を起動してネットワークのトラフィックを監視する

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

収集した情報は、問題の原因がクライアントにあるのか、サーバーにあるのか、リレーエージェントにあるのかを特定して解決策を見つける上で役立ちます。

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

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

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

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

  2. 次のコマンドで DHCP クライアントデーモンをいったん停止してからデバッグモードで起動します。


    # pkill -x dhcpagent
    # /sbin/dhcpagent -d1 -f &
    # ifconfig interface dhcp start
    

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

DHCP サーバーをデバッグモードで実行する方法
  1. サーバーシステム上でスーパーユーザーになります。

  2. 次のコマンドで DHCP デーモンをいったん停止してからデバッグモードで起動します。


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

    さらに、デーモンの実行で一般に使用する in.dhcpd のコマンド行オプションを指定します。たとえば、デーモンを BOOTP リレーエージェントとして実行する場合は、in.dhcpd -d -v コマンドに -r オプションを付けます。

    デバッグモードで実行すると、デーモンによって画面に DHCP や BOOTP の要求を処理しているというメッセージが表示されます。サーバーデバッグ出力については、DHCP サーバーのデバッグ出力を参照してください。

snoop を使用して 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 le0 -o /tmp/snoop.output udp port 67 or udp port 68
    

    必要な情報を入手した後 Control-C を押してsnoop を明示的に停止するまで、snoop はインタフェースを監視し続けることに注意してください。

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

    dhcpagent の再起動については、DHCP クライアントをデバッグモードで実行する方法 を参照してください。

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


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

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

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

dhcpagent コマンドの -d スイッチは、クライアントを冗長性 1 のデバッグモードにします。-f スイッチは、出力を syslog ではなくコンソールに送信します。ifconfig コマンド行の interface は、le0 など、 クライアントのネットワークインタフェースの名前で置き換えてください。

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

DHCP クライアントのデバッグ出力

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


例 5–1 DHCP クライアントの通常のデバッグ出力例


/sbin/dhcpagent: debug: set_packet_filter: set filter 0x27fc8 (DHCP filter) 
/sbin/dhcpagent: debug: init_ifs: initted interface le0 
/sbin/dhcpagent: debug: insert_ifs: le0: sdumax 1500, optmax 1260, hwtype 1, hwlen 6 
/sbin/dhcpagent: debug: insert_ifs: inserted interface le0 
/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 le0 to 255.255.192.0 
/sbin/dhcpagent: info: setting IP address on le0 to 102.23.3.233 
/sbin/dhcpagent: info: setting broadcast address on le0 to 102.23.63.255 
/sbin/dhcpagent: info: added default router 102.23.0.1 on le0 
/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: le0 acquired lease, expires Tue Aug 10 16:18:33 1999 
/sbin/dhcpagent: info: le0 begins renewal at Tue Aug 10 15:49:44 1999 
/sbin/dhcpagent: info: le0 begins rebinding at Tue Aug 10 16:11:03 1999

クライアントが DHCP サーバーと通信できない場合は、例 5–2 のようなデバッグ出力が表示されます。


例 5–2 DHCP クライアントのデバッグ出力例


/sbin/dhcpagent: debug: set_packet_filter: set filter 0x27fc8 (DHCP filter)
/sbin/dhcpagent: debug: init_ifs: initted interface le0 
/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 を使用して DHCP ネットワークトラフィックを監視する方法 の説明に従って snoop コマンドをサーバーで実行し、クライアントのパケットがサーバーに届いているかどうかを確認します。

DHCP サーバーのデバッグ出力

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


例 5–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: 102.21.255.255 
Netmask: 255.255.0.0  
Address: 102.21.0.2  
Monitor (0006/nf0) started...  
Thread Id: 0006 - Monitoring Interface: nf0 *****  
MTU: 4352      Type: DLPI  
Broadcast: 102.22.255.255  
Netmask: 255.255.0.0  
Address: 102.22.0.1  
Monitor (0007/qe0) started...  
Thread Id: 0007 - Monitoring Interface: qe0 *****  
MTU: 1500      Type: DLPI   
Broadcast: 102.23.63.255  
Netmask: 255.255.192.0  
Address: 102.23.0.1  
Read 33 entries from DHCP macro database on Tue Aug 10 15:10:27 1999 
Datagram received on network device: qe0  
Client: 0800201DBA3A is requesting verification of address owned by 102.21.0.4 
Datagram received on network device: qe0  
Client: 0800201DBA3A is requesting verification of address owned by 102.21.0.4  
Datagram received on network device: qe0  
Client: 0800201DBA3A is requesting verification of address owned by 102.21.0.4  
Datagram received on network device: qe0  
Client: 0800201DBA3A maps to IP: 102.23.3.233  
Unicasting datagram to 102.23.3.233 address.  
Adding ARP entry: 102.23.3.233 == 0800201DBA3A  
DHCP EXTEND 0934312543 0934316143 102.23.3.233 102.21.0.2 
          0800201DBA3A SUNW.SPARCstation-10 0800201DBA3A

例 5–4 は DHCP デーモンのデバッグ出力です。この DHCP デーモンは、BOOTP リレーエージェントとして起動された後、クライアントの要求を DHCP サーバーに、サーバーの応答をクライアントにそれぞれ伝達しています。


例 5–4 BOOTP リレーに関するデバッグ出力の例


Relay destination: 102.21.0.4 (blue-servr2)     network: 102.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: 102.21.255.255  
Netmask: 255.255.0.0  
Address: 102.21.0.2  
Monitor (0006/nf0) started...  
Thread Id: 0006 - Monitoring Interface: nf0 *****  
MTU: 4352      Type: DLPI  
Broadcast: 102.22.255.255  
Netmask: 255.255.0.0  
Address: 102.22.0.1  
Monitor (0007/qe0) started...  
Thread Id: 0007 - Monitoring Interface: qe0 *****  
MTU: 1500      Type: DLPI  
Broadcast: 102.23.63.255  
Netmask: 255.255.192.0  
Address: 102.23.0.1  
Relaying request 0800201DBA3A to 102.21.0.4, server port.  
BOOTP RELAY-SRVR 0934297685 0000000000 0.0.0.0 102.21.0.4 0800201DBA3A 
N/A 0800201DBA3A  
Packet received from relay agent: 102.23.0.1  
Relaying reply to client 0800201DBA3A  
Unicasting datagram to 102.23.3.233 address.  
Adding ARP entry: 102.23.3.233 == 0800201DBA3A  
BOOTP RELAY-CLNT 0934297688 0000000000 102.23.0.1 102.23.3.233 0800201DBA3A 
N/A 0800201DBA3A  
Relaying request 0800201DBA3A to 102.21.0.4, server port.  
BOOTP RELAY-SRVR 0934297689 0000000000 0.0.0.0 102.21.0.4 0800201DBA3A 
N/A 0800201DBA3A  
Packet received from relay agent: 102.23.0.1  
Relaying reply to client 0800201DBA3A  
Unicasting datagram to 102.23.3.233 address.  
Adding ARP entry: 102.23.3.233 == 0800201DBA3A

問題がある場合は、このデバッグ出力が警告またはエラーメッセージを表示します。表 5–4 からエラーメッセージと解決策を見つけてください。

表 5–4 DHCP サーバーのエラーメッセージ

メッセージ 

説明 

解決法 

ICMP ECHO reply to OFFER candidate: ip_address disabling

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

構成するアドレスが使用されていないことを確認する 

No more IP addresses on network_address network.

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

DHCP マネージャまたは pntadm を使って IP アドレスを追加する。DHCP デーモンが複数のサブネットを監視している場合は、必ずそのクライアントが属するサブネットに IP アドレスを追加する

No more IP addresses for network_address network BOOTP 互換モードで DHCP デーモンを実行時 (-b オプション)

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

DHCP マネージャを使用して、BOOTP アドレスを割り当てる 

Request to access nonexistent per network database:database_name in datastore: datastore.

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

DHCP マネージャまたは pntadm を使用して、DHCP ネットワークテーブルと新しい IP アドレスを作成する

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

DHCP サーバーの構成の際にサブネットの DHCP ネットワークテーブルが作成されていない 

DHCP マネージャまたは pntadm を使用して、DHCP ネットワークテーブルと新しい IP アドレスを作成する

Client using non_RFC1048 BOOTP cookie.

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

このデバイスを構成する必要がない場合は、このメッセージを無視する 

DHCP snoop 出力

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

snoop の出力を評価するためには、要求が BOOTP リレーエージェントを介して行われるべきであるかどうかなど、本来の動作がどのようなものであるかを知っている必要があります。さらに、関係するシステムの (および、複数のネットワークインタフェースがある場合は、それらの) MAC アドレスや IP アドレスを知っていないと、それらの値が正しいかどうかを判断できません。次の例は、DHCP 肯定応答メッセージの通常の snoop 出力を示しています。このメッセージは、blue-servr2 上の DHCP サーバーから MAC アドレスが 8:0:20:8e:f3:7e のクライアントに送信されたものです。このメッセージを見ると、サーバーがクライアントに IP アドレスとして 172.168.252.6 を、ホスト名として white-6 を割り当てていることがわかります。さらに、このメッセージには、クライアントに対するいくつもの標準的なネットワークオプションといくつかのベンダー固有のオプションが含まれています。


例 5–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 = 102.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) = 172.168.252.6 
DHCP: Next server address (siaddr) = 102.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 = 102.21.0.4 
DHCP: Subnet Mask = 255.255.255.0 
DHCP: Router at = 172.168.252.1 
DHCP: Broadcast Address = 172.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 = 102.21.0.4 
DHCP: DNS Domain Name = sem.west.dor.com 
DHCP: DNS Servers at = 102.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/s28/base.s28s_nxt/latest/Solaris_8/Tools/Boot"
DHCP:   (12) 32 octets  "/export/s28/base.s28s_nxt/latest" 
DHCP:   (07) 27 octets  "/platform/sun4m/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.west.dor          
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/s28/bcvf.s          
432: 3238 735f 776f 732f 6c61 7465 7374 2f53    28s_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/s28          
480: 2f62 6173 652e 7332 3873 5f77 6f73 2f6c    /bcvf.s28s_btf/l         
496: 6174 6573 7407 1b2f 706c 6174 666f 726d    atest../platform          
512: 2f73 756e 346d 2f6b 6572 6e65 6c2f 756e    /sun4m/kernel/un          
528: 6978 0807 4553 5435 4544 54ff              ix..EST5EDT.  

不正確な DHCP 構成情報に伴う問題

DHCP が受信したネットワーク構成情報の中に誤った NIS ドメイン名や不正確なルーター IP アドレスといった不正確な情報がある場合は、このクライアントの DHCP サーバーが処理したマクロの中に正しくないオプションの値がないかを調べる必要があります。

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

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

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

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

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

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

表 5–5 DHCP クライアントのホスト名要求に伴う問題と解決策

起こりうる問題 

情報の収集 

解決法 

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

  1. snoop またはネットワークパケットを獲得するその他のアプリケーションをクライアントで実行する。DHCP サーバー識別子を探し、サーバーの IP アドレスを得る。

  2. DHCP サーバーにログインし、動的更新を行うように構成されているかを確認する。/etc/inet/dhcpsvc.conf ファイルで UPDATE_TIMEOUT のエントリを探す。

  3. DNS サーバーの /etc/named.conf ファイルで、適切なドメインの zone セクションの allow-update キーワードに DHCP サーバーの IP アドレスが指定されているかを確認する

DHCP サーバーと DNS サーバーの構成方法については、DHCP サーバーによる動的 DNS 更新の有効化を参照する

クライアントから 2 つの DHCP サーバーにアクセスできる場合は、両方のサーバーが DNS 更新を行うように構成されている必要がある 

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

snoop またはネットワークパケットを獲得するその他のアプリケーションをサーバーで実行し、クライアントからのパケットに FQDN オプションがないかを確認する

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

クライアントにアドレスを提供する DHCP サーバーがクライアントの DNS 名を知らない 

DHCP サーバーで、DNSdmain オプションに有効な値が設定されているかを確認する

このクライアントに対して処理されるマクロの DNSdmain オプションに正しい DNS ドメイン名を設定する。DNSdmain は通常、ネットワークマクロ

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

syslog を調べて、There is no n.n.n.n dhcp-network table for DHCP client's network.DHCP network record for n.n.n.n is unavailable, ignoring request. のような DHCP サーバーのメッセージを見つける。

対応する IP アドレスがない名前か、DHCP サーバーが管理するアドレスに対応する名前を選択するようにクライアントを構成する 

クライアントが要求したホスト名に対応する IP アドレスは、現在使用中であるか、リースされているか、別のクライアントに提案中である 

syslog を調べて、ICMP ECHO reply to OFFER candidate:n.n.n.n のような DHCP サーバーのメッセージを探す。

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

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

DNS サーバーの /etc/named.conf ファイルを調べ、DHCP サーバーのドメインに対する適切な zone セクションでallow-update キーワードを持つ DHCP サーバーの IP アドレスを探す

DNS サーバーの構成方法については、DHCP クライアント用に動的 DNS 更新を有効にする方法 を参照する

DHCP サーバーに複数のインタフェースがある場合は、DHCP サーバーのすべてのアドレスからの更新を受け付けるように DNS サーバーを構成する必要DNS サーバーのデバッグ機能を有効にして、更新が DNS サーバーに届いているか確認する。届いている場合は、更新が行われない原因をデバッグ出力で調べる 

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

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

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

nslookup cathedral.hills.oneonta.org 121.76.178.11

更新は正常に行われたが、割り当てられた時間を超えている場合は、タイムアウト値を増やす必要があるDNS 更新を有効にする手順の 手順 5 を参照する