Настройка tftp сервера linux

Обновлено: 07.07.2024

Сразу хочю сказать, что данная заметка есть своего рода домашная шпаргалка по настройке сервиса (TFTP основан на транспортном протоколе UDP) задачей которого будет просто принимать/загружать файлы без возможностей аутентификации , если нужно аутентификация, то лучше использовать vsftpd. Как настроить и практически использовать можно посмотреть у меня на блоге. Мой блог — это кладезь практических знаний собранных в одном месте и постоянно пополняемый.

Задача: Поднять на локальной/сетевой станции упрощенный сервер передачи данных с целью принятия конфигурационных файлов с сетевых устройств, а так же возможность восстановить работу сетевого оборудования просто указав откуда взять готовый конфигурационный файл.

$ sudo apt-get install tftpd-hpa

Далее перед тем, как перейти к редактированию конфигурационного файла нужно сперва создать каталог , либо на текущей файловой системе, либо выделив отдельный раздел, я буду рассматривать первый вариант:

$ sudo mkdir -p /media/tfpdconf

Редактируем права на каталог:

$ sudo chmod -R 777 /media/tfpdconf/

$ sudo chown -R nobody:nogroup /media/tfpdconf/

Отлично, теперь создаем резервную копию и переходим к внесению изменений настройки сервиса :

$ sudo cp /etc/default/tftpd-hpa /etc/default/tftpd-hpa.backup

$ sudo nano /etc/default/tftpd-hpa

TFTP_OPTIONS="--secure --create" ; allows client to create files

Сохраняем внесенные изменения в конфигурационный файл и перезапускаем службу для запуска сервиса с учетом изменений в конфигурационном файле :

$ sudo service tftpd-hpa restart

Ниже возможные команды по работе с сервисом tftpd-hpa:

service tftpd-hpa status

service tftpd-hpa stop

service tftpd-hpa start

service tftpd-hpa restart

service tftpd-hpa force-reload

проверяем прослушивается ли порт (UDP:69) в системе:

$ sudo netstat -tulpn | grep :69

udp 0 0 0.0.0.0:69 0.0.0.0:* 2742/in.tftpd

Проверка работы TFTP сервера, использование TFTP клиента

Для начала установим TFTP клиент , чтобы можно было подключаться к TFTP северу. Для установки TFTP клиента выполните в терминале команду:

$ sudo apt-get install tftp

Теперь создадим на сервере в директории /tftpboot какой-нибудь файл , например, filik. Для создания файла filik и записи в него текста «This is my filik» выполните в терминале команду:

$ echo "This is my filik" > /media/tftpdconf/filik

Теперь мы можем запустить TFTP клиент командой tftp. Команда tftp принимает в качестве параметра IP адрес сервера. Если вы запускаете клиент на локальном компьютере, то укажите IP адрес 127.0.0.1, если же на удаленном компьютере, то укажите IP адрес сервера.

Когда клиент запустится, вы попадете в режим ввода команд для клиента TFTP. Выполните команду get filik, которая означает получить файл с именем filik с сервера . Стоит отметить, что копирование файла осуществляется в ту директорию, в которой при выполнении команды вы находились в консоле.

tftp> get filik

Received 18 bytes in 0.0 seconds

В случае, если вы все сделали правильно, файл filik загрузится с TFTP сервера. Для выхода из TFTP клиента введите команду quit.

tftp> quit

А теперь практический пример, как с другой системы передать файлы (команда put) на TFTP сервер :

tftp> put /etc/passwd 192.168.1.40:passwd.log

Sent 1755 bytes in 0.0 seconds

tftp> quit

192.168.1.40 (dv6)— это машина на которой поднят TFTP сервис.

Теперь на машине dv6 можно посмотреть содержимого passwd.log его содержание представляет собой список пользовательских учётных записей (аккаунтов). И является первым и основным источником информации о правах пользователя операционной системы:

Также не забываем настроить правила брандмауера:

$ sudo iptables -A INPUT -s 192.168.1.0/24 -m tcp -p tcp --dport 69 -j ACCEPT

$ sudo iptables -A INPUT -s 192.168.1.0/24 -m tcp -p udp --dport 69 -j ACCEPT

Вот собственно и весь процесс по поднятию службы TFTP у себя на системе. В последующих заметках данная заметка очень приходится, когда я буду подробно расписывать, как настроить бездисковую загрузку и установку системы, а также осуществлять бекап конфигурационных файлов на данный сервер с поднятой службой TFTP. На этом всё, с уважением ekzorchik.

2 комментария

Действительно Ваш блог кладезь полезной и главное практичной информации по настройке, работе тех или иных сервисом. А самое интересное, что рассматриваете такие оси, как centos, windows, ubuntu. Мое Вам почтение. Спасибо и удачи.

Comments are closed.

Используйте прокси ((заблокировано роскомнадзором, используйте vpn или proxy)) при использовании Telegram клиента:

Поблагодари автора и новые статьи

будут появляться чаще :)

Карта МКБ: 4432-7300-2472-8059

Большое спасибо тем кто благодарит автора за практические заметки небольшими пожертвованиями. С уважением, Олло Александр aka ekzorchik.

Предлагаю рассмотреть развертывание TFTP сервера на базе Ubuntu с учетом того, чтобы была возможность изменять его файлы посредством обычного FTP.

В Ubuntu доступно несколько TFTP-серверов, рассмотрим установку и настройку tftpd-hpa, atftpd и tftpd. Работать одновременно на 69 порту они не могут, так что Вам необходимо выбрать, какой именно сервер будет использоваться или в конфигурации указывать номер порта для каждого сервиса.

1. Создание каталога для хранения данных tftp-сервера

Я предлагаю пойти довольно простым путем. Создать пользователя tftp и в его домашней директории создать каталог, с которым будет работать tftp-сервера. Это обеспечит доступ по FTP при условии, если у Вас установлен FTP-сервер

Пароль, который Вы укажете при создании пользователя, в дальнейшем используется при доступе по FTP для пользователя tftp

2. Установка сервера

2.1 Установка tftpd-hpa

В файле /etc/default/tftpd-hpa изменяем путь к tftp-каталогу и опции работы. Пример файла конфигурации

Перезапускаем сервис, чтобы изменения вступили в силу

2.2 Установка atftpd

sudo apt-get install atftpd

sudo touch /var/log/atftpd

Правим файл конфигурации /etc/default/atftpd на

И перезапускаем сервис

В примере конфигурационного файла указано ведение логов в файл /var/log/atftpd, если это Вам не нужно, уберите --logfile /var/log/atftpd

2.3 Установка и настройка tftpd

Это наиболее простой tftp-сервер, работает, как сервис inetd

В файле конфигурации /etc/inetd.conf

tftp dgram udp wait nobody /usr/sbin/tcpd /usr/sbin/in.tftpd /srv/tftp
tftp dgram udp wait tftp /usr/sbin/tcpd /usr/sbin/in.tftpd -s /home/tftp/tftp

3. Устранение возможных проблем

Посмотреть сервис, который занимает порт tftp

Если при работе сервера возникают ошибки, возможно, проблемы с правами доступа к каталогу. Для исправления прав доступа выполните:

sudo chown -R tftp:tftp /home/tftp/tftp/ && chmod -R 666 /home/tftp/tftp/

Заключение

У многих системных администраторов рано или поздно возникает необходимость поднять tftp-сервер для каких-либо целей (например для заливки новой прошивки на коммутатор). Далее будет показано как можно развернуть tftp-сервер на Debian/Ubuntu Linux.

Самый простой и быстрый способ. Для начала нужно установить tftpd (и заодно клиент - tftp - он пригодится для проверки работоспособности сервера):

По умолчанию в качестве корня сервера tftpd будет использовать директорию /srv/tftp и работать с правами пользователя nobody, если вас это не устраивает - поменяйте соответствующим образом строку

После изменения этой строки нужно перезапустить супер-сервер inetd:

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

Теперь нам нужно протестировать наш сервер. Для этого создадим тестовый файл в корне сервера:

И попробуем его скачать:

Если никаких ошибок выдано не было - проверяем содержимое скачанного файла. Если и тут всё хорошо - значит наш tftp-сервер нормально работает. Если же нет - проверьте права на корневую директорию сервера и её содержимое. Самой распространённой ошибкой является невозможность серверов прочитать свои собственные файлы.

Установим atftpd (в качестве клиента можно использовать как классический tftp, так и его родной atftp, разницы между ними практически нет, но последний немного удобнее использовать в различных скриптах по причине большего количества аргументов командной строки):

Сам atftpd может работать как в качестве самостоятельного сервера, так и в качестве одной из подсистем суперсервера inetd (или любого его аналога). По умолчанию он настроен на работу через inetd и для его функционирования в /etc/inetd.conf добавляется строка:

Параметров тут перечислено много и информацию по ним лучше всего искать в man-странице atftpd. Основное что нас тут интересует: сервис работает с правами пользователя nobody и считает корнем директорию /var/lib/tftpboot.

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

Пробуем скачать тестовый файл и просмотреть его содержимое:

Если всё пройдёт нормально то на стандартный вывод будет выдана надпись: "Test File". Если же вместо этого будут какие-то ошибки - нужно начинать искать проблему. Скорее всего она кроется в правах доступа (как и в предыдущем случае).

Здесь всё практически так же, как и в предыдущем случае, только нет необходимости запускать суперсервер inetd, поскольку atftpd в этом случае работает как самостоятельный сервер. Если интересен именно такой вариант то нужно сделать следующее: первым делом закоментировать строку запуска atftpd в /etc/inetd.conf:

и переазпустить суперсервер:

Далее нужно поменять значение переменной USE_INETD в файле /etc/default/atftpd с true на false:

Дополнительные опции для atftpd при такой настройке перечисляются в переменной OPTIONS всё того же файла. Настройки по умолчанию совпадают с настройками по умолчанию для режима "inetd", соответственно проверка работоспособности сервера проводится так же.

Заключение

Выше были показаны три разных способа организации tftp-сервера на Debian/Ubuntu Linux. Приведённые рекомендации можно с минимальными поправками использовать на большинстве современных дистрибутивов.

Следует отметить что для корректной работы в файрволле должен быть разрешён доступ к серверу по порту 69/udp

Устанавливаем и настраиваем сервер tftp в Debian Squeeze, Ubuntu Linux, а также устанавливаем и настраиваем для администрирования содержимого tftp сервера по ftp протоколу используя vsftpd сервер

Задача выполнялась на сервере с операционной системой Debian, но работать аналогично будет и на Ubuntu Linux.

Для некоторых телефонов и другого сетевого оборудования для обновления прошивок, обновления конфигов и так далее требуется tftp сервер с удобным администрированием файлов в каталоге.
Для TFTP сервера мы используем 3 разных способа:

  1. Програмное обспечение tftpd tftp с запуском через inetd.
  2. Сервер tftpd-hpa
  3. DNSMASQ сервер по инструкции: Установка и настройка сервера Dnsmasq: DNS, DHCP и TFTP серверов

Для администрирования содержимого в папке TFTP мы используем FTP сервер vsftpd.

Создаем пользователя tftpuser командой:

Вводим при запросе пароль и обязательно записываем пароль в блокнот с паролями.

Создаем папку где будут находится файлы tftp сервера командой:

Даем права на папку нашему пльзователю командой:

Теперь приступим к установе.

Способ № 1

Устанавливаем TFTP сервер и TFTP клиент командой:

В файле /etc/inetd.conf изменяем:

После этого применяем настройки перегрузив inetd командой:

TFTP сервер tftpd установлен и работает.

Способ № 2

Устанавливаем TFTP сервер и TFTP клиент командой:

Настраиваем, для этого изменяем файл:

Я в конфигурационном файле изменил папку содержащую файлы, пользователя, а также добавил параметр --ipv4. Вы можете также при потребности использовать еще такие параметры:

  • --create разрешает серверу создавать новые файлы,
  • --ipv4 предписывает ему ожидать подключений только на адресах IPv4,
  • --umask 027 предписывает сбрасывать бит записи для группы и все биты доступа для остальных пользователей,
  • --permissive предписывает не проводить никаких проверок прав доступа к файлу сверх производимых операционной системой.

TFTP сервер tftpd-hpa установлен и работает.

Для проверки работы можно создать файл в папке tftp сервера командой:

Скачиваем наш тестовый файл командой:

Tftp сервер работает по протоколу UDP на 69 порту, потому Вам нужно открыть на файрволе (если он используется) по протоколу UDP 69 порт.
Если файрвол не используется наш tftp сервер доступен как на 127.0.0.1 так и на внешнем IP сервера, например 192.168.1.1

Устанавливаем vsftpd для администрирования содержимого нашего tftp сервера командой:

Вносим изменения в конфигурационный файл /etc/vsftpd.conf ftp сервера vsftpd:

Сохраняем изменения в редакторе vim введя :wq

Перезагружаем ftp сервер vsftpd командой:

FTP сервер vsftpd для администрирования содержимого tftp сервера установлен, можно подключатся к ftp серверу используя ftp клиент, например TotalComander либо Filezilla.

Задача выполнена, tftp сервер установлен и для администрирования установлен и настроен ftp сервер vsftpd.

Читайте также: