Уважаемые посетители портала Kamensk.NET! Напоминаем вам, что будучи зарегистрированным пользователем вы получаете возможность оставлять комментарии к новостям на сайте и к топикам на форуме, иметь доступ к скрытым разделам и много других благ и привелегий. Пожалуйста заполните регистрационную форму, это отнимет у вас всего лишь несколько минут вашего времени.

tftp-сервер на Debian/Ubuntu

У многих системных администраторов рано или поздно возникает необходимость поднять tftp-сервер для каких-либо целей (например для заливки новой прошивки на коммутатор). Далее будет показано как можно развернуть tftp-сервер на Debian/Ubuntu Linux.

Существует множество tftp-серверов. Я взял первый попавшийся - tftp-hpa.
Для начала нужно установить tftpd-hpa (и заодно клиент - tftp-hpa - он пригодится для проверки работоспособности сервера):

Цитата:

apt-get install tftpd-hpa tftp-hpa

По умолчанию в качестве корня сервера tftpd-hpa будет использовать директорию /var/tftpboot и работать с правами пользователя root, если вас это не устраивает - поменяйте соответствующим образом строку в /etc/inetd.conf

Цитата:

tftp dgram udp wait root /usr/sbin/in.tftpd /usr/sbin/in.tftpd -s /var/tftpboot

После изменения этой строки нужно перезапустить супер-сервер inetd:

Цитата:

invoke-rc.d openbsd-inetd restart

Как вариант tftp-сервер можно запустить отдельно от inetd. Для этого следует закомментировать соответствующую строку в /etc/inetd.conf, перезапустить inetd и внести изменения в файл /etc/default/tftpd-hpa:
1. В строке

Цитата:

RUN_DAEMON="no"

"no" заменить на "yes"
2. А в строку

Цитата:

OPTIONS="-l -s /var/lib/tftpboot"

внести опции, которые нам потребуются. В частности добавить ключ "-c" для записи на сервер:
-l - стартовать как самостоятельный сервис (т.е. НЕ через inetd);
-c - разрешить создание на сервере новых файлов;
-4 - работать только с ipv4;
-s /directory - "корневая" директория для tftp-сервера;
-B 1368 - максимальный размер блока данных.

С правами доступа у меня вечная проблема, поэтому, чтобы иметь возможность записывать на tftp-сервер использую права 777 для корневой директории tftpd-сервера (естественно выше по описанию установлен ключ -c):

Цитата:

chmod 777 /var/lib/tftpboot

Для ограничения доступа к серверу удобно использовать /etc/hosts.allow и /etc/hosts.deny. В первый вносятся адреса или подсети, которым разрешить доступ, например так:

Цитата:

in.ftpd: 192.168.1. #разрешен доступ для подсети 192.168.1.0/24

А во второй:

Цитата:

in.ftpd: ALL #запретить доступ всем остальным

Теперь нам нужно протестировать наш сервер. Для этого создадим тестовый файл в корне сервера:

Цитата:

echo Test File > /var/lib/tftpboot/test

И попробуем его скачать:

Цитата:

echo get test | tftp 127.0.0.1

Не получилось? ))) А вы дописали:

Цитата:

in.ftpd: 127.0.0.1

в файл /etc/hosts.allow ?
Если никаких ошибок выдано не было - проверяем содержимое скачанного файла. Если и тут всё хорошо - значит наш tftp-сервер нормально работает. Самой распространённой ошибкой является невозможность серверов прочитать свои собственные файлы.

Итог.
Приведённые рекомендации можно с минимальными поправками использовать на большинстве современных дистрибутивов.
Следует отметить что для корректной работы в файрволле должен быть разрешён доступ к серверу по порту 69/udp.

Приятной работы!