TCP/IP とデータ通信

方法および注意事項

以下の障害追跡手法は、原因を特定できない場合の問題解決に役立ちます。

この章では、上記の手法を詳細に説明します。また、本書を使用しても問題を解決することができない場合の問い合わせ先を紹介します。

snoop を使用してネットワークのトラフィックを監視

snoop コマンドを使用してネットワークのトラフィックを監視することができます。

snoop を使用してネットワークのトラフィックを監視するには

  1. クライアントと同じサブネット上の Solaris サーバーまたは BOOTP/DHCP 中継エージェントに、スーパーユーザーとしてログインします。

  2. snoop コマンドを使用してネットワークのトラフィックを監視します。たとえば、以下のように入力します。


    snoop -o /tmp/output udp port 67 または udp port 68
    

  3. クライアントをブートして、クライアントとサーバー (複数可) との間の DHCP メッセージの交換を監視します。

  4. 以下のように入力します。


    snoop -i /tmp/output -x 0 -v
    

クライアントのハードウェアアドレスを指定することによって snoop の適用範囲を制限することができます。DHCP/BOOTP プロトコルを解釈できる snoop は、Solaris 2.5 オペレーティング環境およびその互換バージョンで使用できます。

DHCP クライアントをデバッグモードで動作

DHCP クライアントをデバッグモードで動作させると、クライアントとサーバーとの間で進行中のほとんどの対話が明らかになります。クライアントが動作しているベースの製品については、関連のマニュアルを参照してください。

Solaris クライアントをデバッグモードで動作させるには

DHCP クライアントのデバッグは、DHCP クライアントをブートした後でのみ可能です。DHCP に問題が発生した場合は、DHCP を無効にしてブートする必要があります。以下の手順は、ホストのブート後に一度だけ実行することができます。ただし、シングルユーザーモードでの実行を推奨します。

  1. DHCP エージェントを設定して、サーバーと交換するパケットの詳細をログに記録することができます。この記録を行うには、以下のようにして、デバッグモードをオンに設定してエージェントを開始する必要があります。


    /sbin/dhcpagent -n -d3 &
    

    -d3 フラグはレベル 3 でのデバッグをオンに設定し、-n フラグは「DHCP が正常な場合でもインタフェースを構成してはならない」という意味です。


    注 -

    レベル 3 およびそれより下位のレベルでは、ユーザーに適切な情報が戻されます。レベル 3 より上位のレベルは、情報が生のパケットのまま戻されるため、開発者の方または高度な専門知識を持つ方だけが使用します。


  2. dhcpagent のインスタンスは一度に 1 つだけが実行可能なため、ここでエージェントを開始する前に、すでに起動済みのエージェントをすべて停止する必要があります。エージェントを停止するには、エージェントのプロセス ID を調べて、以下のように終了シグナルを送信します。


    kill -TERM process_id_of_dhcpagent
    

  3. エージェントをデバッグモードで開始した後で、以下のように入力して、手動でインタフェースの構成を試行します。


    ifconfig interface_name auto_dhcp
    

    送受信されたパケットが表示されます。


    注 -

    DHCP がインタフェースの構成を試行している間、インタフェースはパケットの送受信を行うことができません。インタフェースがダウンしている間は、その他のネットワークサービス (たとえば NIS や NFS) が悪影響を受ける場合があります。


DHCP サーバーをデバッグモードで動作させるには

DHCP サーバーを停止して、デバッグモードで再起動します。以下に例を示します。

  1. 停止スクリプトを使用してサーバーを停止します。


    /etc/init.d/dhcp stop
    

  2. サーバーをデバッグ・冗長モードで再起動します。ただし、/etc/init.d/dhcp 起動スクリプト内に指定されているフラグに加えて、-d フラグと -v フラグを使用します。たとえば、i オプションが存在する場合は、以下の形式でコマンドを入力します。


    /usr/lib/inet/in.dhcpd -i interface_names  -d -v
    

DHCP クライアントの再起動

DHCP クライアントをデバッグモードで動作させた後で、リブートを試行することができます。リブートを行うと、ネットワークのハードウェアとソフトウェアがリセットされます。

DHCP クライアントを再起動するには

    クライアントをリブートします。

DHCP サーバーを再起動するには

  1. DHCP サーバーにスーパーユーザーでログインします。

  2. 以下のように入力します。


    /etc/init.d/dhcp stop
    

    約 10 秒間待機します。

  3. 以下のように入力します。


    /etc/init.d/dhcp start
    

デバッグの完了後に DHCP サーバーを再起動するには

  1. DHCP サーバーのデーモンを再起動します。

  2. DHCP サーバーにスーパーユーザーでログインします。

  3. 以下のように入力します。


    /etc/init.d/dhcp stop
    

    約 10 秒間待機します。

  4. 以下のように入力します。


    /etc/init.d/dhcp start