Гид по технологиям

Как настроить TFTP‑сервер на Linux

6 min read Сеть Обновлено 29 Dec 2025
Как настроить TFTP‑сервер на Linux
Как настроить TFTP‑сервер на Linux

инженер по хранению данных переносит файлы через TFTP

Что такое TFTP?

TFTP (Trivial File Transfer Protocol) — простой протокол передачи файлов, впервые описанный в 1980 году и формализованный в июне 1981 года как TFTP Protocol revision 2 в RFC 783 автором Karen R. Sollins. Кратко:

  • Транспорт: UDP (порт 69). По сути — «без соединения».
  • Функции: только чтение/запись файлов (нет списков, удаления или переименования).
  • Безопасность: нет встроенной аутентификации или шифрования.
  • Преимущества: простота реализации, подходит для встраиваемых устройств и сред без ОС.

Определение в одну строку: TFTP — лёгкий протокол для передачи файлов по локальной сети, удобный для загрузки прошивок и начальной загрузки систем (netboot).

Когда TFTP уместен и когда нет

  • Уместен: начальная загрузка устройств (PXE), прошивка встроенных систем, перенос конфигураций в доверенной LAN-сети, когда важна простота и совместимость.
  • Неприемлем: публичные сети без VPN, перенос чувствительных данных, случаи, когда нужна контрольная целостность и подтверждение доставки через TCP.

Важно: TFTP не гарантирует доставку пакетов (UDP), поэтому для передачи больших файлов по ненадёжным сетям лучше выбрать SCP/SFTP/HTTPS.

Быстрая установка (Debian/Ubuntu) — пошагово

  1. Установите tftpd-hpa (рекомендуется для Debian-производных):
sudo apt-get update
sudo apt-get install tftpd-hpa

установка tftpd-hpa на Debian

  1. Проверьте переменные в /etc/default/tftpd-hpa:
cat /etc/default/tftpd-hpa

содержимое /etc/default/tftpd-hpa — выбор директории

Типичный файл выглядит так:

# /etc/default/tftpd-hpa
TFTP_USERNAME="tftp"
TFTP_DIRECTORY="/srv/tftp"
TFTP_ADDRESS="0.0.0.0:69"
TFTP_OPTIONS="--secure"
  1. Убедитесь, что используемый каталог существует и содержит файлы, которые вы планируете отдавать/принимать. Частые директории: /var/lib/tftpboot, /srv/tftp.

  2. Для удобства можно сменить владельца каталога на вашего пользователя (чтобы не ставить sudo при каждом действии):

sudo chown -R $USER /srv/tftp
  1. Если нужно, чтобы сервер мог создавать новые файлы при загрузке с клиента, добавьте опцию –create в TFTP_OPTIONS и перезапустите службу:
TFTP_OPTIONS="--secure --create"
sudo systemctl restart tftpd-hpa
sudo ss -uapn | grep :69    # проверка прослушиваемого UDP порта 69

Как отправить файл с устройства (пример BusyBox)

На многих встраиваемых системах клиент tftp реализован в BusyBox. Пример отправки файла example.bin на сервер 192.168.1.100:

busybox tftp
# внутри интерактивного клиента или как однострочный вызов
busybox tftp -l example.bin -p 192.168.1.100

Типичная проблема: ошибка при попытке загрузки файла на сервер. Причина — мера безопасности: tftpd-hpa по умолчанию требует, чтобы файл уже существовал в каталоге и имел права на запись для всех. Иначе сервер отклонит попытку создать новый файл.

Решение — создать пустой файл и выставить права 666 (rw для всех) в каталоге сервера:

cd /srv/tftp
touch example.bin
chmod 666 example.bin
# затем на устройстве
busybox tftp -l example.bin -p 192.168.1.100

Альтернатива — разрешить автоматическое создание файлов, добавив –create в TFTP_OPTIONS (см. выше).

Безопасность и рекомендации по защите

Important: TFTP не шифрует трафик и не аутентифицирует пользователей. Рассматривайте TFTP только внутри доверенной сети или внутри VPN. Рекомендации практической безопасности:

  • Сегментируйте сеть: размещайте TFTP-сервер в изолированной VLAN или подсети.
  • Используйте файрвол: ограничьте доступ к UDP/69 только нужными IP-адресами.
  • Логируйте доступ: включите системные логи и мониторьте подозрительную активность.
  • Минимизируйте права: каталоги и файлы TFTP должны иметь минимально возможные права, создавайте отдельного пользователя tftp.
  • Храните чувствительные данные вне TFTP: передавайте конфигурации с личными или секретными данными через SFTP/HTTPS.
  • Используйте VPN или SSH-туннелирование для удалённых подключений.

Короткая методология hardening (чеклист):

  • Отключить TFTP публично в интернет
  • Ограничить доступ по IP в iptables/nftables
  • Настроить syslog для tftpd и анализировать
  • Применять –secure и избегать общего каталога с другими сервисами
  • Периодически проверять целостность файлов (hash sums)

Отладка и частые проблемы

Симптом: клиент пишет “Error” или “Timed out” без подробностей.

Проверка сервера:

  • Проверить, что tftpd-hpa запущен: systemctl status tftpd-hpa
  • Убедиться, что порт UDP 69 прослушивается: ss -uapn | grep :69
  • Проверить права файлов: ls -l /srv/tftp
  • Проверить маршрутизацию и межсетевой экран: traceroute/iptables/nftables
  • Использовать tcpdump или tshark для захвата трафика UDP: sudo tcpdump -n -i any port 69

Пример сценария: клиент не видит сервера — возможно, между ними NAT или firewall блокирует UDP. TFTP использует динамические UDP-порты для передачи блоков после установления сессии — это важно учитывать при настройке ACL.

Альтернативы и когда выбирать другую технологию

  • SFTP/SSH: когда нужна аутентификация и шифрование; лучше для публичных или небезопасных сетей.
  • SCP/rsync: удобны для больших файлов и инкрементальных синхронизаций.
  • HTTP(S): простая интеграция с CI/CD, легко кешируется и масштабируется.

Выбор краткая эвристика:

  • Нужна скорость и простота в LAN → TFTP
  • Нужна безопасность и контроль → SFTP/HTTPS
  • Нужна согласованность/повторяемость → rsync/HTTPS

Совместимость и особенности разных дистрибутивов

  • Debian/Ubuntu: tftpd-hpa, atftpd, tftp-hpa — часто tftpd-hpa предпочтителен.
  • Red Hat/CentOS/Fedora: пакет чаще называется tftp-server (xinetd или systemd-variant).
  • BusyBox/встраиваемые: встроенный клиент tftp обычно поддерживает минимальный набор опций.

Совет: перед масштабированием протестируйте совместимость клиента/сервера (особенно поведение при создании файлов и разбиении блоков).

Роль‑ориентированные действия

Администратор сети

  • Установить и настроить tftpd-hpa
  • Ограничить доступ по IP/файрволу
  • Включить мониторинг и логирование

Инженер встраиваемой системы

  • Проверить клиентский tftp в BusyBox
  • Подготовить оболочку сборки для передачи bin/firmware
  • Тестировать загрузку и проверять контрольные суммы

Оператор поддержки

  • Проверять права файлов
  • Восстанавливать файлы при проблемах
  • Контролировать места хранения и бэкапы

Матричный выбор: когда включать –create

  • Выгода: упрощение процесса загрузки файлов с устройств.
  • Риск: любой клиент может создать файл, потенциально затирая существующие данные.
  • Рекомендация: использовать –create только в контролируемых сетях и, при возможности, на временном сервисе, а не на общем файловом хранилище.

Пример сценариев и тесткейсы (основные)

  1. Тест установки:
  • Установить пакет, перезапустить службу, проверить прослушивание UDP:69.
  1. Тест скачивания файла:
  • Поместить test.bin в каталог, выставить права 644, скачать с клиента.
  1. Тест загрузки файла без –create:
  • Создать пустой файл на сервере с правами 666 и выполнить upload с клиента.
  1. Тест загрузки файла с –create:
  • Включить опцию –create, удалить файл, выполнить upload; убедиться, что файл создаётся.

Критерии приёмки

  • Сервер отвечает на запросы клиентов в локальной сети
  • Файлы успешно загружаются/скачиваются в соответствии с настройками прав
  • Логирование событий регистрации успешных/неуспешных попыток

Короткий чек‑лист для запуска (SOP)

  1. Установить пакет: sudo apt-get install tftpd-hpa
  2. Проверить /etc/default/tftpd-hpa и каталог TFTP_DIRECTORY
  3. Настроить права на каталог и файлы
  4. Ограничить доступ по IP/портам в firewall
  5. Перезапустить службу и протестировать с клиента

Альтернативный поток принятия решения (Mermaid)

flowchart TD
  A[Нужно передать файл?] --> B{Сеть защищена?}
  B -- Да --> C{Нужна аутентификация/шифрование?}
  B -- Нет --> D[Используйте VPN или SFTP]
  C -- Да --> D
  C -- Нет --> E[Используйте TFTP в локальной сети]
  E --> F[Настроить права и firewall]
  F --> G[Тестирование]

GDPR и приватность

TFTP не шифрует данные; передача персональных данных через TFTP в публичных или смешанных сетях может нарушать требования по защите данных. Для передачи личных данных используйте шифрование и аутентификацию (SFTP/HTTPS) и учитывайте локальные регуляции.

Краткое резюме

TFTP остаётся полезным инструментом для простых задач передачи файлов в локальной и доверенной сети, особенно в контексте встраиваемых систем и начальной загрузки устройств. Его достоинство — простота и широкая поддержка; основное ограничение — отсутствие безопасности и базовых функций управления файлами. Всегда комбинируйте TFTP с мерами сетевой изоляции, мониторинга и резервного копирования.

Часто задаваемые вопросы

Можно ли использовать TFTP через интернет?

Нет: без VPN или шифрования передача через интернет потенциально небезопасна. Для удалённого доступа используйте VPN или SFTP.

Как разрешить создание файлов на сервере при загрузке клиентом?

Добавьте опцию –create в TFTP_OPTIONS в /etc/default/tftpd-hpa и перезапустите сервис.

Что делать, если upload возвращает «permission denied»?

Проверьте, что файл существует на сервере и имеет права на запись (например, chmod 666 file). Либо включите –create.


Короткое уведомление для социальных сетей: Настройте TFTP на Linux быстро и безопасно: установка, права, –create, отладка и меры безопасности — в одном материале.

Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

TextToSample: генерируйте AI‑сэмплы в DAW
Музыка

TextToSample: генерируйте AI‑сэмплы в DAW

Как читать мангу на Crunchyroll
Манга

Как читать мангу на Crunchyroll

Как исправить BSOD с ntoskrnl.exe в Windows
Windows

Как исправить BSOD с ntoskrnl.exe в Windows

Как окончательно отказаться от кабельного ТВ
Медиа

Как окончательно отказаться от кабельного ТВ

Как создать шаблон рассылки в Microsoft Word
Руководство

Как создать шаблон рассылки в Microsoft Word

Удаление бизнеса из Google My Business
Маркетинг

Удаление бизнеса из Google My Business