![Как протестировать PXE из командной строки?](https://rvso.com/image/1672305/%D0%9A%D0%B0%D0%BA%20%D0%BF%D1%80%D0%BE%D1%82%D0%B5%D1%81%D1%82%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D1%82%D1%8C%20PXE%20%D0%B8%D0%B7%20%D0%BA%D0%BE%D0%BC%D0%B0%D0%BD%D0%B4%D0%BD%D0%BE%D0%B9%20%D1%81%D1%82%D1%80%D0%BE%D0%BA%D0%B8%3F.png)
Я работаю над настройкой «загрузочного сервера 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.
Все это слишком объемно, чтобы включить его здесь.