Установка TFTP сервера (tftpd) в Ubuntu Linux. Linux статьи

Установка TFTP сервера (tftpd) в Ubuntu Linux

17

Установка TFTP сервера TFTP — простой протокол для передачи файлов по сети, использует протокол UDP (по порту 69), не поддерживает аутентификацию и шифрование. TFTP часто используется для загрузки файлов (прошивок, конфигураций) на устройства (маршрутизаторы, мини-АТС и другие), но его можно использовать и для простой пересылки файлов по сети между компьютерами. Для Linux доступно несколько TFTP демонов (серверов): tftpd, atftpd, tftpd-hpa. Вы можете использовать любой из них. Я расскажу, как устанавливать tftpd.

Помимо tftpd нужно будет установить службу inetd. inetd — представляет собой сетевую службу, которая обрабатывает входящие соединения (TCP, UDP) и запускает соответствующую программу для обработки запроса. Я буду использовать службу openbsd-inetd. Есть еще служба xinetd, вы можете ее использовать, но настраивается она несколько иначе.

Установка сервера tftpd и службы openbsd-inetd

Установим сервер tftpd и openbsd-inetd, для этого выполним команду:

sudo apt-get install openbsd-inetd tftpd tftp

По завершении установки вы увидите сообщения вида:

...
Настраивается пакет openbsd-inetd (0.20080125-4ubuntu2) ...
 * Stopping internet superserver inetd                                   [ OK ] 
 * Not starting internet superserver: no services enabled

Настраивается пакет tftpd (0.17-17ubuntu1) ...

Настройка tftpd

По умолчанию TFTP сервер настроен на использование директории /srv/tftp. Мы настроим TFTP сервер так, чтобы он использовал для работы директорию /tftpboot. В этой директории будут храниться файлы, которые мы можем скачать с сервера или же закачать в нее. Отредактируем файл /etc/inetd.conf.

sudo gedit /etc/inetd.conf

В файле найдите строки вида:

#:BOOT: TFTP service is provided primarily for booting.  Most sites
#       run this only on machines acting as "boot servers."
tftp		dgram	udp	wait	nobody	/usr/sbin/tcpd	/usr/sbin/in.tftpd /srv/tftp

Аргумент /srv/tftp команды in.tftpd указывает на каталог в котором будут храниться файлы TFTP сервера. Заменим /srv/tftp на /tftpboot.

tftp		dgram	udp	wait	nobody	/usr/sbin/tcpd	/usr/sbin/in.tftpd /tftpboot

Создадим директорию /tftpboot:

sudo mkdir /tftpboot

Изменим права доступа:

sudo chown -R nobody /tftpboot

Перезапуск службы inetd

Чтобы новые настройки вступили в силу, перезапустим службу inetd:

sudo /etc/init.d/openbsd-inetd restart

На этом установка TFTP сервера завершена, проверим его работу.

Проверка работы TFTP сервера, использование TFTP клиента

Для начала установим TFTP клиент, чтобы можно было подключаться к TFTP северу. Для установки TFTP клиента выполните в терминале команду:

sudo apt-get install tftp

Теперь создадим на сервере в директории /tftpboot какой-нибудь файл, например, myfile. Для создания файла myfile и записи в него текста «This is my file» выполните в терминале команду:

echo This is my file > /tftpboot/myfile

Теперь мы можем запустить TFTP клиент командой tftp. Команда tftp принимает в качестве параметра IP адрес сервера. Если вы запускаете клиент на локальном компьютере, то укажите IP адрес 127.0.0.1, если же на удаленном компьютере, то укажите IP адрес сервера.

tftp 127.0.0.1

Когда клиент запустится, вы попадете в режим ввода команд для клиента TFTP. Выполните команду get myfile, которая означает получить файл с именем myfile с сервера.

tftp> get myfile

В случае, если вы все сделали правильно, файл myfile загрузится с TFTP сервера. Для выхода из TFTP клиента введите команду quit.

17

Комментарии

[аноним]
15.02.2011, 13:27
Постоянная ссылка на комментарий
Лучшая статья по настройке tftp на Ubuntu! С первого раза всё получилось, в отличии от прочих статей, где все туманно и непонятно!
[аноним]
25.02.2011, 16:20
Постоянная ссылка на комментарий
sudo chmod 777 -R /tftpboot
[аноним]
31.03.2011, 17:35
Постоянная ссылка на комментарий
работает только локально tftp 127.0.0.1 c удаленных машин нет, из под windows пишет:

C:Documents and SettingsARTEM>tftp -i 77.91.154.20 put C:myfile.txt
Ошибка на сервере: Access violation

как это решить подскажите пожалуйста
[аноним]
14.11.2011, 11:29
Постоянная ссылка на комментарий
2Alexey
1) nano /etc/inetd.conf - правильно ли выставлен каталог?
2) права
3) /etc/init.d/openbsd-inetd restart
[аноним]
03.04.2012, 10:31
Постоянная ссылка на комментарий
Хорошая статья
[аноним]
21.06.2012, 12:24
Постоянная ссылка на комментарий
Самая полезная статья по tftp и ubuntu.
Всё работает.
[аноним]
16.07.2012, 17:38
Постоянная ссылка на комментарий
спасибо
[аноним]
20.07.2012, 13:52
Постоянная ссылка на комментарий
Спасибо за отличную статью!
во время настроек возникли проблемы. Работаю из XP с сервером на виртуальной машине(ubuntu). Удается читать, но при попытке записать выводить Access violation.
"1) nano /etc/inetd.conf - правильно ли выставлен каталог?
2) права
3) /etc/init.d/openbsd-inetd restart" - проверял все, не помогает.
Заранее спасибо!
[аноним]
09.08.2012, 13:40
Постоянная ссылка на комментарийРодительский комментарий
смотри файлы /etc/hosts.allow, /etc/hosts.deny
[аноним]
20.02.2013, 12:58
Постоянная ссылка на комментарийРодительский комментарий
создайте файл с таким же именем на tftp сервере
[аноним]
25.09.2012, 16:33
Постоянная ссылка на комментарий
Всем привет! Хорошая статейка, честно сказать помогла.
За что и говорю спасибо.
Только не пойму вот сохраняется у меня всё только в домашнем каталоге в пользовательской папке.
Всё перерыл, но не нашёл где это указано. Везде поставил другую папку.
Спасибо
[аноним]
20.04.2013, 18:44
Постоянная ссылка на комментарий
может про это тоже надо было сказать?!!!
/etc/hosts.allow и /etc/hosts.deny для ограничения доступа. Демон, использующий эти файлы

ЗЫ пол часа угробил пока надыбал как разрешить залить
[аноним]
27.07.2014, 12:02
Постоянная ссылка на комментарийРодительский комментарий
Было бы неплохо тут же написать минимум действий, который необходимо проделать с hosts.allow, чтобы всё заработало.
Потому что я тоже уже полчаса угробил, но пока всё еще deny, и не могу понять, толи я кривой, толи причина в чём-то еще.
Напишите плиз какое-нибудь общее правило на все адреса по типу ALL: 0.0.0.0/0.0.0.0 и какой демон надо перезапускать.
nik59
29.04.2013, 13:30
Постоянная ссылка на комментарий
Спасибо, все отлично работает, правда понадобилось вручную добавить строку "tftp..." в inet.d и строку в hosts.allow.
[аноним]
30.09.2013, 12:09
Постоянная ссылка на комментарий
Автору +
Murad
25.09.2014, 10:27
Постоянная ссылка на комментарий
Сделал все по инструкции, работает, но! только локально, т.е. сервер у меня стоит на linuxE и локально я могу получить файл командой - tftp> get myfile ну а вот с машины той что по сети, ввожу в командной строке - tftp <ИП_адрес_сервера> get myfile то в таком случае чуть повисит и пишет что "Истек таймаут. Сбой запроса на подключение"
[аноним]
19.11.2015, 20:27
Постоянная ссылка на комментарий
Спасибо, очень помогло!

Написать комментарий

Ваше имя:
Текст комментария: