Как протестировать PXE из командной строки?

Как протестировать PXE из командной строки?

Я работаю над настройкой «загрузочного сервера PXE», если это вообще возможно; мне придется работать с маршрутизатором TPlink (TL-ER7206 v1.0), который предлагает службу DHCP с «опцией 66», которая должна быть установлена ​​на IP-адрес сервера TFTP (но, похоже, нигде не указано имя файла). Возможно, мне придется настроить DHCP на сервере Linux и отключить тот, что на маршрутизаторе, но я хотел бы посмотреть, как далеко я смогу зайти с маршрутизатором. В конечном счете я хотел бы получить настройку, в которой клиент загрузки PXE видит меню различных ОС для установки, но это в будущем.

Но сейчас, есть ли несколько команд, которые я мог бы использовать из командной строки в Linux, чтобы увидеть, что ПК с загрузкой PXE получит от сервера, без необходимости пытаться выполнить фактическую загрузку 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— есть много хороших руководств, но мне нужно иметь возможность выбирать между несколькими ОС, и эта статья, похоже, как раз то, что нужно:Настройка сервера установки PXE для нескольких дистрибутивов Linux на Debian Lenny

решение2

Для тестирования веб-сервер может использоваться как "сервер загрузки PXE", выполняя загрузку PXE без TFTP и повторно используя DHCP-сервер, который уже встроен в libvirt. Libvirt использует iPXE в качестве прошивки для сетевой загрузки в сетевых интерфейсах для виртуальных машин

Тестовый загрузочный компьютер должен быть виртуальной машиной. Веб-сервер должен быть создан с определенной архитектурой папок и с выбранными загрузочными образами.

Смотреть статью Простое тестирование загрузки PXE только с HTTP с использованием iPXE и ​​libvirt, это показывает:

  • Настройка веб-сервера
  • Настройка DHCP сети Libvirt
  • Загрузка PXE с использованием команды virt-install.

Все это слишком объемно, чтобы включить его здесь.

Связанный контент