Назад | Перейти на главную страницу

Проблемы реализации PXE-сервера

У меня есть виртуальная машина ESXi, на которой запущен сервер tftpd-hpa в последней версии Debian 9 для сетевой среды PXE. В целях тестирования я настроил другую виртуальную машину для обработки DHCP в Debian 9 с использованием isc-dhcp-server (с next-server и bootfile директивы). Используя третью виртуальную машину без ОС, я могу без проблем загружать сервер по протоколу PXE. Однако при реализации PXE в сети (в частности, Ubiquiti EdgeRouter) сервер PXE не будет работать, если конфигурация tftpd-hpa не будет изменена.

Если я закомментирую TFTP_OPTIONS="--secure" из файла tftpd-hpa, сервер будет нормально работать с EdgeRouter. Я также попытался добавить следующие строки конфигурации в файл конфигурации EdgeRouter, но безрезультатно:

subnet-parameters "filename "/srv/tftp/pxelinux.0";"
subnet-parameters "filename ;pxelinux.0";"

Мне кажется, что проблема связана с тем, как EdgeRouter передает параметры DHCP клиенту, но что вызывает это и как я могу это исправить? Я понимаю, что могу просто оставить secure опция отключена, но я бы не стал этого делать. Я также пробовал добавлять полные и частичные пути в конфигурацию маршрутизатора.

Ошибка:

TFTP.
PXE-T01: File not found
PXE-E3B: TFTP Error - File Not found
PXE-M0F: Exiting Intel PXE ROM.
Operating System not found

/ и т.д. / по умолчанию / tftpd-hpa:

TFTP_USERNAME="tftp"
TFTP_DIRECTORY="/srv/tftp"
TFTP_ADDRESS="0.0.0.0:69"
TFTP_OPTIONS="--secure"

/ SRV / tftp:

$ ls -alh
total 20K
drwxrwxr-x 3 root root 4.0K Mar  4 14:38 .
drwxr-xr-x 3 root root 4.0K Apr 18 00:37 ..
drwxrwxr-x 3 root root 4.0K Mar  4 14:38 debian-installer
lrwxrwxrwx 1 root root   47 Mar  4 14:38 ldlinux.c32 -> debian-installer/amd64/boot-screens/ldlinux.c32
lrwxrwxrwx 1 root root   33 Mar  4 14:38 pxelinux.0 -> debian-installer/amd64/pxelinux.0
lrwxrwxrwx 1 root root   35 Mar  4 14:38 pxelinux.cfg -> debian-installer/amd64/pxelinux.cfg
-rw-r--r-- 1 root root   79 Apr 18 00:41 test
-rw-rw-r-- 1 root root   62 Mar  4 14:38 version.info

/config/config.boot:

dhcp-server {
        disabled false
        hostfile-update disable
        shared-network-name LAN {
            authoritative enable
            subnet 192.168.1.0/24 {
                bootfile-name pxelinux.0
                bootfile-server 192.168.1.94
                default-router 192.168.1.1
                dns-server 192.168.1.1
                lease 86400
                start 192.168.1.1 {
                    stop 192.168.1.127
                }
                unifi-controller 192.168.1.225
            }
        }
        use-dnsmasq disable
    }
...
}
--secure, -s
    Change root directory on startup. This means the remote host does not
    need to pass along the directory as part of the transfer, and may add 
    security. When --secure is specified, exactly one directory should be 
    specified on the command line. The use of this option is recommended 
    for security as well as compatibility with some boot ROMs which cannot 
    be easily made to include a directory name in its request.

Единственный момент, когда первый параметр может быть связан с вашей проблемой, - это использование другого DHCP-сервера. bootfile параметр.

Захват трафика Wireshark сообщит вам:

  1. Сколько DHCP-серверов у вас работает в одном сегменте (должен быть только один)
  2. TFTP-запрос загружаемого клиента, показывающий его полный путь / файл