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

Как настроить 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
Автор
Редакция

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

Несколько аккаунтов Skype: Multi Skype Launcher
Программное обеспечение

Несколько аккаунтов Skype: Multi Skype Launcher

Журнал для работы: повысить продуктивность
Productivity

Журнал для работы: повысить продуктивность

Персональные звуки уведомлений на Android
Android.

Персональные звуки уведомлений на Android

Скачивание шоу Hulu для офлайн‑просмотра
Стриминг

Скачивание шоу Hulu для офлайн‑просмотра

Microsoft Start: персонализированная новостная лента
Новости

Microsoft Start: персонализированная новостная лента

Как изменить имя в Epic Games быстро
Гайды

Как изменить имя в Epic Games быстро