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.
Комментарии
13:27
16:20
13:54
17:35
C:Documents and SettingsARTEM>tftp -i 77.91.154.20 put C:myfile.txt
Ошибка на сервере: Access violation
как это решить подскажите пожалуйста
11:29
1) nano /etc/inetd.conf - правильно ли выставлен каталог?
2) права
3) /etc/init.d/openbsd-inetd restart
10:31
12:24
Всё работает.
17:38
13:52
во время настроек возникли проблемы. Работаю из XP с сервером на виртуальной машине(ubuntu). Удается читать, но при попытке записать выводить Access violation.
"1) nano /etc/inetd.conf - правильно ли выставлен каталог?
2) права
3) /etc/init.d/openbsd-inetd restart" - проверял все, не помогает.
Заранее спасибо!
13:40
12:58
16:33
За что и говорю спасибо.
Только не пойму вот сохраняется у меня всё только в домашнем каталоге в пользовательской папке.
Всё перерыл, но не нашёл где это указано. Везде поставил другую папку.
Спасибо
18:44
/etc/hosts.allow и /etc/hosts.deny для ограничения доступа. Демон, использующий эти файлы
ЗЫ пол часа угробил пока надыбал как разрешить залить
12:02
Потому что я тоже уже полчаса угробил, но пока всё еще deny, и не могу понять, толи я кривой, толи причина в чём-то еще.
Напишите плиз какое-нибудь общее правило на все адреса по типу ALL: 0.0.0.0/0.0.0.0 и какой демон надо перезапускать.
13:30
12:09
10:27
20:27