База знаний DCImanager 6

Что делать, если сервер не загружается по TFTP?

Загрузка шаблона операции на сервер проходит по протоколу TFTP. Для этого сервер отправляет запрос на загрузку определённых файлов с TFTP-сервера локации. Из-за ошибки, возникающей в работе некоторых сетевых адаптеров, имена файлов при запросе могут быть искажены. Например, вместо файла pxelinux.0 сервер может запрашивать файл pxelinux.0M-^. В результате сервер не сможет загрузиться, и операция не будет выполнена.

Чтобы избежать этой проблемы, настройте на сервере-локации правила подмены символов (remapping). Если TFTP-сервер получит запрос с искажённым именем файла, то автоматически изменит имя на правильное.

Диагностика

Если проблемы с загрузкой по TFTP связаны с искажением имён файлов, то при загрузке сервера могут появиться сообщения следующего вида:

Примеры сообщений об ошибках


Вы можете посмотреть подробный вывод ошибки на сервере-локации с помощью утилиты tcpdump:

Пример команды для интерфейса enp1s0
tcpdump -i enp1s0 port '(67 or 68 or 69)' -nn -A

Ответ должен содержать искажённое имя файла. Например, lpxelinux.0M-^.

Пример ответа
07:56:48.433740 IP 192.0.2.93.2070 > 192.0.2.92.69:  34 RRQ "srv1/lpxelinux.0M-^?" octet tsize 0
E..>......k..6[].6[\...E.*.R..srv1/lpxelinux.0..octet.tsize.0.
07:56:48.436957 IP 192.0.2.93.2071 > 192.0.2.92.69:  39 RRQ "srv1/lpxelinux.0M-^?" octet blksize 1456
E..C......k..6[].6[\...E./fq..srv1/lpxelinux.0..octet.blksize.1456.

Решение

  1. Отредактируйте на сервере-локации файл с правилами подмены символов:

    vi /opt/ispsystem/etc/tftp/remap.conf
    Пример файла
    rg \\ /
    ri (.*)ÿ$ \1
    ri (.*)M-\^\?$ \1
    ri (lpxelinux\.0).*$ \1
    ri (lpxelinux\.efi).*$ \1
    ri (syslinux\.0).*$ \1
    ri (syslinux\.efi).*$ \1

    Файл с помощью регулярных выражений описывает действия, которые нужно произвести с неправильными именами. В примере приведены наиболее часто встречающиеся ошибочные имена файлов. Вы можете дополнить этот файл собственными правилами.

  2. Перезапустите TFTP-сервер:

    docker restart tftpd
    Обратите внимание!
    Перезапуск TFTP-сервера может прервать запущенные операции.