Настройка TFTP-сервера в Linux: полное руководство

Настройка TFTP-сервера в Linux: полное руководство

TFTP (Trivial File Transfer Protocol) — это простой протокол передачи файлов, не требующий аутентификации. Он часто используется для:

·        Загрузки сетевых устройств (роутеры, коммутаторы)

·        Загрузки бездисковых рабочих станций

·        Обновления прошивок

·        PXE-загрузки

1. Установка TFTP-сервера

На Debian/Ubuntu:

bash

sudo apt update

sudo apt install tftpd-hpa

На CentOS/RHEL/Rocky Linux:

bash

sudo dnf install tftp-server

# или для старых версий

sudo yum install tftp-server

2. Базовая настройка

Для Debian/Ubuntu (/etc/default/tftpd-hpa):

bash

TFTP_USERNAME="tftp"

TFTP_DIRECTORY="/srv/tftp"

TFTP_ADDRESS="0.0.0.0:69"

TFTP_OPTIONS="--secure --create"

Создайте директорию и установите права:

bash

sudo mkdir -p /srv/tftp

sudo chown tftp:tftp /srv/tftp

sudo chmod 755 /srv/tftp

Для CentOS/RHEL:

Редактируйте файл /etc/xinetd.d/tftp:

bash

service tftp

{

socket_type = dgram

protocol    = udp

wait        = yes

user        = root

server      = /usr/sbin/in.tftpd

server_args = -s /var/lib/tftpboot -c

disable     = no

per_source  = 11

cps         = 100 2

flags       = IPv4

}

Создайте директорию:

bash

sudo mkdir -p /var/lib/tftpboot

sudo chmod 755 /var/lib/tftpboot

3. Запуск и включение сервиса

Debian/Ubuntu:

bash

sudo systemctl start tftpd-hpa

sudo systemctl enable tftpd-hpa

sudo systemctl status tftpd-hpa

CentOS/RHEL:

bash

sudo systemctl start tftp

sudo systemctl enable tftp

sudo systemctl status tftp

# Если используется xinetd:

sudo systemctl start xinetd

sudo systemctl enable xinetd

4. Настройка фаервола

Для UFW (Ubuntu):

bash

sudo ufw allow 69/udp

Для firewalld (CentOS/RHEL):

bash

sudo firewall-cmd --permanent --add-service=tftp

sudo firewall-cmd --reload

Для iptables:

bash

sudo iptables -A INPUT -p udp --dport 69 -j ACCEPT

5. Тестирование TFTP-сервера

Создайте тестовый файл:

bash

echo "Hello TFTP Server" | sudo tee /srv/tftp/test.txt

sudo chmod 644 /srv/tftp/test.txt

Протестируйте с другого хоста:

bash

# Установите TFTP-клиент

sudo apt install tftp  # Debian/Ubuntu

sudo dnf install tftp  # CentOS/RHEL

# Подключитесь к серверу

tftp 192.168.1.100  # замените на IP вашего сервера

tftp> get test.txt

tftp> quit

6. Расширенная конфигурация

Настройка для PXE-загрузки:

bash

# Установите дополнительные компоненты

sudo apt install pxelinux syslinux-common

# Скопируйте файлы PXE

sudo cp /usr/lib/syslinux/modules/bios/ldlinux.c32 /srv/tftp/

sudo cp /usr/lib/PXELINUX/pxelinux.0 /srv/tftp/

sudo mkdir -p /srv/tftp/pxelinux.cfg

# Создайте конфигурационный файл

sudo nano /srv/tftp/pxelinux.cfg/default

Пример содержимого default:

text

DEFAULT linux

LABEL linux

KERNEL vmlinuz

APPEND root=/dev/nfs initrd=initrd.img

7. Безопасность

TFTP по своей природе небезопасен. Рекомендации:

1.     Используйте только в доверенных сетях

2.     Ограничьте доступ фаерволом

3.     Не храните конфиденциальные данные

4.     Регулярно обновляйте ПО

8. Полезные команды

Просмотр логов:

bash

sudo journalctl -u tftpd-hpa -f  # Debian/Ubuntu

sudo journalctl -u tftp -f   # CentOS/RHEL

Проверка открытых портов:

bash

sudo netstat -tulpn | grep :69

# или

sudo ss -tulpn | grep :69

Проверка работы сервиса:

bash

sudo systemctl status tftpd-hpa

9. Устранение неполадок

Проблема: "Permission denied"
Решение: Проверьте права на файлы и директорию TFTP

Проблема: "File not found"
Решение: Убедитесь, что файл существует в корневой директории TFTP

Проблема: "Connection refused"
Решение: Проверьте, запущен ли сервис и открыт ли порт 69/udp

Это основная информация для настройки TFTP-сервера в Linux. Конкретные детали могут отличаться в зависимости от дистрибутива и версии.


   28.11.2025 09:42:51
Автор статьи:
Краснов Эрнест Маркович ©
ЕЩЕ ПО ТЕМЕ