Сразу хочю сказать, что данная заметка есть своего рода домашная шпаргалка по настройке сервиса (TFTP основан на транспортном протоколе UDP) задачей которого будет просто принимать/загружать файлы без возможностей аутентификации, если нужно аутентификация, то лучше использовать vsftpd. Как настроить и практически использовать можно посмотреть у меня на блоге. Мой блог — это кладезь практических знаний собранных в одном месте и постоянно пополняемый.
Задача: Поднять на локальной/сетевой станции упрощенный сервер передачи данных с целью принятия конфигурационных файлов с сетевых устройств, а так же возможность восстановить работу сетевого оборудования просто указав откуда взять готовый конфигурационный файл.
Для инсталляции сервиса в систему воспользуемся репозитариями “Ubuntu 12.04“:
ekzorchik@dv6:~$ sudo apt-get install tftpd-hpa
Далее перед тем, как перейти к редактированию конфигурационного файла нужно сперва создать каталог, либо на текущей файловой системе, либо выделив отдельный раздел, я буду рассматривать первый вариант:
ekzorchik@dv6:~$ sudo mkdir -p /media/tfpdconf
Редактируем права на каталог:
ekzorchik@dv6:~$ sudo chmod -R 777 /media/tfpdconf/
ekzorchik@dv6:~$ sudo chown -R nobody:nogroup /media/tfpdconf/
Отлично, теперь создаем резервную копию и переходим к внесению изменений настройки сервиса:
ekzorchik@dv6:~$ sudo cp /etc/default/tftpd-hpa /etc/default/tftpd-hpa.backup
ekzorchik@dv6:~$ sudo nano /etc/default/tftpd-hpa
# /etc/default/tftpd-hpa
TFTP_USERNAME="tftp"
TFTP_DIRECTORY="/media/tfpdconf"
TFTP_ADDRESS="0.0.0.0:69"
TFTP_OPTIONS="--secure --create"
; allows client to create files
Сохраняем внесенные изменения в конфигурационный файл и перезапускаем службу для запуска сервиса с учетом изменений в конфигурационном файле:
ekzorchik@dv6:~$ sudo service tftpd-hpa restart
tftpd-hpa stop/waiting
tftpd-hpa start/running
Ниже возможные команды по работе с сервисом 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) в системе:
ekzorchik@dv6:~$ 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 клиента выполните в терминале команду:
ekzorchik@dv6:~$ sudo apt-get install tftp
Теперь создадим на сервере в директории /tftpboot какой-нибудь файл, например, filik. Для создания файла filik и записи в него текста «This is my filik» выполните в терминале команду:
ekzorchik@dv6:~$ echo "This is my filik" > /media/tftpdconf/filik
Теперь мы можем запустить TFTP клиент командой tftp. Команда tftp принимает в качестве параметра IP адрес сервера. Если вы запускаете клиент на локальном компьютере, то укажите IP адрес 127.0.0.1, если же на удаленном компьютере, то укажите IP адрес сервера.
ekzorchik@dv6:~$ tftp 127.0.0.1
Когда клиент запустится, вы попадете в режим ввода команд для клиента TFTP. Выполните команду get filik, которая означает получить файл с именем filik с сервера. Стоит отметить, что копирование файла осуществляется в ту директорию, в которой при выполнении команды вы находились в консоле.
tftp> get filik
Received 18 bytes in 0.0 seconds
В случае, если вы все сделали правильно, файл filik загрузится с TFTP сервера. Для выхода из TFTP клиента введите команду quit.
tftp> quit
А теперь практический пример, как с другой системы передать файлы (команда put) на TFTP сервер:
ekzorchik@srv-home:~$ tftp
tftp> put /etc/passwd 192.168.1.40:passwd.log
Sent 1755 bytes in 0.0 seconds
tftp> quit
Здесь отметим, что команда put позволяет отправить запрос на запись к tftp серверу. Первый параметр указываем имя записываемого файла на локальной машине. Второй параметр имеет формат адрес tftp сервера:имя под которым файл будет записан на сервер.
, где
192.168.1.33 (srv-home) – это другая машина c установленным tftp клиентом.
192.168.1.40 (dv6)— это машина на которой поднят TFTP сервис.
Теперь на машине dv6 можно посмотреть содержимого passwd.log его содержание представляет собой список пользовательских учётных записей (аккаунтов). И является первым и основным источником информации о правах пользователя операционной системы:
ekzorchik@dv6:~$ less /media/tftpdconf/passwd.log
Также не забываем настроить правила брандмауера:
ekzorchik@dv6:~$ sudo iptables -A INPUT -s 192.168.1.0/24 -m tcp -p tcp --dport 69 -j ACCEPT
ekzorchik@dv6:~$ sudo iptables -A INPUT -s 192.168.1.0/24 -m tcp -p udp --dport 69 -j ACCEPT
Вот собственно и весь процесс по поднятию службы TFTP у себя на системе. В последующих заметках данная заметка очень приходится, когда я буду подробно расписывать, как настроить бездисковую загрузку и установку системы, а также осуществлять бекап конфигурационных файлов на данный сервер с поднятой службой TFTP. На этом всё, с уважением ekzorchik.
Действительно Ваш блог кладезь полезной и главное практичной информации по настройке, работе тех или иных сервисом. А самое интересное, что рассматриваете такие оси, как centos, windows, ubuntu. Мое Вам почтение. Спасибо и удачи!!!
Вот за “–create» ; allows client to create files” – спасибо, неспешно голову ломал, как запись включить.