DHCP クライアントで発生する可能性がある問題は、一般的に次のカテゴリに分類されます。
この節では、ネットワークに DHCP クライアントを追加する際に発生する可能性がある問題について説明します。
クライアントソフトウェアを使用可能にして、マシンを再起動すると、クライアントは DHCP サーバーに通信してそのネットワークの設定を取得しようとします。クライアントがサーバーと通信できない場合は、次のようなメッセージが表示されます。
DHCP or BOOTP server not responding |
問題を判定するには、クライアントとサーバーの両方から診断情報を収集して、その結果を分析する必要があります。情報を収集するために、次のことができます。
クライアントをデバッグモードで実行する
サーバーをデバッグモードで実行する
snoop を起動してネットワークのトラフィックを監視する
収集した情報を使用して、問題がクライアント側にあるのかサーバーマシン側にあるのか、あるいはリレーエージェントにあるのかを判定し、解決法を見つけることができます。
Solaris DHCP クライアント以外のクライアントを実行している場合は、クライアントのデバッグモードでの実行については、そのクライアント用のマニュアルを参照してください。
Solaris DHCP クライアントを実行している場合は、次の手順に従います。
クライアントシステムでスーパーユーザーになります。
DHCP クライアントデーモンを終了し、次のコマンドを使用してそのデーモンをデバッグモードで再起動します。
# pkill -x dhcpagent # /sbin/dhcpagent -d1 -f & # ifconfig interface dhcp start |
デバッグモードで実行すると、クライアントデーモンは画面に DHCP の要求を実行中であるというメッセージを表示します。クライアントデバッグ出力については、「DHCP クライアントデバッグ出力」を参照してください。
DHCP サーバーデーモンを終了し、次のコマンドを使用してそのデーモンをデバッグモードで再起動します。
# pkill -x in.dhcpd # /usr/lib/inet/in.dhcpd -d -v |
また、デーモンを実行する際に通常使用する in.dhcpd コマンド行オプションも使用する必要があります。たとえば、デーモンを BOOTP リレーエージェントとして実行する場合は、in.dhcpd -d -v コマンドに -r オプションを付けます。
デバッグモードで実行すると、デーモンによって画面に DHCP や BOOTP の要求を処理しているというメッセージが表示されます。サーバーデバッグ出力については、「DHCP サーバーデバッグ出力」を参照してください。
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 はインタフェースを監視し続けることに注意してください。
クライアントシステムを起動するか、クライアントシステムで dhcpagent を再起動します。
クライアントの再起動については、「DHCP クライアントをデバッグモードで実行する方法」で説明されています。
サーバーシステムで 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 出力」を参照してください。
例 12-1 では、DHCP クライアントが DHCP 要求を送信し、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 サーバーと通信できない場合は、例 12-2 のようなデバッグ出力が表示されます。
/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 サーバーと BOOTP リレーエージェントに関する出力の例を示しています。例 12-3 は DHCP サーバーに関するデバッグ出力を示します。このサーバーは起動直後で、応答しない別の 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 |
例 12-4 は、BOOTP リレーエージェントとして起動し、クライアントから DHCP サーバーへ要求をリレーし、サーバーの回答をクライアントにリレーする DHCP デーモンからのデバッグ出力を示します。
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 |
問題がある場合は、このデバッグ出力が警告またはエラーメッセージを表示します。表 12-4 を使用してエラーメッセージまたは条件を検索し、解決法を見つけてください。
表 12-4 DHCP サーバーのエラーメッセージ
メッセージ |
説明 |
解決法 |
---|---|---|
ICMP ECHO reply to OFFER candidate: ip_address disabling |
DHCP サーバーは、クライアントに IP アドレスを提供する前に、アドレスを ping してそのアドレスが使用されていないことを確認する。クライアントが回答する場合、そのアドレスは使用されている |
設定するアドレスが使用されていないことを確認する |
No more IP addresses on network_address network. |
ネットワークテーブルごとのクライアントのアドレスの中に利用可能な IP アドレスがない |
DHCP Manager または pntadm を使用して IP アドレスを追加割当する。DHCP デーモンが複数のサブネットを監視している場合は、追加のアドレスが必ずクライアントが割り当てられているサブネット用であること |
No more IP addresses for network_address network BOOTP 互換モードで DHCP デーモンを実行時 (-b オプション) |
BOOTP はリース期間を使用しないので、DHCP サーバーは、BOOTP クライアントに割り当てるために設定された BOOTP フラグを持つ空きアドレスを検索する |
DHCP Manager を使用して、BOOTP アドレスを割り当てる |
Request to access nonexistent per network database: database_name in datastore: datastore. |
DHCP サーバーの設定中に、サブネット用の DHCP ネットワークテーブルが作成されなかった |
DHCP Manager または pntadm を使用して、DHCP ネットワークテーブルと新しい IP アドレスを作成する |
There is no table_name dhcp-network table for DHCP client's network. |
DHCP サーバーの設定中に、サブネット用の DHCP ネットワークテーブルが作成されなかった |
DHCP Manager または pntadm を使用して、DHCP ネットワークテーブルと新しい IP アドレスを作成する |
Client using non_RFC1048 BOOTP cookie. |
ネットワーク上のデバイスが、BOOTP のサポートされていない実装にアクセスしようとした |
このデバイスを設定する必要がない場合は、このメッセージを無視する |
Client client_id is trying to verify unrecorded address ip_address, ignored. |
クライアント上の /etc/dhcp/interface.dhc ファイルにある IP アドレスとクライアント ID が、DHCP サーバーで確認された DHCP ネットワークデータベースにある IP アドレスやクライアント ID と一致しない この状態は、ローカルファイルを DHCP データ保存方法として使用し、情報を共有しない複数の DHCP サーバーを持っているか、DHCP ネットワークテーブルを変更した場合に発生する |
次のコマンドを入力して、クライアントの DHCP プロトコルを再起動する ifconfig interface dhcp release ifconfig interface dhcp start |
snoop 出力に、DHCP クライアントマシンと DHCP サーバーマシンの間でパケットが交換されていることが表示されます。各マシンの IP アドレスと、中間のリレーエージェントやルーターがパケットごとに表示されます。パケットの交換が表示されない場合は、クライアントマシンがサーバーマシンとまったく通信できていない場合がありますが、これは下位の問題です。一般的な障害追跡の方法については、「一般的な障害追跡方法」を参照してください。
snoop 出力を評価するためには、要求が BOOTP リレーエージェントを通して送受信される必要があるなど、期待される動作の内容を理解しておく必要があります。また、関連するシステムの MAC アドレスや IP アドレス、システムが複数の場合はネットワークインタフェースについても把握し、それらの値が期待されるものであることを判定できるようにしておく必要があります。例 12-5 では、blue-servr2 上にある DHCP サーバーから、MAC アドレスが 8:0:20:8e:f3:7e で、割り当てられた IP アドレスが 192.168.252.6、ホスト名が white-6 のクライアントに送信された DHCP 確認メッセージに関する通常の 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) = 192.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 = 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 = 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/base.s 432: 3238 735f 776f 732f 6c61 7465 7374 2f53 28s_nxt/latest/S 448: 6f6c 6172 6973 5f38 2f54 6f6f 6c73 2f42 olaris_8/Tools/B 464: 6f6f 740c 202f 6578 706f 7274 2f73 3238 oot. /export/s28 480: 2f62 6173 652e 7332 3873 5f77 6f73 2f6c /base.s28s_nxt/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 が受信したネットワーク設定情報の中に、誤った NIS ドメイン名や不正確なルーター IP アドレスのように不正確な情報がある場合は、このクライアントの DHCP サーバーが処理したマクロの中のオプションの値を調べる必要があります。
次の一般的なガイドラインを使用して、不正確な情報がクライアントに伝えられた場所を判定してください。
「DHCP サーバーで定義されたマクロを表示する方法 (DHCP Manager)」で説明されている、サーバーで定義されたマクロを調べてください。「マクロ処理の順序」にある情報を再検討して、このクライアントについて自動的に処理されたマクロを判定します。
ネットワークテーブルを調べて、クライアントの IP アドレスに設定マクロとして割り当てられたマクロがもしあればその内容を判定します。詳細については、「DHCP サービスで IP アドレスを使用して作業する」を参照してください。
複数のマクロで発生するオプションに注意して、最後に処理されるマクロでオプションに入力したい値を設定されることを確認します。
適切なマクロを編集して、正確な値がクライアントに確実に伝えられるようにします。「DHCP マクロの変更」を参照してください。