ネットワーク・プロトコル・アナライザーを使用した PXE ブートのトラブルシューティング

ドキュメント

メンテナンス & パフォーマンス

000006544

2020/02/12

ソリューション:

この情報では、PXE ブートが失敗する原因となる問題については詳しく説明していません。このドキュメントでは、PXE ブートを成功させるための要件について説明し、PXE サーバーを使用できない場合の対応について説明します。

PXE リモートブートプロセスは DHCP プロトコルに基づきます。PXE の動作原理を理解するには、まず DHCP の基礎を理解しておく必要があります。


Dhcp

DHCP は、一般に BootP と呼ばれるブートストラップ・プロトコルをベースとしており、これによりシステムは IP アドレスを取得し、ネットワークからリモートブートを行うことができます。DHCP は、システム情報を渡すための動的 IP アドレス指定、オプションフィールドなどの機能を追加します。

DHCP プロセスは、クライアントが DHCP 検出メッセージを使用してアドレスを要求することによって開始されます。この検出メッセージは、発信元ポートが 68 (Bootp クライアントの場合は Bootpc として定義されています)、宛先ポート 67 (Bootp サーバーの場合は Bootpc として定義) で、UDP パケットです。このディスカバー・メッセージには、送信元 MAC アドレスとして要求元ノードの MAC アドレスと、送信先 MAC アドレスとしてのブロードキャスト (すべて F) が表示されます。送信元 IP アドレスは0.0.0.0 で、宛先 IP アドレスは 255.255.255.255 (ブロードキャスト) です。要求には、最低限次のオプションが含まれています。

  • オプション 55 (パラメータ・リクエスト・リスト)
  • オプション 1 (サブネットマスク)
  • オプション 3 (ルーター)
  • オプション 6 (ドメインネームサーバー)

1つ以上の DHCP サーバーが DHCP サービスに応答する必要があります。DHCP OFFER メッセージは、宛先アドレスとしてサービスを要求しているクライアントの MAC アドレスを持つ UDP パケットです。ポートは元のリクエストと逆のものにする必要があります (発信元ポートは67、宛先ポートは68でなければなりません)。送信元 IP アドレスはオファーを tendering したサーバーのアドレスで、宛先 IP アドレスはブロードキャストです。このオファーには、要求されたオプションのパラメーターに対して提案された IP アドレスと応答を含めます。

クライアントは、DHCP リクエストを使用して、1つのオファーに応答します。リクエストメッセージは、検出メッセージと類似の UDP パケットで、同じ送信元ポートとアドレスを使用し、同じパラメーターを要求します。

サーバーは、要求されたすべての情報を使用して、DHCP ACK (ack) で応答します。ACK メッセージは、offer メッセージと同様の UDP パケットであり、オプションの情報がリクエストされています。


DHCP への PXE 拡張

PXE ブートプロセスは、コンピューターをリモートブートするために必要な情報を追加することによって、DHCP プロトコルを拡張します。その情報には、クライアント・ベンダーとクラスが含まれ、PXE サーバーがクライアント固有の画像を選択できるようにします。

PXE ブートを要求するシステムは、DHCP 発見メッセージを使用してベンダーとマシンクラスを特定し、画像ファイルの場所とファイル名を要求します。Pxe クライアントは、PXE サーバー経由で複数の画像が利用可能になる可能性があるので、マシンのベンダーとクラスを特定します。

PXE クライアントからの DHCP 検出メッセージには、次のオプションのパラメーター要求が含まれます。

  • 60–ベンダークラス id
  • 66– TFTP サーバー名 (ブートイメージをホストしている TFTP サーバーの名前を要求する)
  • 67– Bootfile 名 (ダウンロードする画像ファイルの名前)


PXE ブートの Ethereal * または Wireshark * トレースの確認

PXE ブート・プロセスには多くの交換が含まれます。

  1. PXE クライアントは、PXE オプションを入力して DHCP 検出を送信します。
  2. DHCP サーバーは、TCP/IP パラメーターを使用して DHCP オファーで応答します。
  3. PXE クライアントが DHCP リクエストで応答する
  4. DHCP サーバーは DHCP ACK で応答します。
  5. DHCP サーバーが PXE サーバーでもある場合、DHCP ACK では通常、TFTP サーバー名とブートファイル名が含まれています。PXE サーバーが別のシステムである場合は、初期 DHCP プロセスの後に、PXE サーバーと PXE クライアントの間で個別のリクエストを交換する必要があります。
    メモ
    • 最初の DHCP exchange が TFTP サーバー名とブートファイル名を持っていない場合は、次の2つのオプションを入力して、正常に DHCP ACK が表示されるまでトレースを確認してください。
    • PXE クライアントが TFTP サーバー名とブート・ファイル名を使用して受信確認を受信すると、クライアントは、起動ファイルの名前を含む TFTP 読み取り要求を使用して TFTP サーバーに接続します。
    • TFTP セッションが確立され、ファイル転送が完了するまで続行します。

図1は、PXE クライアントからの DHCP DISCOVER メッセージの Ethereal キャプチャのスクリーンショットです。オプション 55 (パラメータ・リクエスト・リスト) がハイライトされ、リクエストされているパラメーターがリストされます。

また、パラメーターには、TFTP サーバー名 (オプション 66) およびブート・ファイル名 (オプション 67) のリクエストも含まれています。オプション60でベンダークラス id も要求されています。要求への応答はオプションであり、PXE サーバーが DHCP サーバー (DHCP プロキシを使用している) とは異なるサーバーに接続していることをクライアントに通知するために使用されます。

DHCP DISCOVER
図 1.DHCP 検出

 

図2は、dhcp リクエストに対する DHCP ACK 応答を示しています。DHCP ACK には、DHCP OFFER に見られるのと同じオプションが含まれています。DHCP トランザクションが成功した場合、TFTP サーバーとブートファイル名がパケットに含まれていることに注意してください。

DHCP ACK
図 2.DHCP ACK

 

正常な DHCP 交換が終了した後、TFTP セッションが終了します。図3は、TFTP セッションの開始を示しています。

TFTP Session
図 3.TFTP セッション。

 

図4は、pxe ブートが失敗した場合の、PXE サーバーが存在しないことによるトレースを示しています。PXE クライアントが TFTP サーバー名 (オプション 66) とブートファイル名 (オプション 67) を要求しましたが、表示される DHCP オファーにはオプション66または67は含まれません。この場合、PXE クライアントでは、PXE ブート操作を完了するために必要なオプションを持たない DHCP OFFER 応答の後に、dhcp OFFER 応答を繰り返し送信します。

DHCP OFFER
図 4.DHCP OFFER
PXE サーバーを使用できない場合