如何從命令列測試 PXE?

如何從命令列測試 PXE?

我正在努力設定“PXE 啟動伺服器”(如果有的話);我必須使用的是TPlink路由器(TL-ER7206 v1.0),它提供帶有“選項66”的DHCP服務,該服務應設定為TFTP伺服器的IP位址(但無處設定檔名,它似乎)。我可能必須在 Linux 伺服器上設定 DHCP 並停用路由器上的 DHCP,但我想看看路由器能達到什麼程度。最終,我希望進行這樣的設定:PXE 啟動客戶端可以看到要安裝的不同作業系統的選單,但那是為了將來。

但現在,我可以從 Linux 的命令列使用一些命令來查看 PXE 啟動 PC 將從伺服器返回的內容,而無需嘗試實際的 PXE 啟動嗎?我知道我可以在 Virtualbox 中運行一些東西,但我希望能夠從命令列測試/調試它。

答案1

為了回答我自己的問題 - 我花了一些時間進行嘗試,並意識到我需要的是一種DHCPPXE啟動時查看伺服器回應內容的方法。

PXE 依賴兩個服務:

  • DHCP用於取得 IP 位址,下一步將需要該位址。
  • TFTP,用於提供啟動所需的文件。

DHCP不僅為您提供 IP 位址,還為您指明伺服器TFTP以及啟動所需的第一個檔案的名稱。為了查看從 中返回的內容DHCP,我使用了兩個不同會話的兩個命令:

  • dhcpdump,可以方便地在screen.它將寫出進出DHCP伺服器的所有流量。
  • nmap --script broadcast-dhcp-discover,這將從DHCP伺服器請求 IP 位址。

的範例輸出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- 有很多好的指南,但我需要能夠在幾個作業系統之間進行選擇,而這篇文章似乎就是這樣:在 Debian Lenny 上為多個 Linux 發行版設定 PXE 安裝伺服器

答案2

為了進行測試,Web 伺服器可以用作“PXE 啟動伺服器”,無需 TFTP 即可進行 PXE 啟動,並重新使用已內建於 libvirt 中的 DHCP 伺服器。 Libvirt 使用 iPXE 作為虛擬機器網路介面中網路啟動的韌體

測試啟動計算機應該是虛擬機器。應使用特定的資料夾架構和所選的啟動映像來建立 Web 伺服器。

看文章 使用 iPXE 和 libvirt 僅使用 HTTP 即可輕鬆進行 PXE 啟動測試,這表明:

  • 網路伺服器設定
  • Libvirt 網路 DHCP 設定
  • 使用 virt-install 指令進行 PXE 引導。

整體內容太大,無法包含在這裡。

相關內容