Администрирование FreeBSD, Linux, ... Установка, использование клиента и сервера tftp Thu, November 21 2024  

Поделиться

Нашли опечатку?

Пожалуйста, сообщите об этом - просто выделите ошибочное слово или фразу и нажмите Shift Enter.


Установка, использование клиента и сервера tftp Печать
Добавил(а) microsin   

Протокол TFTP (Trivial File Transfer Protocol) часто используется для обмена файлами в изначально безопасной среде, обычно для обновления прошивок сетевых устройств через локальную сеть. На Ubuntu клиент TFTP (tftp или tftp-hpa) и сервер TFTP (tftpd-hpa) устанавливаются обычными командами менеджера пакетов apt.

[Установка клиента tftp]

$ sudo apt install tftp

... или:

$ sudo apt install tftp-hpa

[Установка сервера tftp]

1. Создайте директорию для файлов сервера:

$ mkdir -p ~/tftp

2. Создайте файл настроек сервера:

$ sudo gedit /etc/default/tftpd-hpa

3. Добавьте в файл tftpd-hpa следующие строки, и сохраните его:

TFTP_USERNAME="tftp"
TFTP_DIRECTORY="/tftp"
TFTP_ADDRESS="0.0.0.0:69"
TFTP_OPTIONS="--secure --create"

4. Установка сервера:

$ sudo apt install tftpd-hpa

[Устранение проблем с tftp]

Ошибка "tftpd-hpa.service not found". Команда запуска или перезапуска сообщает, что служба tftpd-hpa.service не найдена, например:

$ sudo service tftpd-hpa restart
Failed to restart tftpd-hpa.service: Unit tftpd-hpa.service not found.

Возможно, что была пропущена буква 'd' в команде $ sudo apt install tftpd-hpa, т. е. по ошибке был установлен клиент tftpd-hpa. Проверить, что конкретно установлено, можно командами apt show tftp-hpa и apt show tftpd-hpa.

Ошибка cannot open IPv6 socket. Попытка установки службы приводит к следующему сообщению:

$ sudo apt install tftpd-hpa
[sudo] password for username: 
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
Suggested packages:
  pxelinux
The following NEW packages will be installed:
  tftpd-hpa
0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
Need to get 40,7 kB of archives.
After this operation, 122 kB of additional disk space will be used.
Get:1 http://ru.archive.ubuntu.com/ubuntu jammy/main amd64 tftpd-hpa amd64 5.2+20150808-1.2build2 [40,7 kB]
Fetched 40,7 kB in 2s (23,7 kB/s)    
Preconfiguring packages ...
Selecting previously unselected package tftpd-hpa.
(Reading database ... 306002 files and directories currently installed.)
Preparing to unpack .../tftpd-hpa_5.2+20150808-1.2build2_amd64.deb ...
Unpacking tftpd-hpa (5.2+20150808-1.2build2) ...
Setting up tftpd-hpa (5.2+20150808-1.2build2) ...
Job for tftpd-hpa.service failed because the control process exited with error code.
See "systemctl status tftpd-hpa.service" and "journalctl -xeu tftpd-hpa.service" for details.
invoke-rc.d: initscript tftpd-hpa, action "start" failed.
× tftpd-hpa.service - LSB: HPA's tftp server
     Loaded: loaded (/etc/init.d/tftpd-hpa; generated)
     Active: failed (Result: exit-code) since Wed 2024-08-28 12:48:47 MSK; 11ms ago
       Docs: man:systemd-sysv-generator(8)
    Process: 2070986 ExecStart=/etc/init.d/tftpd-hpa start (code=exited, status=71)
        CPU: 27ms
авг 28 12:48:47 0001NBB0203LZB4 systemd[1]: Starting LSB: HPA's tftp server... авг 28 12:48:47 0001NBB0203LZB4 tftpd-hpa[2070986]: * Starting HPA's tftpd in.tftpd авг 28 12:48:47 0001NBB0203LZB4 in.tftpd[2070993]: cannot open IPv6 socket, disable IPv6: Address family not supported by protocol авг 28 12:48:47 0001NBB0203LZB4 in.tftpd[2070993]: Cannot set nonblock flag on socket: Bad file descriptor авг 28 12:48:47 0001NBB0203LZB4 systemd[1]: tftpd-hpa.service: Control process exited, code=exited, status=71/OSERR авг 28 12:48:47 0001NBB0203LZB4 systemd[1]: tftpd-hpa.service: Failed with result 'exit-code'. авг 28 12:48:47 0001NBB0203LZB4 systemd[1]: Failed to start LSB: HPA's tftp server. dpkg: error processing package tftpd-hpa (--configure): installed tftpd-hpa package post-installation script subprocess returned error exit status 1 Processing triggers for man-db (2.10.2-1) ... Errors were encountered while processing: tftpd-hpa E: Sub-process /usr/bin/dpkg returned an error code (1)

Результат выполнения команды systemctl status tftpd-hpa.service:

$ sudo systemctl status tftpd-hpa.service
× tftpd-hpa.service - LSB: HPA's tftp server
     Loaded: loaded (/etc/init.d/tftpd-hpa; generated)
     Active: failed (Result: exit-code) since Thu 2024-08-29 07:09:11 MSK; 41min ago
       Docs: man:systemd-sysv-generator(8)
    Process: 2329385 ExecStart=/etc/init.d/tftpd-hpa start (code=exited, status=71)
        CPU: 15ms
авг 29 07:09:11 0001NBB0203LZB4 systemd[1]: Starting LSB: HPA's tftp server... авг 29 07:09:11 0001NBB0203LZB4 tftpd-hpa[2329385]: * Starting HPA's tftpd in.tftpd авг 29 07:09:11 0001NBB0203LZB4 in.tftpd[2329392]: cannot open IPv6 socket, disable IPv6: Address family not supported by protocol авг 29 07:09:11 0001NBB0203LZB4 in.tftpd[2329392]: Cannot set nonblock flag on socket: Bad file descriptor авг 29 07:09:11 0001NBB0203LZB4 systemd[1]: tftpd-hpa.service: Control process exited, code=exited, status=71/OSERR авг 29 07:09:11 0001NBB0203LZB4 systemd[1]: tftpd-hpa.service: Failed with result 'exit-code'. авг 29 07:09:11 0001NBB0203LZB4 systemd[1]: Failed to start LSB: HPA's tftp server.

Такая ошибка возникает, если запрещен протокол IPv6. Проблема решается редактированием опции TFTP_OPTIONS в файле /etc/default/tftpd-hpa, необходимо строчку TFTP_OPTIONS="--secure" заменить на TFTP_OPTIONS="--secure --ipv4" [3], например:

TFTP_USERNAME="tftp"
TFTP_DIRECTORY="/tftp"
TFTP_ADDRESS="0.0.0.0:69"
TFTP_OPTIONS="--secure --ipv4 --create"

NAME

     tftp — утилита для использования протокола TFTP.

SYNOPSIS

     tftp [host]

ОПИСАНИЕ

Tftp это интерфейс пользователя к Internet TFTP (Trivial File Transfer Protocol), позволяющего передавать файлы на сетевой хост или обратно. Сетевой хост может быть указан через командную строку, в этом случае tftp использует хост как хост по умолчанию для будущих передач (см. далее описание команды connect).

КОМАНДЫ

Когда утилита tftp запущена, она выдает приглашение "tftp> ", и распознает следующие команды:

  ? command-name ...

    Напечатает подсказку по командеPrint help information.

  ascii

    Сокращение для "mode ascii".

  binary

    Сокращение для "mode binary".

  connect host-name [port]

    Установит имя (адрес) целевого хоста (и опционально его порт подключения) для осуществления передач файла.

Обратите внимание, что протокол TFTP, в отличие от протокола FTP, не сохраняет соединения между отдельными транзакциями. Таким образом, команда connect на самом деле не создает соединение, а скорее запоминает, какой хост будет использоваться для передач. Вам не обязательно использовать команду connect; сетевой хост может быть указан как часть команд get или put.

  get filename
  get remotename localname
  get file1 file2 ... fileN

    Получит (скачает через сеть) файл или набор файлов из указанных источников.

Источник может быть в одной из двух форм: имя файла на сетевом хосте, если хост был уже указан, либо строка в виде hosts:filename, чтобы одновременно указать хост и имя файла. Если используется последняя форма, то последний указанный хост будет использоваться как хост по умолчанию для будущих передач команд команд get или put.

  mode transfer-mode

    Установит режим передач; transfer-mode может быть ascii или binary. По умолчанию используется ascii.

  put file
  put localfile remotefile
  put file1 file2 ... fileN remote-directory

    Выгрузит файл или набор файлов в указанный файл на сетевом хосте, либо директорию на сетевом хосте.

Место назначения может быть указано одной из двух форм: имя файла на сетевом хосте, если сетевой хост был указан, либо строкой вида hosts:filename для одновременного указания сетевого хоста и имени файла. Если используется последняя форма, то последний указанный хост будет использоваться как хост по умолчанию для будущих передач команд команд get или put. Если используется форма remote-directory, то подразумевается, что сетевой хост это машина UNIX.

  quit

    Выход из утилиты tftp.

  rexmt retransmission-timeout

    Установит в секундах таймаут повторной передачи на пакет.

  status

    Покажет текущий статус.

  timeout total-transmission-timeout

    Установит общий таймаут передачи, в секундах.

  trace

    Переключает трассировку пакета.

  verbose

    Переключает режим подробного вывода сообщений.

BUGS

  Поскольку протокол TFTP не предусматривает логина или проверки пользователя, то сетевой хост вероятно должен иметь какие-либо способы ограничения к себе доступа.

HISTORY

  Команда tftp появилась в 4.3BSD.

[Ссылки]

1. How to Install and Configure TFTP Server on Ubuntu and Debian site:tecmint.com.
2. Installing and Configuring a TFTP Server on Ubuntu 22 site:reintech.io.
3. tftpd-hpa не работает если отключить ipv6 site:pustovoi.ru.
4. man tftp site:manpages.ubuntu.com.

 

Добавить комментарий


Защитный код
Обновить

Top of Page