Собственно, возникла необходимость в настройке tftp-сервера для хранения конфигурационных файлов коммутаторов, прошивок оборудования, etc. А если есть необходимость - значит пора приступать к настройке собственного TFTP-сервера. Для начала немного общей информации о принципах работы протокола TFTP.
Простейший протокол передачи файлов (TFTP) - это очень удобный и простой протокол, применяемый для копирования файлов с одного устройства, поддерживающего протоколы TCP/IP, на другое.
В протоколе TFTP в качестве транспортного протокола используется UDP, а это означает, что на транспортном уровне TFTP является ненадежным. Но для обеспечения надежности в протоколе TFTP применяется собственная система подтверждения. При передаче файла с помощью TFTP этот файл разбивается на блоки по 512 байтов и передается в виде блоков. Устройство получателя должно передавать подтверждение ACK после получения каждого 512-байтового блока. Применение метода передачи с помощью окон не предусматривается. Вместо этого устройство отправителя просто следит за тем, на какой блок не было получено подтверждение АСК, и не отправляет больше данные до тех пор, пока не будет получено АСК для этого блока. Такое функциональное средство приводит к созданию простого и удобного в реализации механизма исправления ошибок.
Протокол TFTP не поддерживает многие важные средства FTP, но именно поэтому он и является таким небольшим и простым протоколом. В частности, протоколом TFTP не поддерживается аутентификация пользователя (по идентификатору пользователя и паролю). Функции получения листингов каталогов и просмотра каталогов также не поддерживаются. При использовании TFTP предполагается, что программа, запрашивающая файл, имеет информацию о точном имени файла, а программа, передающая файл, имеет сведения, где находится этот файл. Если любое из этих предположений оказывается неверным, происходит ошибка и передача отменяется.
Более детально с тем, как работает протокол TFTP можно здесь.
Протокол TFTP определен в документе RFC 1350 (стандарт 33), который находится по адресу ftp://ftp.isi.edu/in-notes/std/std33.txt.
С принципами работы протокола разобрались. Приступим к настройке ПО TFTP-сервера, а именно tftp-hpa. Основные возможности tftp-hpa:
В поставке идёт также достаточно удобная клиентская программа, которая, в отличие от поставляемой с базовой системой, позволяет передавать желаемые команды прямо в строке вызова.
Приступим к установке:
# cd /usr/ports/ftp/tftp-hpa && make install clean |
Теперь добавим группу tftpd и пользователя tftpd, от имени которых и будет работать tftp-hpa:
# pw groupadd tftpd |
Далее создаем рабочий каталог и выставляем необходимые права доступа:
# mkdir /var/tftp |
Создаем конфигурационный файл обработки файлов (переименование, контроль доступа), выставляем необходимые права доступа:
# touch /usr/local/etc/tftpd-remap.conf |
Редактируем /usr/local/etc/tftpd-remap.conf до следующего состояния:
# cat /usr/local/etc/tftpd-remap.conf r .* \i-\0 |
Создаем стартовый скрипт запуска и делаем его исполняемым:
# touch /usr/local/etc/rc.d/tftpd.sh |
Правим его до следующего содержания:
# cat /usr/local/etc/rc.d/tftpd.sh #!/bin/sh . /etc/rc.subr name="tftpd" load_rc_config $name # DO NOT CHANGE THESE DEFAULT VALUES HERE : ${tftpd_enable="NO"} extra_commands="reload" tftpd_start() { tftpd_poststop() { tftpd_reload() { run_rc_command "$1" |
Добавляем в rc.conf строку запуска tftp-сервера:
# echo '# TFTP Server' >> /etc/rc.conf |
Ну и, собственно, запускаем tftp-hpa:
# sh /usr/local/etc/rc.d/tftpd.sh start Starting tftpd. |
Собственно говоря, на этом все. Проверку работоспособности описывать уже не буду. Единственный совет - не забывайте о файрволе ;)
FreeBSD 8.2 работает
FreeBSD 8.2 работает некорректно
всякий раз логиниться и набирать mode binary - для PXE это неприемлемо
# uname -rsm
FreeBSD 8.0-STABLE i386
Полет нормальный...
Re: # uname -rsm
В 7.4 таже проблема. Как решать?
Re: # uname -rsm
Я у себя TFTP использую для бекапа конфигураций коммутаторов ну и время от времени - для обновления прошивок на железках. За все время использования багов пока не нашел - все нормально "сливается" и "заливается". Но вот грузиться по PXE не пытался, так что проблема может и присутствовать. Возможно железка не указывает непосредственно, что необходимо использовать режим binary. Пробовали протестировать каким-либо другим способом работу tftp-сервера?
Re: # uname -rsm
Копировать на сервер можно, а вот скачать не удаётся пишет ошибку приходиться каждый раз включать другой режим передачи на binary.
Re: # uname -rsm
А если удалить правила из tftpd-remap.conf (сделать его пустым)?