Протокол TFTP (Trivial File Transfer Protocol) упрощенный протокол передачи файлов, обеспечивающей простую возможность скачивания и загрузки. Обычно протокол TFTP используется для загрузки по PXE (сетевая загрузка, бездисковые рабочие станции, установка ОС по сети, и пр.), загрузки/обновления конфигурации/прошивок сетевого оборудования и ряда других специфичных задач. В проколе отсутствуют средства защиты, аутентификации и управления. Основное его преимущество – простота реализации клиентской части и высокая производительность при передаче файлов большого объема. Протокол работает по порту 69 UDP.
Запуск TFTP сервера в Windows
Чаще всего для быстрого запуска TFTP сервера в Windows используют бесплатный opensource Tftpd64 (tftpd32). Вы можете скачать portable или установочный пакет tftpd64 здесь.
- Запустите исполняемый файл tftpd64.exe;
- Интерфейс tftpd64 состоит из нескольких вкладок. На вкладке Tftp Server нажмите кнопку Settings и выберите каталог, который вы хотите опубликовать;
- Выберите TFTP Security = None
- После того, как вы изменили настройки TFTP, нужно перезапустить программу.
- Откройте в Windows Firewall порт 69/UDP для входящего TFTP трафика. Можно создать разрешающее правило в файерволе Windows с помощью PowerShell: N
ew-NetFirewallRule -DisplayName 'TFTP-UDP-In' -Direction Inbound -Action Allow -Protocol UDP -LocalPort 69
- Теперь вы можете подключиться к tftp, чтобы получить или загрузить файл.
Программу tftpd64 можно использовать в качестве TFTP клиента. Перейдите на вкладку Tftp Client, укажите IP адрес TFTP сервера и порт подключения (69 по умолчанию).
Теперь вы можете скачать (Get) или загрузить (Put) файлы на указанный tftp сервер.
На вкладке Log viewer можно посмотреть логи подключений к TFTP.
Установка клиента TFTP в Windows
По умолчанию в Windows не установлен клиент TFTP. Вы можете установить в Windows 10/11 его командой:
Enable-WindowsOptionalFeature –FeatureName TFTP -Online
В Windows Server для установки клиента TFTP используется другая команда:
Install-WindowsFeature TFTP-Client
Теперь вы можете использовать утилиту tftp.exe для скачки и загрузки файлов по TFTP.
- Передать файл на TFTP сервер:
tftp 192.168.1.100 PUT имя_файла.txt
- Скачать файл с TFTP:
tftp 168.1.100 GET имя_файла.txt
Установка встроенного TFTP сервера в Windows Server
В Windows Server доступен встроенный TFTP сервер, который входит в состав роли WDS и используется для PXE загрузки и установки Windows по сети. Чтобы установить службу TFTP, откройте консоль Server Manager -> Add Roles and Features Wizard -> выберите роль Windows Deployment Services (Службы развертывания Windows).
В компонентах роли WDS выберите только Transport Server (Транспортный сервер).
После завершения установки создайте каталог, который будет корневым каталогом для TFTP сервера. Например, C:\tftp.
Укажите путь к корневому каталогу TFTP в строковом REG_SZ параметре RootFolder в разделе реестра HKLM\SYSTEM\CurrentControlSet\services\WDSServer\Providers\WDSTFTP
В параметре ReadFilter указан список каталогов, из которых разрешена загрузка файлов. По умолчанию загрузка возможна только из каталогов
\boot\
и
\tmp\
. Если вы используете другую структуру каталогов, нужно добавить разрешенные каталоги в параметр ReadFilter или указать тут
\*
.
Запустите службу WDSServer:
Get-Service WDSServer| Start-Service
Включить автоматический запуск службы с помощью Set-Service:
set-service WDSServer -StartupType Automatic
Проверьте, что служба запущена и ее процесс ожидает подключения на порту UDP 69:
Get-Process -Id (Get-NetUDPEndpoint -LocalPort 69).OwningProcess
В Windows Firewall доступ к UDP порту 69 отрывает правило “Windows Deployment Services (UDP-In)”. Проверьте, что правило брандмауэра включено:
(Get-NetFirewallRule -displayname 'Windows Deployment Services (UDP-In)').enabled
Попробуйте скачать файл с TFTP сервера с помощью встроенного клиента tftp.exe:
tftp -i 192.168.158.10 get test.zip
Основной недостаток встроенного TFTP сервера в Windows Server – он не позволяет открыть папку для записи. Это означает, что клиенты могут только скачивать файлы с такого TFTP сервера, но не загружать.
Вот это лучше: tiny pxe server
Ну можно, конечно и так. А можно воспользоваться старой доброй утилитой от 3COM (мир их праху) — 3COM Daemon 3CTftpd begat 3CServer, which was a more full-featured TFTP and FTP server I wrote. This eventually became part of 3Com’s Transcend Network Management product. 3COM Daemon
Только одна «проблема». setup.exe из этого комплекта не будет запускаться на Win 2012/Win 10 так как очень старый. Поэтому есть альтернативный вариант — установить софтинку под WinXP (например на виртуалке) а потом просто взять папку с программами, которая будет создана и перенести в нужное место. Иснталлятор, по сути, лиш распаковывает архивчик.
Бесспорно, у MS не самая лучшая реализация tftp демона. Я сам предпочитаю tftpd32.
Тут больше спортивный интерес был: человек в почте поинтересовался — вот и решил мануал нарисовать.
Дима, я свой вопрос именно так и решил, но хорошо что и ты статейку на обозрение написал. Молодца.
Спасибо за инструкцию.
Подскажите, как реализовать запись на tftp. Windows tftp поддерживает запись?
Встроенными средствами нет, проще найти альтернативу.
спасибо.
чуть дополню. после изменения параметров реестра ReadFilter и RootFolder, для их вступления в силу нужно просто перезапустить службу «Сервер служб развертывания Windows». тогда не нужно будет этих плясок с бубном установкой и удалением ненужных ролей.
сервер использует эти параметры на этапе запуска и последующее их изменение ничего не даст до тех пор, пока сервер не будет перезапущен.
на windows server 2022 данная настройка не работает.
нужно ставить оба сервера Deloy+Transport server , чтобы служба TFTP (порт 69) нормально запустилась
всё таки … tftpd64-service-edition лучше