Я работаю над макетом PXE-сервера для того места, где работаю. Я пытаюсь разместить файлы изображений и файл конфигурации в местах, где все будет немного организовано. Хотя мой dhcpd.conf
задает параметры конфигурации, необходимые для того, чтобы сообщить PXELinux, где искать файлы конфигурации, он по-прежнему не находит указанные файлы.
Вот как выглядит мой /etc/dhcp/dhcpd.conf, вот где, я думаю, проблема.
option space PXE;
option PXE.mtftp-ip code 1 = ip-address;
option PXE.mtftp-cport code 2 = unsigned integer 16;
option PXE.mtftp-sport code 3 = unsigned integer 16;
option PXE.mtftp-tmout code 4 = unsigned integer 8;
option PXE.mtftp-delay code 5 = unsigned integer 8;
option arch code 93 = unsigned integer 16;
option space pxelinux;
option pxelinux.magic code 208 = string;
option pxelinux.configfile code 209 = text;
option pxelinux.pathprefix code 210 = text;
option pxelinux.reboottime code 211 = unsigned integer 32;
ddns-update-style none;
option domain-name "lab.solignis.com";
option domain-name-servers ns01.lab.solignis.com;
default-lease-time 600;
max-lease-time 7200;
authoritative;
log-facility local7;
subnet 192.168.147.0 netmask 255.255.255.0 {
range 192.168.147.100 192.168.147.254;
option subnet-mask 255.255.255.0;
option routers 192.168.147.2;
option broadcast-address 192.168.147.255;
default-lease-time 600;
max-lease-time 7200;
class "pxeclients" {
match if substring (option vendor-class-identifier, 0, 9) = "PXEClient";
next-server 192.168.147.10;
if option arch = 00:00 {
option pxelinux.configfile "common.cfg";
option pxelinux.pathprefix "/configs/";
filename "/pxelinux/images/BIOS/pxelinux.0";
} elsif option arch = 00:06 {
#option pathprefix "/configs/";
#option configfile "/EFIx64/default";
filename "/images/EFIx64/syslinux.efi";
} elsif option arch = 00:07 {
#option pathprefix "/configs/";
#option configfile "/EFIx64/default";
filename "/images/EFIx64/syslinux.efi";
} elsif option arch = 00:09 {
#option pathprefix "/configs/";
#option configfile "/EFIx64/default";
filename "/images/EFIia32/syslinux.efi";
}
}
}
Части конфигурации были скомпилированы из различных частей документации, части, которые закомментированы, являются старыми частями, которые я еще не исправил, но не принимаю во внимание. А пока я просто хочу, чтобы стандартный BIOS работал (arch = 00:00
).
Вот как выглядит моя файловая структура для моего каталога tftpboot.
server01@server01:/var/lib/tftpboot$ tree
.
└── pxelinux
├── configs
│ └── common.cfg
└── images
├── BIOS
│ ├── ldlinux.c32
│ └── pxelinux.0
├── EFIia32
│ └── syslinux.efi
└── EFIx64
└── syslinux.efi
6 directories, 5 files
Я был почти уверен, что правильно настроил pxelinux, но он не видит файл конфигурации, поэтому что-то настроено неправильно. Может ли кто-нибудь дать представление о том, что я неправильно сконфигурировал? Я весь день бился об этом головой.
Обратите внимание, что configfile
относительно pathprefix
:
if option arch = 00:00 {
option pxelinux.configfile "common.cfg";
option pxelinux.pathprefix "/pxelinux/configs/";
filename "/pxelinux/images/BIOS/pxelinux.0";
это будет искать файл конфигурации с именем /pxelinux/configs/common.cfg на сервере TFTP.
если это не удается, просто получите захват трафика Wireshark и посмотрите запросы файлов TFTP и то, на что они указывают.
Я боролся с этим сегодня и наконец заставил это работать. Ключевым моментом был этот маленький раздел в PXELINUX вики (У меня был ISC dhcp-4.2.5-79.el7.centos.x86_64 на CentOS 7.8):
В версиях ISC dhcp выше 3.0 пространство опций локального сайта начинается с 224, а не со 128 (в соответствии с RFC 3942), поэтому вам следует определить параметры PXELINUX 208-211 как обычные параметры DHCP, а не как локальные параметры сайта. Например:
option magic code 208 = string;
option configfile code 209 = text;
option pathprefix code 210 = text;
option reboottime code 211 = unsigned integer 32;
Внутри вашей группы или класса загрузки PXELINUX (где бы у вас ни были параметры, связанные с PXELINUX, такие как параметр «имя файла»), вы должны добавить, например:
# Always include the following lines for all PXELINUX clients
option magic f1:00:74:7e;
if exists dhcp-parameter-request-list {
# Always send the PXELINUX options (specified in hexadecimal, ie: 208 = 0xd0, 209 = 0xd1, etc.)
option dhcp-parameter-request-list = concat(option dhcp-parameter-request-list,d0,d1,d2,d3);
}
# These lines should be customized to your setup
option configfile "configs/common";
option pathprefix "/tftpboot/pxelinux/files/";
option reboottime 30;
filename "/tftpboot/pxelinux/pxelinux.bin";