Preboot eXecution Environment(PXE、時にはpixieと発音)
PXEまたはネットワークブートにより、BIOSはネットワーク経由でオペレーティングシステム(OS)をダウンロードしてブートできます。Cisco NX-OSルータでは、ブートローダ[loader>]のKickstartと同等です。
PXEブートでは、PXEクライアントのBIOSは設定されたブート順序を参照し、PXEブートが設定されている場合は、ハードウェアがPXEブートをサポートしているかどうかを判断します。有効な場合、NICのIPアドレスのDHCPを試みます。DHCP要求では、PXEクライアントは67 [Filename]などの特定のDHCPオプションを要求します。DHCP応答では、DHCPサーバが要求されたオプションで応答します。次に、PXEクライアントは、DHCP応答で指定されたファイル名[Network Bootstrap Program(NBP)]をダウンロードし、それを実行してサーバにロードされたOSを取得します。
PXEクライアントを別のTFTPサーバにリダイレクト
デフォルトでは、PXEクライアントは、DHCP応答でオプション66、next-server、またはオプション60/43を受信して別のIPアドレスにリダイレクトしない限り、DHCPサーバのDHCP応答でファイル名のTFTPダウンロードを試みます。次のサーバアドレスは、DHCPとTFTPに異なるサーバを使用するように指定するためにbootpとPXEで使用されます。
next-server (オプション12)およびbootfile (オプション0) DHCPオプションは、通常、初期ブートローダのTFTPサーバとファイル名を指定します。ブートファイルは、DHCPDISCOVERメッセージで特定のタイプのブートファイルを要求するために、クライアントによってオプションで使用されます。これは、DHCPOFFERのDHCPサーバによってブートファイルのディレクトリパスとファイル名を完全に指定するために使用されます。
オプション67もファイル名に指定する必要があります。bootfileとoption 67の違いは、DHCP応答でファイル名が見つかった場所です。予約済みフィールドでは、応答パケットのオプション部分に番号が付けられませんが、特定の順序で応答が示されます。
たとえば、次の図の番号付きオプションの前に、サーバホスト名とブートファイルが表示されます。

トラブルシューティングに関する重要事項
PXEブートクライアントがDHCP要求パケットのオプション55パラメータ要求リストで特定のDHCPオプションを要求しない場合、DHCPオプションはDHCPサーバーで構成されている場合でもDHCPサーバー応答パケットに含まれません。スニファトレースを取得して、要求されたオプションと指定されたオプションを確認することが重要です。
注:ACIがDHCPサーバに対してDHCP ipヘルパーアドレス(DHCPリレー)に設定されている場合、最初のホップリーフスイッチでtcpdumpを使用できます。リーフスイッチはDHCPリレーとして機能する必要があるため、CPUはDHCPパケットを処理してDHCPサーバに転送する必要があります。adminアカウントを使用してログインし、コマンド
tcpdump -i any -w /tmp/packet.pcap "port 67"
ホストとDHCPサーバ間のDHCPパケットをキャプチャします。リーフスイッチにOOB IPアドレスがない場合は、adminユーザ名を使用してapicにログインし、
scp admin@<switch TEP>:/tmp/packet.pcap /home/admin
その後、GUIのIPアドレスを使用してAPICからファイルを転送できます。
PXEサーバがサポートするファイル名によって、多くの異なるファイル名を使用できます。Linuxサーバの最も一般的なブートローダーファイル名は「/pxelinux.0」で、通常は/tftpbootディレクトリにあります。
PXEブートで使用される可能性のあるDHCPオプション
名前 |
オプション番号 |
コンフィギュレーション |
ブートファイル |
0 |
Bootfile <file> |
DEFAULT_ROUTER |
3 |
Default-router 10.250.118.1 |
ネットワーク |
11 |
network 10.250.118.0 255.255.255.0 |
NEXT_SERVER |
12 |
Next-server 10.45.67.8 |
マッチングオプションを使用して送信60 |
43 |
option 43 hex 06010708070000010afbd015 |
オプション43の一致する文字列 |
60 |
オプション60 「PXEClient」 |
単一のTFTPサーバ |
66 |
オプション66 ip 10.240.221.21 |
PXEファイル名 |
67 |
オプション67 "/pxelinux.0" |
TFTPサーバリスト |
150 |
選択肢150 10.240.208.21 |
DHCPサーバがオプション60文字列と一致する場合、オプション43がPXEクライアントに返されます。これは、クライアントから送信されたオプション60文字列です。オプション43には、昇順の複数のサブオプションがあります(オプション6から8まで)。
サブオプション6は次のように定義されます。
06:サブオプション6
01 :1バイト長
07 :PXE_BOOT_SERVERSリストを使用し、マルチキャストおよびブロードキャスト検出を無効にする(ユニキャストのみ)
サブオプション8は次のように定義されます。
08:サブオプション8
07 :サイズ08オプション(バイト)
0000:PXEサーバタイプ0(PXEブートサーバ)
01 :PXEサーバーの数
0afbd015:10.251.208.21
DHCP設定のオプションは次のようになります
オプション43 hex 06010708070000010afbd015
https://support.microsoft.com/en-us/kb/259670によると、DHCPサーバに次のオプションが設定されている場合:
60 =クライアントID(「PXEClient」に設定)
66 =ブートサーバホスト名またはIPアドレス
67 =ブートファイル名
また、DHCPサーバからの初期DHCPオファーにこれらのブートオプションが含まれている場合、PXEクライアントからDHCPサーバのポート4011に接続しようとすると、「Proxy DHCP service did not reply on Port 4011」エラーが発生します。
注:Microsoftでは、PXEクライアントをリダイレクトするためにDHCPサーバでこれらのオプションを使用することはサポートしていません。
顧客トポロジ
この例では、ユーザが2つの異なるACIファブリックを使用しています。ACIファブリック#1では、PXEクライアントはDHCPを実行し、ファブリック内のMicrosoftサーバからブートしていました。他のACIファブリックでは、PXEクライアントはL3Outを介して外部IOS-XE 4507ルータからDHCPを実行し、同じMicrosoftサーバを使用してファイルをダウンロードし、DHCPサーバがTFTPサーバとして機能しないようにします。
お客様が最終的に採用した解決策は、Linux DHCPサーバへの移行でした。DHCPパケットトレースを分析すると、お客様がオプション43文字列を誤って設定し、IOS-XE DHCPサーバが機能しなかったようです。
ACIで動作するには、次の手順を実行します。
- DHCPクライアントのパケットをリレーするようにDHCPリレーを設定する必要がある
- コントラクトでは、L3OutとPXEクライアントが存在するEPGの間のDHCPおよびTFTPパケットを許可する必要があります
このコマンドを使用すると、リーフスイッチでTFTPパケットの契約ドロップが発生する場合があります
calo2-leaf2# show logging ip access-list internal packet-log | grep <client ip address>
このコマンドは、バージョン2.0でdenyまたはpermitキーワードを追加するように変更され、
calo2-leaf2# show logging ip access-list internal packet-log deny | grep <client ip address>
この例では、PXEクライアントはオプション66を要求しておらず、オプション60を指定し、オプション55パラメータリストでオプション43を要求していました。また、ネクストサーバ(オプション12)も要求していました。 オプション67を介してPXEファイル名を要求していることに注意してください。

応答にbootfileとoption 67が示されます

リーフスイッチのTCPダンプ: