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. Конкретные детали могут отличаться в зависимости от дистрибутива и версии.