Настройка tftp-сервера Linux

Обновлено: 21.11.2024

Тривиальный протокол передачи файлов, известный как TFTP, представляет собой простой синхронизированный протокол передачи файлов, который позволяет клиенту получить файл или, скорее, поместить файл на удаленный хост. Одно из его основных применений — на ранних этапах загрузки узлов из локальной сети.

Проще говоря, TFTP-сервер — это изображенный протокол, работающий на пользовательском протоколе дейтаграмм. Однако, в отличие от FTP, он не использует протокол управления передачей (TCP) для передачи данных.

В первую очередь реализация протокола сервера TFTP применяется там, где безопасность и аутентификация не являются обязательными. Это основная причина, по которой он почти не используется в компьютерной сети, поскольку в нем отсутствуют необходимые меры безопасности, что делает его уязвимым в Интернете.

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

В основном передача данных на TFTP-сервере изначально начинается с порта 69. Но это не ограничивает отправителя и получателя в выборе других портов для передачи, поскольку они могут сделать это после установления соединения.

Чтобы вы знали, сервер TFTP требует минимального объема памяти для своей реализации. Эта функция становится точным и более организованным способом загрузки ПК, на которых нет накопителей. С другой стороны, он становится основным элементом Preboot Execution Environment (PXE) и сетевого протокола загрузки.

Как работает TFTP?

Скажем так, TFTP – это упрощенный и более простой протокол передачи файлов, чем-то похожий на FTP. Однако он предлагает меньше функций, чем FTP, поэтому занимает меньше места. Во-первых, давайте рассмотрим базовую теорию работы и то, как работает сервер TFTP.

Как и FTP, TFTP также использует одно и то же клиент-серверное программное обеспечение для соединения двух компьютеров. Это протокол прикладного уровня (клиент-сервер) с клиентским программным обеспечением TFTP для своих клиентов и серверным программным обеспечением TFTP, предназначенным для серверов TFTP.

Следует отметить, что TFTP использует уровень протокола пользовательских данных (UDP) для передачи данных по сети. Протокол пользовательских данных более прост, чем сложный уровень TCP. Таким образом, ему требуется меньше места для кода, что делает его гибким вариантом, который может поместиться даже в любом небольшом месте хранения.

Клиент TFTP должен открыть серверный сокет на IP-адресе сервера через UDP-порт 69. Это связано с тем, что сервер зависит от порта 69 для соединения с клиентом. Поэтому клиент должен установить UDP-соединение с сервером.

После установления соединения клиент может отправить запрос сообщения на сервер. Есть несколько запросов сообщений, которые можно отправить на сервер. Например, клиент может отправить RRQ (запрос на чтение), чтобы получить любой файл с сервера, или WRQ (запрос на запись), чтобы передать любой файл по сети.

TFTP разделяет сообщение для отправки на блоки размером около 512 байт. Ощутимая часть — последний блок каждого файла всегда меньше 512 байт. Таким образом, получатель может расшифровать, что это последний блок от отправителя.

Затем каждый блок передается как сообщение данных TFTP, и каждому блоку назначается номер TFTP. Теперь каждый блок передается внутри UDP-сообщения независимо.

Потому что не каждый раз, когда размер последнего блока будет меньше (если он точно кратен 512), отправитель отправляет еще один блок нулевых байтов, чтобы определить, что часть передачи завершена.

Поскольку TFTP использует протокол проверки и паузы, он последовательно отправляет каждый блок. Когда отправитель доставляет первый блок, он запускает предварительно установленный таймер блока. Если приветствие получено в течение таймера блока для отправленного блока, то отправляется второй блок файла. А если нет, то отправляется первый блок файла. И именно так TFTP обеспечивает управление потоком.

Посмотрев на эту ключевую информацию, давайте копнем глубже и объясним, как настроить TFTP-сервер в Debian 11 и дистрибутивах на базе Linux

Прежде чем продолжить, давайте начнем с открытия порта TFTP (69) с помощью UFW (несложного брандмауэра), как показано на следующем снимке:

разрешить ufw

Сразу же порт открыт; теперь вы можете продолжить установку TFTP.

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

Способ 1. Установка сервера и клиента TFTP с помощью команды apt

В этом разделе будет использоваться apt, утилита командной строки для обновления, установки, удаления и управления пакетами дистрибутива на основе Debian для установки служб TFTP. Для этого введите следующую команду:

установить TFTP-сервер

Приведенная выше команда установила службу TFTP, но это еще не все, поскольку нам нужно установить клиент TFTP с помощью той же команды apt. Таким образом, выполните следующую команду:

установить TFTP-клиент

Способ 2. Установка TFTP с помощью aptitude

Если вы хотите следовать этому методу, вам может потребоваться сначала установить aptitude, так как он не предустанавливает Debian. Чтобы установить aptitude, введите следующую команду:

установить aptitude

После установки aptitude используйте его для обновления всей системы, как показано ниже:

обновление способностей

После обновления базы данных apt продолжите и установите TFTP, используя aptitude, введя следующую команду:

aptitude установить TFTP

Настройка TFTP-сервера

После установки сервера TFTP вам необходимо выполнить некоторые настройки, чтобы улучшить функциональность сервера при выполнении задач. Для этого нам нужно будет отредактировать файл конфигурации tftp, который по умолчанию находится в /etc/default/tftp d-hpa. Мы предлагаем вам использовать любой из предпочитаемых вами редакторов; в нашем случае мы воспользуемся редактором nano, как показано в следующем примере. Чтобы запустить редактор nano, выполните следующую команду:

наноредактор

ИМЯ_ПОЛЬЗОВАТЕЛЯ_TFTP. В этом разделе вы можете указать пользователя tftp, но по умолчанию это пользователь tftp .

TFTP_КАТАЛОГ. В этом разделе вы можете указать каталог tftp для загрузки или загрузки файлов. Сначала создается каталог /srv/tftp; вы можете оставить его или определить новый. Если вы хотите создать новый, вы должны использовать команду make directory «mkdir».

АДРЕС_TFTP. Это та часть, где вы указываете IP-адрес и порт TFTP, который по умолчанию является портом 69 в TFTP.

TFTP_OPTIONS. В этой части вы можете указать параметр или добавить все необходимые параметры для загрузки файлов на сервер tftp.

Вы отредактируете указанные параметры следующим образом:

В поле TFTP_ADDRESS введите адрес вашего ПК, чтобы определить IP-адрес сервера, а в поле TFTP_OPTIONS добавьте «–create» в конце, чтобы разрешить загрузку файлов. Чтобы получить IP-адрес вашего ПК, выполните следующую команду:

проверить IP-адрес

После редактирования файла конфигурации, как показано ниже,

изменить редактор nano

нажмите «Ctrl+X»

Ctrl+x

а затем "Y" и нажмите "Enter", чтобы сохранить и выйти из редактора:

нажмите Y

Как вы можете заметить, каталог TFTP по умолчанию — это место, где файлы хранятся в /srv/tftp/. Вам не нужно беспокоиться об этом файле, если вы являетесь пользователем Debian 11, так как он создается по умолчанию при установке tftp.

Тем не менее, это не ограничивает вас в возможности создать другой, если он вам нужен. Но вам придется изменить владельца пользователя и группу, чтобы разрешить определенному пользователю в файле конфигурации (по умолчанию пользователь tftp) хранить файлы внутри.

Чтобы переключить владельца каталога на пользователя tftp, используйте команду chown, как показано ниже:

Переключиться на пользователя tftp

После перенастройки перезапустите службу tftp, используя systemctl, как показано ниже:

перезапустить службу

Загружать и скачивать файлы с помощью TFTP

Чтобы подключиться к серверу TFTP, введите команду tftp, а затем IP-адрес сервера, показанный на снимке ниже. TFTP используется для подключения к серверу с IP-адресом. Для этого используйте следующий синтаксис:

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

Взгляните на следующий пример, который загружает файл с именем fosslinuxfile на IP-адрес сервера 192.168.62.138

поставить команду

Чтобы загрузить файлы, используйте команду get, за которой следует имя файла, который вы хотите загрузить, как показано ниже:

получить команду

Посмотрев на это, давайте быстро пробежимся по различиям между TFTP, FTP и SFTP.

TFTP, FTP и SFTP

В отличие от FTP и SFTP, TFTP работает по протоколу UDP; это быстрее, но менее безопасно и гибко. TFTP не разрешает аутентификацию, и пользователи не могут изменять или изменять файлы. Даже обычный протокол FTP (порт 21) является наиболее безопасной альтернативой. TFTP в основном используется для процессов сетевой загрузки и в основном не используется.

Сервер TFTP не позволяет отображать содержимое каталога TFTP; пользователи должны полностью знать имя файла, который они хотят скачать.

Как удалить TFTP в Debian 11

Если вы хотите покончить с этим сервером по той или иной причине, вы можете выполнить следующие шаги:

Чтобы удалить только пакет TFTP без каких-либо зависимостей, введите следующую команду:

удаление TFTP

Удалите TFTP и его зависимости

Чтобы полностью удалить TFTP и его зависимости, которые больше не нужны Debian11, вы можете использовать следующую команду:

удалить команду

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

команда очистки

Заключительные мысли

Как вы видите, важным преимуществом протокола TFTP является простота его реализации. Таким образом, любой пользователь Linux, будь то новичок, посредник или гуру, может легко настроить TFTP-сервер. Крайне важно учитывать, что TFTP является небезопасной реализацией, а SFTP следует рассматривать как главный суррогат для передачи файлов и фильтрации нежелательного доступа. С другой стороны, пользователи должны не забыть открыть порт 69, чтобы разрешить трафик TFTP; этого можно добиться, используя Iptables UFW, как описано ранее в статье.

Мы надеемся, что эта статья пролила свет на установку сервера TFTP в Debian 11, и мы считаем, что она была достаточно информативной для вас. Следите за Foss Linux, чтобы получать дополнительные руководства и советы по Linux.

Чтобы использовать загрузку по сети PXE, вам потребуется работающий сервер DHCP и сервер TFTP (необходимые условия для загрузки по сети PXE).

Чтобы установить TFTP-сервер в дистрибутиве Linux, поддерживающем yum, таком как Fedora и CentOS, выполните следующую команду:

Другие дистрибутивы Linux и варианты Unix имеют собственные методы установки программного обеспечения. Например, в дистрибутивах, поддерживающих aptitude, таких как Debian и Ubuntu, сервер TFTP можно установить с помощью команды:

После установки вам потребуется настроить TFTP-сервер. Этот сервер запускается с суперсервера xinetd и имеет файл конфигурации службы в каталоге /etc/xinetd.d. Файл в каталоге /etc/xinetd.d обычно устанавливается вместе с сервером TFTP.Но если файл в /etc/xinetd.d отсутствует, вы можете создать его или записать в своем любимом текстовом редакторе. Пример файла (с именем /etc/xinetd.d/tftp) приведен ниже:

service tftp
socket_type = dgram
protocol = udp
wait = yes
user = root
server = /usr/sbin/in.tftpd
server_args = -s /tftpboot

По умолчанию сервер TFTP отключен, и эта строка имеет вид disable = yes. Чтобы включить его, измените строку на disable = no (выделено красным). После сохранения изменений в файле перезапустите xinetd с помощью следующей команды:

Чтобы протестировать сервер TFTP, вы можете скопировать /bin/ls (существует во всех Linux) в каталог /tftpboot. Используя компьютер с Linux, откройте оболочку и выполните следующую команду:

Если сервер TFTP работает, команда не вернет никаких результатов, а файл ls должен появиться в текущем каталоге.

Простой протокол передачи файлов (TFTP) был стандартизирован в 1981 году в соответствии с RFC 1350 . Цель разработчиков состояла в том, чтобы создать FTP, который был бы небольшим по размеру и объему памяти, но при этом простым в реализации. По этой причине он нашел широкое применение во многих приложениях, таких как протоколы сетевой загрузки PXE и ​​BOOTP.

Ограничения

Его простота сопряжена с некоторыми серьезными недостатками. Эта команда не может просматривать, удалять или переименовывать файлы, как это могут делать более продвинутые службы FTP. Что еще более важно, это НЕБЕЗОПАСНО! Все данные передаются по протоколу UDP в незашифрованном виде, поэтому не используйте их для передачи конфиденциальной информации или получения данных из непроверенных источников.

По сетевым стандартам 1981 года это не было проблемой; вот почему сегодня эта команда в основном используется в локальных сетях, где вы можете контролировать все параметры, которые могут поставить под угрозу безопасность. Думайте об этом как о «telnet» протоколов удаленного доступа.

Установка

Есть несколько реализаций этой команды. Вы можете выполнить поиск пакетов TFTP в репозиториях Debian с помощью следующей команды:

Это может привести к длинному списку, но вы можете легко определить те, которые являются реальными пакетами TFTP.

Вы можете установить сервер с помощью:

Если вы работаете в ОС Windows или MAC, вы можете найти онлайн-клиенты или серверы TFTP для своего компьютера.

Конфигурация сервера

После установки сервера он запустится как демон и будет готов к приему и отправке файлов. По умолчанию сервер использует порт 69. tftpd-hpa использует каталог «/srv/tftp» для загрузки и выгрузки. Чтобы изменить это, вы должны отредактировать следующий файл конфигурации:

Параметр «- -secure» повышает безопасность TFTP, ограничивая все транзакции в TFTP_DIRECTORY. Кроме того, файлы можно загружать в «/srv/tftp», только если они уже существуют в этом каталоге и доступны для записи. Если вы хотите разрешить клиентам загружать новые файлы в «/srv/tftp», вам нужно добавить параметр «- -create», например: TFTP_OPTIONS=»- -secure – -create». После редактирования «/etc/default/tftpd-hpa» перезапустите tftp-сервер с помощью «service tftpd-hpa restart».

Скачать/загрузить файл

Я создал следующий текстовый файл в «/srv/tftp»:

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

На стороне клиента я могу загрузить файл с помощью следующих команд:

Если при загрузке вы получаете следующую ошибку:

Это может означать одно из следующего:

  1. Файл «hello_client.txt» не существует в каталоге сервера «/srv/tftp»
  2. На сервере не включена опция «--create» (см. выше)
  3. Файл hello_client.txt существует на сервере, но он недоступен для публичной записи.

Этот удобный и легкий сервер удобен для загрузки и скачивания файлов, но он имеет некоторые важные ограничения, о которых следует помнить. Возможно, вы использовали его, если когда-либо удаленно загружали машину с помощью PXE или BOOTP.

Большинство целевых плат используют Простой протокол передачи файлов (TFTP) для загрузки исполняемых файлов на плату. Для этого требуется, чтобы сервер TFTP был доступен в системе, в которой вы размещаете макетную плату Linux. В большинстве современных систем Linux сервер TFTP устанавливается как часть сетевой установки системы, но обычно он деактивирован. В этом документе объясняется, как активировать TFTP-сервер в вашей системе Linux и как скопировать ядро ​​в область, из которой TFTP-сервер может доставить ядро ​​к цели.

Пользователи Ubuntu и Debian могут установить TFTP-сервер с помощью следующей команды:

Перед настройкой самого демона TFTP убедитесь, что записи для протокола TFTP не закомментированы в файле /etc/services. Каждая сетевая служба обычно обращается к этому файлу, чтобы определить, какие сетевые порты следует использовать.

В зависимости от используемого дистрибутива и версии Linux для настольных ПК системы Linux обычно используют один из двух механизмов для активации и управления сетевыми серверами, такими как серверы TFTP. Это либо демон служб Интернета (inetd), либо, чаще, демон расширенных служб Интернета (xinetd). Обе эти команды управляют различными сетевыми службами, отслеживая различные сетевые порты и запуская соответствующий демон в ответ на действительный запрос. Более современным механизмом является xinetd, и обычно он считается более безопасным, чем старый inetd.

Чтобы определить, какой из этих механизмов используется вашей системой для управления интернет-службами, вы можете использовать системную команду ps (состояние процесса), как показано в следующем примере:

В этом примере система использует сервер xinetd, и вы должны следовать инструкциям в разделе Настройка TFTP-сервера, запускаемого xinetd. Если выходные данные этой команды показывают, что в вашей системе работает сервер inetd, перейдите к разделу Настройка TFTP-сервера, запускаемого inetd.

Настройка TFTP-сервера под управлением xinetd

Серверы, которыми может управлять демон xinetd, перечислены в файле конфигурации для конкретного сервера, расположенном в каталоге /etc/xinetd.d. Файл для сервера TFTP называется tftp и выглядит следующим образом:

Чтобы включить сервер TFTP, отредактируйте этот файл от имени пользователя root, заменив слово yes в строке disable словом no. . Затем сохраните файл и выйдите из редактора.

Затем перезапустите процесс xinetd, чтобы он перечитал свои файлы конфигурации, как описано в разделе Перезапуск службы.

Настройка TFTP-сервера, запускаемого с помощью inetd

Серверы, которыми может управлять демон inetd, перечислены в файле /etc/inetd.conf. Каждая строка в этом файле содержит запись для определенного сервера. Чтобы включить сервер TFTP, отредактируйте файл
/etc/inetd.conf от имени пользователя root в вашей системе и найдите строку, похожую на следующую:

Добавьте параметр и значение -s /tftpboot в конец этой строки. Это указывает каталог, в котором сервер TFTP будет искать файлы. Это каталог, в который вы поместите ядро, которое целевая плата загрузит и загрузит. Измененная запись должна выглядеть следующим образом:

Сохраните измененный файл и выйдите из редактора.

Затем перезапустите процесс inetd, чтобы он перечитал свои файлы конфигурации, как описано в разделе Перезапуск службы.

Перезапуск службы

Если в вашей системе используется настольный дистрибутив Linux, такой как Red Hat Linux, который запускает и останавливает системные процессы с помощью сценариев run configuration (rc), вы можете просто перезапустить демон, вызвав эти сценарии. в одной из следующих команд, подходящих для вашего демона:

Эта команда остановит, а затем перезапустит все службы, управляемые демоном в вашей системе Linux. В дополнение к команде перезапуска вы также можете выдавать команды остановки и запуска таким образом.

Если в вашей системе Linux запущены интернет-службы, от которых зависят другие системы, перезапуск демона вызовет небольшой перерыв в работе этих служб.

После выполнения этой команды сервер TFTP будет запущен в вашей системе в ответ на входящие запросы TFTP, и вы сможете получить доступ к любым файлам, которые вы скопировали в /tftpboot .

Если вам нужен другой способ остановить процесс, следующий метод будет работать в любом дистрибутиве Linux. Отправьте сигнал HUP запущенному процессу xinetd. Для этого вы должны сначала определить идентификатор процесса, который в данный момент выполняется в вашей системе, с помощью команды ps process status, как в следующем примере:

Конечно, замените inetd, если это служба, которую вы используете.

Параметры -alxww команды ps заставляют ее отображать все системные процессы в чрезвычайно широком списке. Затем команда grep ищет строку xinet в полученном списке. В этом примере отображается информация о запущенной команде, имя или аргументы которой содержат строку xinet . Из них первое поле — это фактический процесс xinetd, а третье поле — его идентификатор процесса (в данном примере 578). Идентификатор процесса — это информация, необходимая для перезапуска процесса.

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

Тестирование службы

Чтобы убедиться, что сервер TFTP работает, поместите небольшой текстовый файл в /tftpboot:

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