コマンドラインからPXEをテストするにはどうすればいいですか?

コマンドラインからPXEをテストするにはどうすればいいですか?

私は「PXE ブート サーバー」の設定に取り組んでいます (もしそれが可能なら)。私が使用する必要があるのは、TPlink ルーター (TL-ER7206 v1.0) です。これは、「オプション 66」で DHCP サービスを提供します。これは、TFTP サーバーの IP アドレスに設定する必要があります (ただし、ファイル名を設定する場所がないようです)。Linux サーバーで DHCP を設定し、ルーターの DHCP を無効にする必要があるかもしれませんが、ルーターでどこまでできるかを見てみたいと思います。最終的には、PXE ブート クライアントがインストールするさまざまな OS のメニューを表示する設定にしたいと思いますが、それは将来のことです。

しかし今のところ、実際の PXE ブートを試みることなく、PXE ブート PC がサーバーから何を取得するかを確認するために Linux のコマンドラインから使用できるコマンドがいくつかありますか? Virtualbox で何かを実行できることはわかっていますが、コマンドラインからこれをテスト/デバッグできるようにしたいと思います。

答え1

私自身の質問に答えると、私はいくつかの時間をかけて試行錯誤した結果、必要なのは起動DHCP時にサーバーが何に応答するかを確認する方法だと気づきました。PXE

PXE は次の 2 つのサービスに依存します。

  • DHCP次のステップで必要となる IP アドレスを取得します。
  • TFTP起動に必要なファイルを提供するためのものです。

DHCPIP アドレスだけでなく、TFTPサーバーと起動に必要な最初のファイルの名前も示します。 から返される内容を確認するにはDHCP、2 つの異なるセッションから 2 つのコマンドを使用します。

  • dhcpdumpは、 で便利に実行できますscreen。サーバーとの間のトラフィックをすべて書き出しますDHCP
  • nmap --script broadcast-dhcp-discover、サーバーから IP アドレスを要求しますDHCP

からのサンプル出力dhcpdump。これは、 が、設定ファイルに指定したDHCPファイル名を提供していることを示しています。pxelinux.0/etc/dhcp/dhcpd.conf

root@vogon:~# dhcpdump -i enp8s0
  TIME: 2022-06-27 08:17:41.124
    IP: 192.168.50.177 (88:d8:2e:c3:83:77) > 192.168.50.9 (d8:5e:d3:5d:4:18)
    OP: 1 (BOOTPREQUEST)
 HTYPE: 1 (Ethernet)
  HLEN: 6
  HOPS: 0
   XID: b5cdb8de
  SECS: 0
 FLAGS: 0
CIADDR: 192.168.50.177
YIADDR: 0.0.0.0
SIADDR: 0.0.0.0
GIADDR: 0.0.0.0
CHADDR: 88:d8:2e:c3:83:77:00:00:00:00:00:00:00:00:00:00
 SNAME: .
 FNAME: .
OPTION:  53 (  1) DHCP message type         3 (DHCPREQUEST)
OPTION:  61 (  7) Client-identifier         01:88:d8:2e:c3:83:77
OPTION:  12 ( 15) Host name                 LAPTOP-PNGS5J2E
OPTION:  81 ( 18) Client FQDN               0-0-0 LAPTOP-PNGS5J2E
OPTION:  60 (  8) Vendor class identifier   MSFT 5.0
OPTION:  55 ( 14) Parameter Request List      1 (Subnet mask)
                          3 (Routers)
                          6 (DNS server)
                         15 (Domainname)
                         31 (Perform router discovery)
                         33 (Static route)
                         43 (Vendor specific info)
                         44 (NetBIOS name server)
                         46 (NetBIOS node type)
                         47 (NetBIOS scope)
                        119 (Domain Search)
                        121 (Classless Static Route)
                        249 (MSFT - Classless route)
                        252 (MSFT - WinSock Proxy Auto Detect)
                        
---------------------------------------------------------------------------

  TIME: 2022-06-27 08:17:41.124
    IP: 192.168.50.9 (d8:5e:d3:5d:4:18) > 192.168.50.177 (88:d8:2e:c3:83:77)
    OP: 2 (BOOTPREPLY)
 HTYPE: 1 (Ethernet)
  HLEN: 6
  HOPS: 0
   XID: b5cdb8de
  SECS: 0
 FLAGS: 0
CIADDR: 192.168.50.177
YIADDR: 192.168.50.177
SIADDR: 192.168.50.9
GIADDR: 0.0.0.0
CHADDR: 88:d8:2e:c3:83:77:00:00:00:00:00:00:00:00:00:00
 SNAME: .
 FNAME: pxelinux.0.
OPTION:  53 (  1) DHCP message type         5 (DHCPACK)
OPTION:  54 (  4) Server identifier         192.168.50.9
OPTION:  51 (  4) IP address leasetime      600 (10m)
OPTION:   1 (  4) Subnet mask               255.255.255.0
OPTION:   3 (  4) Routers                   192.168.50.1
OPTION:   6 (  8) DNS server                192.168.50.9,8.8.8.8
OPTION:  15 (  9) Domainname                somewhere.com
---------------------------------------------------------------------------

次のステップは、当然ながらセットアップですTFTP。優れたガイドは多数ありますが、複数の OS から選択できる必要があり、この記事がまさにそれに適しているようです。Debian Lenny で複数の Linux ディストリビューション用の PXE インストール サーバーを設定する

答え2

テストでは、Web サーバーを「PXE ブート サーバー」として使用し、TFTP を使用せずに PXE ブートを実行し、libvirt にすでに組み込まれている DHCP サーバーを再利用することができます。Libvirt は、VM のネットワーク インターフェイスでネットワーク ブートを行うためのファームウェアとして iPXE を使用します。

テスト ブート コンピューターは仮想マシンである必要があります。Web サーバーは、特定のフォルダー アーキテクチャと選択したブート イメージを使用して作成する必要があります。

記事を見る iPXE と libvirt を使用した HTTP のみによる簡単な PXE ブート テスト、 それは示す:

  • Webサーバーのセットアップ
  • Libvirt ネットワーク DHCP 設定
  • virt-install コマンドを使用した PXE ブート。

全体があまりにも膨大であるため、ここに記載することはできません。

関連情報