Что такое tftp сервер
Что такое tftp сервер
Trivial File Transfer Protocol
RIS Windows, tftp.exe
WinAgents TFTP Server, RIS Windows, tftpd
Размер блока (RFC 2348), Тайм-аут передачи (RFC 2349)
TFTP (англ. Trivial File Transfer Protocol — простой протокол передачи файлов) используется главным образом для первоначальной загрузки бездисковых рабочих станций. TFTP, в отличие от FTP, не содержит возможностей аутентификации (хотя возможна фильтрация по IP-адресу) и основан на транспортном протоколе UDP.
Содержание
Применение
Безопасность
Дополнительная защита от доступа к произвольным файлам осуществляется с помощью смены корневого каталога на каталог tftpd (обычно /usr/TFTPRoot).
Типы пакета
Сначала в TFTP-пакете идет поле размером в 2 байта, определяющее тип пакета:
Запросы на чтение и запись
Для начала передачи данных клиент должен послать серверу WRQ или RRQ-пакет. У обоих пакетов формат одинаковый:
0x01/0x02 (тип пакета) | Имя файла | 0x00 (конец строки) | Режим передачи | 0x00 (конец строки) | Опции… (если есть) |
---|---|---|---|---|---|
2 байта | строка в ASCII | 1 байт | строка в ASCII | 1 байт | См. «Опции» |
В TFTP существует 2 режима передачи (режим Mail, определенный в IEN 133, признан устаревшим):
После получения RRQ-пакета сервером, он сразу начинает передачу данных. В случае с WRQ-запросом — сервер должен прислать ACK-пакет c номером пакета 0.
Процесс передачи данных
После получения запроса RRQ, сервер сразу посылает в качестве подтверждения пакет с данными и с ID пакета равным единице. В WRQ в качестве подтверждения используется ACK с ID равным нулю. Всего по TFTP можно передать 32 Мб (65536 * 512 / 1024²), однако из-за использования знакового int вместо беззнакового, размер подтверждения ограничен 16 мегабайтами. Однако если клиент и сервер поддерживают расширения протокола RFC 2347 и RFC 2348, то максимальный размер передаваемого файла увеличивается до 4Gb.
Опции TFTP
В RFC 2347 был предусмотрен формат опций, которые можно присоединять к окончанию RRQ-пакета и WRQ-пакета:
Код опции | 0x00 (конец строки) | Значение опции | 0x00 (конец строки) |
---|---|---|---|
строка в ASCII | 1 байт | строка в ASCII | 1 байт |
Опций может быть несколько. Тогда они будут следовать друг за другом. Порядок опций не важен.
В ответ на RRQ (или WRQ) с опциями, сервер должен прислать OACK с списком опций, которые сервер принял. Наиболее распространённые опции:
Название | Определена в | Код опции | |
---|---|---|---|
Размер блока | RFC 2348 | blksize | В качестве значения опции идёт число, принимающее значение от 8 до 65464, обозначающее размер блока. |
Интервал повторной передачи (Timeout) | RFC 2349 | timeout | В качестве значения опции идёт число, принимающее значение от 1 до 255, обозначающее время ожидания перед повторной передачей блока в секундах. |
Размер файла | RFC 2349 | tsize | В качестве значения опции идёт число, обозначающее размер передаваемого файла в байтах. |
Ошибки
В TFTP информация об ошибке имеет следующий формат:
0x05 (тип пакета) | Код ошибки | Описание ошибки | 0x00 (конец строки) |
---|---|---|---|
2 байта | 2 байта | строка в ASCII | 1 байт |
Код ошибки может принимать одно из значений, перечисленных в STD 33 (за исключением кода 8 — он описан в RFC 2347). Вот они:
Код ошибки | Описание |
---|---|
0 | Нет определенного кода, см. текст ошибки |
1 | Файл не найден |
2 | Доступ запрещен |
3 | Невозможно выделить место на диске |
4 | Некорректная TFTP-операция |
5 | Неправильный Transfer ID |
6 | Файл уже существует |
7 | Пользователь не существует |
8 | Неправильная опция |
Схема URI
В RFC 3617 определен формат URI для TFTP. Он имеет следующий вид:
Как создать tftp сервер?
Здравствуйте дорогие читатели, я часто сталкиваюсь с прошивками маршрутизаторов, коммутаторов и для этого обычно требуется tftp сервер.
На самом деле, думаешь зачем он мне нужен. Можно все настроить через веб интерфейс или отдать кто настроит. А вот бывают проблемы, когда веб-интерфейс недоступен, например вы хотели прошить роутер и у вас отключили свет, всё! Ну вирусы ещё не проникали на оборудование, но сейчас удивляться нечему. Много людей сразу покупают новый роутер или несут в ремонт. Зачем? Все просто можно восстановить с помощью программы и команды. Программу конечно я вам покажу для создания tftp сервера, а команды бывают разные, их надо искать в интернете или в тех.поддержке оборудования, которое вы хотите прошить.
Что такое tftp сервер?
tftp сервер это грубо говоря упрощенный ftp сервер, служит для передачи файлов, без всяких заморочек, паролей, логинов и т.д. необходимо знать только ip адрес и все. По этому его и используют для перепрошивки оборудования. Указал айпи адрес, tftp сервера, для устройства и все.
Как создать tftp сервер?
Для его создания требуется маленькая программа. Внизу статьи её можно скачать. Программа не только маленькая, но и очень проста, что позволяет создать tftp сервер в считанные секунды.
Открываем программу и видим окно, уже с готовым ip-адресом tftp сервера.
В первоначальном окне, вы выбираете папку на компьютере, что будет является вашим сервером, а ниже программа автоматически выдаст свободный ip-адрес.
Во вкладке tftp клиент, можно задать параметры вручную.
DHCP сервер, это статистика раздаваемых айпи адресов.
И остальные две вкладки это логи. Они будут создаваться, когда кто-то будет скачивать у вам файлы.
Так же внизу есть кнопка настроек, в который очень много чего можно настроить.
Ну для прошивки чего либо, нужно знать просто ip адрес.
Теперь скачиваем программу, вес которой всего 100 кб!
Вот и все, у вас теперь полноценный tftp сервер 🙂
Что такое TFTP? (Тривиальный протокол передачи файлов)
Trivial File Transfer Protocol — это технология, которая передает файлы между сетевыми устройствами, и представляет собой упрощенную версию более надежного протокола передачи файлов. TFTP был разработан в 1970-х годах для компьютеров, не имеющих достаточного объема памяти или дискового пространства для обеспечения полной поддержки FTP. Сегодня TFTP используется в потребительских широкополосных маршрутизаторах и коммерческих сетевых маршрутизаторах.
Администраторы домашней сети используют TFTP для обновления прошивки маршрутизатора, а профессиональные администраторы используют TFTP для распространения программного обеспечения по корпоративным сетям.
Как работает TFTP
Как и FTP, TFTP использует клиентское и серверное программное обеспечение для установления соединений между двумя устройствами. От клиента TFTP отдельные файлы могут быть скопированы (выгружены) на сервер или загружены с него. Сервер размещает файлы, а клиент запрашивает или отправляет файлы.
TFTP использует UDP для передачи данных.
TFTP также можно использовать для удаленного запуска компьютера и резервного копирования файлов конфигурации сети или маршрутизатора.
Клиентское и серверное программное обеспечение TFTP
TFTP-клиенты командной строки включены в текущие версии Microsoft Windows, Linux и macOS. TFTP-клиенты с графическими интерфейсами также доступны как бесплатное ПО, например TFTPD32, который включает TFTP-сервер. Утилита Windows TFTP — еще один пример клиента и сервера с графическим интерфейсом для TFTP, а также существуют другие бесплатные клиенты FTP.
Microsoft Windows не поставляется с TFTP-сервером, но несколько бесплатных TFTP-серверов Windows доступны для загрузки. В системах Linux и macOS используется TFTP-сервер tftpd, хотя по умолчанию он может быть отключен.
Сетевые эксперты рекомендуют тщательно настраивать серверы TFTP, чтобы избежать потенциальных проблем с безопасностью.
Как использовать TFTP-клиент в Windows
Клиент TFTP в Windows по умолчанию отключен. Включите его с помощью апплета панели управления программами и компонентами.
Откройте Панель управления. Идти к Windows Search и поиск панель.
In панельВыберите программы.
Выбрать Включите для Windows или отключение компонентов.
Или выполните optionalfeatures в командной строке или в диалоговом окне «Выполнить».
в Компоненты Windows диалоговое окно, выберите Клиент TFTP.
Возможно, вам потребуется перезагрузка, чтобы изменения вступили в силу.
Доступ к TFTP через командную строку с TFTP команда. Используйте команду help или просмотрите справочную страницу командной строки tftp на веб-сайте Microsoft.
TFTP против FTP
Тривиальный протокол передачи файлов отличается от FTP в следующих ключевых аспектах:
Поскольку TFTP реализован с использованием UDP, он обычно работает только в локальных сетях.
Что такое tftp сервер
Глава 15 TFTP: простой протокол передачи данных
В этой главе приводится только краткое описание TFTP, потому что в следующей главе мы рассмотрим протокол Bootstrap, который использует TFTP. Мы использовали протокол TFTP, когда загружали из сети хост sun (см. рисунок 5.1). Он выдавал TFTP запрос, после того как получил свой IP адрес с использованием RARP.
RFC 1350 [ Sollins 1992] является официальной спецификацией TFTP версия 2. Глава 12 [Stevens 1990] предоставляет полные исходные коды реализации TFTP клиента и сервера и описывает некоторую технику программирования, использованную в TFTP.
Рисунок 15.1 Формат пяти TFTP сообщений.
И клиент и сервер должны иметь возможность осуществить преобразование между этим форматом и каким-либо другим (другой разделитель строк), который используется на локальном хосте. Передача octet обозначает, что данные будут передаваться в виде 8-битных байтов без интерпретации.
Каждый пакет данных содержит номер блока (block number), который затем используется в пакете подтверждении. В качестве примера скажем, что когда необходимо осуществить чтение файла, клиент посылает запрос на чтение (RRQ), указывая имя файла и режим. Если файл может быть прочитан клиентом, сервер отвечает пакетом данных с номером блока равным 1. Клиент посылает подтверждение (ACK) на номер блока 1. Сервер отвечает следующим пакетом данных с номером блока равным 2. Клиент подтверждает номер блока 2. Это продолжается до тех пор, пока файл не будет передан. Каждый пакет данных содержит 512 байт данных, за исключением последнего пакета, который содержит от 0 до 511 байт данных. Когда клиент получает пакет данных, который содержит меньше чем 512 байт, он считает, что получил последний пакет.
В случае запроса на запись (WRQ) клиент посылает WRQ, указывая имя файла и режим. Если файл может быть записан клиентом, сервер отвечает подтверждением (ACK) с номером блока равным 0. Клиент посылает первые 512 байт файла с номером блока равным 1, сервер отвечает ACK с номером блока равным 1.
Последний тип TFTP сообщений это сообщения об ошибках, код операции (opcode) равен 5. Это как раз то, чем сервер отвечает в том случае, если запрос на чтение или запись не может быть обработан. Ошибки чтения или записи в течении передачи файла также приводят к тому, что отправляется сообщение об ошибке, при этом передача прекращается. Номер ошибки (error number) содержит цифровой код ошибки, за которым следует сообщение об ошибке в ASCII формате, которое может содержать дополнительную информацию предоставляемую операционной системой.
Так как TFTP использует ненадежный UDP, то именно от TFTP зависит, как будут обработаны потерянные и дублированные пакеты. В случае потери пакета, отправитель отрабатывает тайм-аут и осуществляет повторную передачу. (Возможно появление проблемы, называемой «синдромом новичка» (sorcerer’s apprentice syndrome), которая может возникнуть, если с обеих сторон будет отработан тайм-аут и осуществлена повторная передача. Раздел 12.2 [Stevens 1990] показывает, в результате чего может возникнуть подобная проблема.) Как и в большинстве UDP приложений, контрольная сумма TFTP сообщения не расчитывается, а это означает, что любое повреждение данных может быть определено только с помощью контрольной суммы UDP (см. главу 11, раздел «Контрольная сумма UDP»).
Давайте посмотрим, как работает протокол TFTP. Мы запустим TFTP клиента на хосте bsdi и получим текстовый файл с хоста svr4:
bsdi % tftp svr4 стартуем TFTP клиента
tftp> get test1.c получаем файл с сервера
Received 962 bytes in 0.3 seconds
tftp> quit разрываем соединение
Первый момент, который бросается в глаза, заключается в том, что файл в Unix содержит 914 байт, однако TFTP передает 962 байта. Воспользовавшись программой wc, мы увидим, что в файле 48 строк, таким образом, 48 символов новой строки в Unix были дополнены до 48 пар CR/LF, так как TFTP по умолчанию осуществляет передачу в режиме netascii.
На рисунке 15.2 показан обмен пакетами.
1 0.0 bsdi.1106 > svr4.tftp: 19 RRQ «test1.c»
2 0.287080 (0.2871) svr4.1077 > bsdi.1106: udp 516
3 0.291178 (0.0041) bsdi.1106 > svr4.1077: udp 4
4 0.299446 (0.0083) svr4.1077 > bsdi.1106: udp 454
5 0.312320 (0.0129) bsdi.1106 > svr4.1077: udp 4
Рисунок 15.2 Обмен пакетами в случае TFTP.
И последний пакет данных (строка 4) содержит 450 байт данных. 512 байт данных в строке 2 и эти 450 байт составляют 962 байта данных, полученные клиентом.
Причина, по которой меняется номер порта сервера, заключается в том, что сервер не должен захватывать заранее известный порт на большой промежуток времени, требуемый на передачу файла (что может занять от нескольких секунд до нескольких минут). Вместо этого, заранее известный порт остается доступным для других TFTP клиентов, которые могут послать туда свой запрос. Тогда как в это время передача осуществляется через другой порт.
Обратимся к рисунку 10.6. RIP сервер, которому необходимо послать клиенту более чем 512 байт, отправляет обе UDP датаграммы с заранее известного порта сервера. В случае TFTP (из-за отличий в протоколе), долговременного взаимодействия между клиентом и сервером не осуществляется (которое, как мы сказали, может занимать от секунд до минут). Если один процесс сервера будет использовать заранее известный порт все время, пока осуществляется передача файла, возникнет необходимость отказать всем последующим запросам, которые придут от других клиентов, или один процесс сервера должен иметь возможность осуществлять множественную передачу файлов нескольким клиентам в одно и то же время с одного и того же порта (69). Простейшее решение заключается в том, что сервер переходит на другой порт, после того как получил RRQ или WRQ. Клиент определяет новый порт, когда он получает первый пакет данных (строка 2 на рисунке 15.2), а затем посылать все последующие подтверждения (строки 3 и 5) на новый порт.
В разделе «Пример» главы 16 мы увидим, как TFTP используется при загрузке X терминалов.
Обратите внимание на то, что TFTP пакеты (рисунок 15.1) не содержат никаких данных об имени пользователя или пароле. Это брешь в секретности характерная для TFTP. Так как TFTP был разработан для использования в процессе загрузки, он не предоставляет возможности передать имя пользователя и пароль.
Эта характеристика TFTP была использована многими хакерами, чтобы получить копии файла паролей из Unix и затем расшифровать пароли. Чтобы предотвратить подобный доступ, большинство TFTP серверов в настоящее время регламентируют, какие файлы могут быть получены с использованием TFTP (как правило, файлы из директории /tftpboot в Unix системах). Эта директория содержит только загрузочные файлы, необходимые бездисковым системам.
Для дополнительной безопасности TFTP сервер, на Unix системе, обычно устанавливает свой пользовательский идентификатор (UID) и идентификатор группы (GID) в значения, которые не могут быть назначены реальному пользователю. Это позволяет доступ только к файлам, которые доступны для чтения и записи всем.
Чтобы позволить нескольким клиентам загружаться одновременно, TFTP сервер предоставляет несколько форм одновременной работы. Так как UDP не предоставляет уникального соединения между клиентом и сервером (как это делает TCP), TFTP сервер создает новый UDP порт для каждого клиента. Это позволяет разным клиентам выдавать датаграммы, которые будут демультиплексированы UDP модулем сервера, на основе номеров портов назначения, вместо того чтобы это делал сам сервер.
Протокол TFTP не предоставляет средства безопасности. Большинство реализаций позволяет доступ по протоколу TFTP только к файлам, которые необходимы при загрузке.
Создание в Windows TFTP сервера, настройка и проверка работоспособности
TFTP – упрощённый протокол передачи данных (о чём и свидетельствует первая буква аббревиатуры протокола, Trivial), характеризующийся простотой реализации и имеющий ряд ограничений, главное из которых – отсутствие аутентификации. По этой причине он не столь распространён, как FTP, но существует немало примеров, когда его использование оказывается более предпочтительным.
Например, в закрытой локальной сети для загрузки операционной системы на рабочие станции, из соображений безопасности или по другим причинам не содержащие собственного жёсткого диска. И хотя здесь имеются кое-какие риски, их можно компенсировать фильтрацией по IP-адресу с использованием транспортного протокола UDP.
Как установить TFTP-сервер на Windows
Протокол Trivial FTP, как вы уже знаете, является очень простым в реализации, и если говорить о низкоуровневой передаче файлов, при условии отсутствия жёстких требований по безопасности, то он был и остаётся весьма востребованным.
Кроме загрузки ОС на рабочие станции, он широко используется для загрузки и модификации конфигураций множества встроенных устройств, являющихся частью домашних сетей и системы «Умный дом».
В частности, этот протокол нередко можно встретить на маршрутизаторах, в мобильных телефонах, в популярных медиа-стримерах. Он используется для передачи единичных файлов на относительно небольшие расстояния. А вот в глобальных сетях, том же интернете, использование TFTP недопустимо из-за низкой защищённости. Там царствует FTP, а если требуются повышенные требования к безопасности, то SFTP.
Если при помощи FTP, требующего ввода логина/пароля, можно осуществлять целый спектр операций с файлами (передача в обоих направлениях, переименование, удаление, просмотр), то в TFTP вы можете файлы только скачивать, и только по одному. Зато здесь используется стек UDP, отличающийся простотой кода, в отличие от распространённого, но достаточно сложного TCP/IP.
У протокола TFTP низкая функциональность компенсируется надёжностью, поэтому серверная часть кода протокола занимает на диске или в памяти очень мало места, что делает его идеальным кандидатом для использования во встроенных устройствах, у которых дефицит памяти – привычное явление.
Итак, если суммировать, для чего нужен клиент TFTP, то можно утверждать, что главное преимущество протокола – простота реализации его клиентской части.
Хотя TFTP-сервер чаще всего можно встретить в ОС Linux, существует немало решений, предназначенных для Windows и даже для macOS (TFTPD32/64, haneWIN, WhatsUp, WinAGents и др.).
Рассмотрим процедуру установки TFTP-сервера на примере весьма популярной утилиты TFTPD32, созданной на условиях открытого исходного кода. Кроме собственно TFTP-сервера, она включает и другие серверные протоколы (DHCP, DNS, SNTP) и позволяет управлять пулом IP-адресов. Разумеется, ситуации, когда требуется наличие всех перечисленных функций, сложно придумать даже теоретически, но дополнение TFTP одной из них вполне может оказаться полезным.
При скачивании программы можно выбрать portable-версию, если не хотите возиться с инсталляцией.
При запуске утилиты нужно будет указать пару параметров:
Для выполнения простейших операций этого будет достаточно. Но в ряде случаев потребуется дополнительная настройка программы.
Настройка TFTP сервера
Если требуется использование DHCP сервера, например, для выдачи динамических айпишников в пределах малой сети, необходимо зайти в раздел Setting и выбрать вкладку DHCP.
Здесь нам нужно указать:
Подтверждаем внесение изменений нажатием ОК.
Поскольку в основе TFTP лежит использование транспортного протокола нижнего уровня UDP, в котором установление соединения не предусмотрено, задача эмуляции соединения становится прерогативой внешнего протокола, в нашем случае – TFTP. Проблема в том, что межсетевые экраны в большинстве случаев не умеют идентифицировать соединения, инициированные протоколом TFTP, так что этот тип трафика он пропускать не в состоянии.
Но если TFTP-сервер располагается в пределах защищённой сети, а клиентские устройства – перед файерволом, то проблем быть не должно, но потребуется внесение изменений в настройки файервола:
В большинстве маршрутизаторов при передаче данных с более защищённой сети в менее защищённую проблем не возникает, но, когда требуется выполнить противоположную задачу, как раз и потребуется выполнение перечисленных выше действий.
Проблема в том, что не все сетевые роутеры/маршрутизаторы позволяют выполнить такие настройки. Но многие из них оснащены функцией просмотра трафика, направляемого с использованием протокола TFTP, при этом они в состоянии динамически изменять таблицу трансляции, позволяя пропускать пакеты извне, идущие в локальную сеть. Так, чтобы настроить файервол маршрутизатора Cisco PIX, необходимо выполнить команду fixup protocol tftp.
Существует альтернативный способ решения проблемы: можно обязать сервер TFTP задействовать порт 69 в двух направлениях, не только для приема запросов, идущих от клиентов, но и для пересылки им ответов. Тогда файервол сможет корректно обрабатывать оба типа запросов, руководствуясь записями, имеющимися в таблице трансляций.
Так, чтобы настроить WinAGents TFTP Server подобным образом, необходимо в настройках программы установить галочку напротив опции Enable firewall support.
Проверка работоспособности TFTP сервера
Чтобы проверить, работает ли TFTP сервер, необходимо просто выполнить копирование файла с сервера на клиентское оборудование.
Отметим, что копирование будет производиться в каталог, в котором запускалась консоль, если в настройках программы не указан другой путь. Но не все утилиты имеют такие настройки. Например, если вы используете WinAGents TFTP Server, вам нужно будет выполнить последовательно две команды:
В этом случае копирование будет производиться в указанную вами директорию.
В утилите TFTPD32 копирование будет выглядеть несколько иначе. На клиентской машине следует запустить приложение, открыть в нём вкладку TFTPClient, а затем указать IP-адрес сервера, а затем имя файла, который мы намереваемся скачать. Сохранить его можно и под другим именем, указав его в соответствующей строке настроек. Завершив все приготовления, жмём кнопку GET и дожидаемся результатов операции.
Как видим, использование TFTP сервера не ставит перед пользователем неразрешимых задач, за исключением случаев, когда требуется доступ за пределы локальной сети. Но для этих случаев существуют другие, более защищённые и безопасные сетевые протоколы.