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

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

18

Установка 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.

Войдите, чтобы ставить лайкимне нравится
Лайков: 0
войдите, чтобы ставить лайки
18

Комментарии

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

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

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

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

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

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