Настройка TFTP-сервера на Linux Ubuntu

Это небольшая инструкция по простой настройке сервера TFTP. Также мы рассмотрим пример отправки файла на клиента и немного опишем конфигурацию сервера.
Установка и настройка сервера
Для установки обновим кэш репозитория и выполним инсталляцию:
apt update
apt install tftpd-hpa
Готово, сервер установлен и запущен. Посмотрим его конфигурационный файл:
vi /etc/default/tftpd-hpa
По умолчанию, настройки такие:
TFTP_USERNAME="tftp"
TFTP_DIRECTORY="/srv/tftp"
TFTP_ADDRESS=":69"
TFTP_OPTIONS="--secure"
* где:
- TFTP_USERNAME — имя учетной записи, от которой будет работать сервис tftp.
- TFTP_DIRECTORY — рабочий каталог, где будут находиться файлы или в который будут файлы загружаться.
- TFTP_ADDRESS — адрес и порт, на которых будет слушать сервер. При желании, мы можем ограничить прослушивание для конкретного адреса, например, 192.168.100.13:69.
- TFTP_OPTIONS — дополнительные опции, которые влияют на поведение работы сервиса (перечисляются через пробел):
- --create — разрешает создавать новые файлы.
- --ipv4 — разрешаем только IPv4.
- --umask XXX — выставляет маску для создаваемых файлов, например --umask 027, приведет к тому, что файлы будут создаваться с правами 750.
- --permissive — не проводить дополнительных проверок прав доступа к файлу, кроме тех, что делаются операционной системой.
- --secure — разрешает загружать на TFTP--сервер только файлы, которые уже есть в рабочем каталоге и которые доступны для публичной записи (то есть, можно только перезаписывать файлы). Опция create позволяет создавать новые файлы.
По умолчанию, сервер уже сконфигурирован на работу с минимальными возможностями. Конфигурационный файл можно не менять. Но если мы внесли изменения, перезапускаем сервис:
systemctl restart tftpd-hpa
Проверяем работоспособность сервиса:
systemctl status tftpd-hpa
Убедимся, что сервер слушает на настроенном порту:
ss -tunlp | grep :69
Также мы должны быть уверены в наличие рабочего каталога, который прописан в конфигурации:
mkdir -p /srv/tftp
В качестве его владельца выставляем пользователя tftp:
chown tftp:tftp /srv/tftp
Если в нашей системе брандмауэр настроен для запрета пакетов, откроем порт 69 (udp):
iptables -I INPUT -p udp --dport 69 -j ACCEPT
Для сохранения настройки можно использовать iptables-persistent:
apt install iptables-persistent
netfilter-persistent save
Сервер настроен.
Запуск клиента
Рассмотрим пример подключения к TFTP-серверу с рабочей станции Windows на примере клиента Tftpd64.
Но, пока, не спешим уходить с сервера. Для теста, создадим обычный текстовый файл в корне рабочего каталога TFTP:
vi /srv/tftp/test.txt
test
Теперь уже в клиенте переходим на сайт приложения и скачиваем его. Запускаем скачанный файл и проходим по шагам мастера для установки программы. После запускаем ее.
На вкладке Tftp Client заполняем поля для подключения к серверу и наживаем Get:
* где:
- Current Directory — директория на клиенте куда будут скачиваться файлы или откуда они будут отправляться на TFTP.
- Server interfaces — на клиенте может быть несколько сетевых интерфейсов. Нам нужно выбрать тот, с которого доступен сервер.
- Host — адрес TFTP-сервера.
- Port — порт, на котором слушает сервер.
- Local File — имя файла, который будет либо создан при скачивании, либо отправлен на сервер.
- Remote File — имя файла, который будет либо создан при отправке на сервер, либо скачан с сервера.
После загрузки файла (test.txt) мы должны его увидеть в каталоге, указанном в опции Current Directory.