如何从命令行测试 PXE?

如何从命令行测试 PXE?

我正在设置“PXE 启动服务器”,如果可以的话;我需要使用 TPlink 路由器 (TL-ER7206 v1.0),它提供带有“选项 66”的 DHCP 服务,该选项应设置为 TFTP 服务器的 IP 地址(但似乎没有地方设置文件名)。我可能必须在 Linux 服务器上设置 DHCP,并禁用路由器上的 DHCP,但我想看看路由器能达到什么程度。最终,我希望实现这样的设置,即 PXE 启动客户端可以看到要安装的不同操作系统的菜单,但这是未来的事了。

但是现在,我可以从 Linux 的命令行使用一些命令来查看 PXE 启动 PC 将从服务器返回什么,而无需尝试实际的 PXE 启动?我知道我可以在 Virtualbox 中运行某些东西,但我希望能够从命令行测试/调试它。

答案1

回答我自己的问题 - 我花了一些时间尝试并意识到我需要的是一种方法来查看服务器在启动DHCP时回复的内容。PXE

PXE 依赖于两个服务:

  • DHCP获取 IP 地址,下一步您将需要该地址。
  • TFTP,用于提供启动所需的文件。

DHCP不仅会为您提供 IP 地址,还会将您指向服务器TFTP以及启动所需的第一个文件的名称。为了查看您从 获得的结果DHCP,我使用了两个不同会话中的两个命令:

  • 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- 有很多好的指南,但我需要能够在几个操作系统之间进行选择,而这篇文章似乎正是所需要的:在 Debian Lenny 上为多个 Linux 发行版设置 PXE 安装服务器

答案2

为了进行测试,可以使用 Web 服务器作为“PXE 启动服务器”,无需 TFTP 即可执行 PXE 启动,并重新使用 libvirt 中已内置的 DHCP 服务器。Libvirt 使用 iPXE 作为虚拟机网络接口中的网络启动固件

测试启动计算机应为虚拟机。应使用特定文件夹架构和所选的启动映像创建 Web 服务器。

查看文章 使用 iPXE 和 libvirt 仅通过 HTTP 轻松进行 PXE 启动测试,显示:

  • Web 服务器设置
  • Libvirt 网络 DHCP 设置
  • 使用 virt-install 命令进行 PXE 引导。

所有内容过于繁多,无法在此一一列举。

相关内容