tftp-сервер на Debian

вторник, 24 февраля 2009 г.
Использование atftpd в режиме "inetd"
Установим atftpd (в качестве клиента можно использовать как классический tftp, так и его родной atftp, разницы между ними практически нет, но последний немного удобнее использовать в различных скриптах по причине большего количества аргументов командной строки):
apt-get install atftpd atftp

Сам atftpd может работать как в качестве самостоятельного сервера, так и в качестве одной из подсистем суперсервера inetd (или любого его аналога). По умолчанию он настроен на работу через inetd и для его функционирования в /etc/inetd.conf добавляется строка:
tftp dgram udp4 wait nobody /usr/sbin/tcpd /usr/sbin/in.tftpd --tftpd-timeout 300 --retry-timeout 5 --mcast-port 1758 --mcast-addr 239.239.239.0-255 --mcast-ttl 1 --maxthread 100 --verbose=5 /var/lib/tftpboot

Параметров тут перечислено много и информацию по ним лучше всего искать в man-странице atftpd. Основное что нас тут интересует: сервис работает с правами пользователя nobody и считает корнем директорию /var/lib/tftpboot.

Создаём директорию:
mkdir -p /var/lib/tftpboot && chown nobody /var/lib/tftpboot

Создаём тестовый файл:
echo Test File > /var/lib/tftpboot/test && chown nobody /var/lib/tftpboot/test

Пробуем скачать тестовый файл и просмотреть его содержимое:
atftp -g -r test 127.0.0.1 && cat test

Если всё пройдёт нормально то на стандартный вывод будет выдана надпись: "Test File". Если же вместо этого будут какие-то ошибки - нужно начинать искать проблему. Скорее всего она кроется в правах доступа (как и в предыдущем случае).

Использование atftpd в режиме "standalone"
Здесь всё практически так же, как и в предыдущем случае, только нет необходимости запускать суперсервер inetd, поскольку atftpd в этом случае работает как самостоятельный сервер. Если интересен именно такой вариант то нужно сделать следующее: первым делом закоментировать строку запуска atftpd в /etc/inetd.conf:
## tftp dgram udp4 wait nobody /usr/sbin/tcpd /usr/sbin/in.tftpd --tftpd-timeout 300 --retry-timeout 5 --mcast-port 1758 --mcast-addr 239.239.239.0-255 --mcast-ttl 1 --maxthread 100 --verbose=5 /var/lib/tftpboot

и перезапустить суперсервер:
invoke-rc.d openbsd-inetd restart

Далее нужно поменять значение переменной USE_INETD в файле /etc/default/atftpd с true на false:
#USE_INETD=true
USE_INETD=false


Дополнительные опции для atftpd при такой настройке перечисляются в переменной OPTIONS всё того же файла. Настройки по умолчанию совпадают с настройками по умолчанию для режима "inetd", соответственно проверка работоспособности сервера проводится так же.

В параметрах можно убрать мультикаст удалив параметры --mcast-port, --mcast-addr, --mcast-ttl и указав --no-multicast 

0 коммент.:

Отправить комментарий