Линейка продуктов Windows Server с незапамятных времен поддерживает возможность организации TFTP сервера. Хотя выделенная роль и служба TFTP сервера отсутствует (не стоит искать ее в разделе FTP сервера), этот функционал, как и в Windows Server 2003, является частью Windows Deployments Services (WDS). TFTP сервис функционирует внутри процесса svchost.exe службы WDS.
Протокол TFTP (Trivial File Transfer Protocol) упрощенный протокол передачи файлов, обеспечивающей простую возможность скачки и закачки файлов. Как правило, TFTP используется для организации систем загрузки по PXE (сетевая загрузка, бездисковые рабочие станции и пр.), загрузки/выгрузки конфигурации сетевого оборудования и ряда других специфичных задач. В проколе отсутствуют средства защиты, аутентификации и управления. Основное его преимущество – простота реализации клиентской части и высокая производительность при передачи файлов большого объема. Протокол работает по порту 69 UDP.
Чтобы установить службу TFTP на Windows Server 2012 R2, откройте консоль Server Manager и с помощью мастера Add Roles and Features Wiazrd выберите роль Windows Deployment Services (Службы развертывания Windows).
На следующем шаге мастера в компонентах роли WDS выбираем только Transport Server (Транспортный сервер), снимите галочку с Deployment Server.
После завершения установки роли необходимо создать каталог, который будет корневым каталогом для TFTP сервера, к примеру C:\tftp.
Затем с помощью редактора реестра в ветке HKLM\SYSTEM\CurrentControlSet\services\WDSServer\Providers\WDSTFTP создадим новый строковый (String) параметр с именем RootFolder, и значением, содержащим путь к корневому каталогу TFTP, созданному ранее.
Обратите внимание на значение параметра ReadFilter. По умолчанию он разрешает загрузку файлов только из каталогов \boot и\ tmp. Если потребуется возможность загрузки файлов из корня и других каталогов, нужно изменить значение параметра ReadFilter на \*.
Запустим службу WDS с помощью команды
WDSUTIL /Start-TransportServer
Совет. Для автоматического запуска службы нужно изменить тип загрузки службы Windows Deployment Services на Auto с помощью оснастки services.msc или из командой строки PowerShell с помощью командлета Set-Service:
set-service WDSServer -StartupType Automatic
В брандмауэре Windows должно появится правило, разрешающее входящий трафик на порт UDP 69 (отвечает служба с произвольного номера порта выше 1023). Некоторые антивирусу могут блокировать порт 69 (в этом был замечен McAffee Enterprise)
На этом настройка TFTP сервера завершена.
Чтобы протестировать работу TFTP сервера, нам понадобится клиент TFTP. Установить его можно с помощью Server Manager, выбрав компонент TFTP Client.
Попытаемся локально обратиться к развернутому TFTP серверу и попробовать скачать файл test.zip
Скачать файл можно при помощи команды
tftp –i localhost GET tmp\test.zip C:\temp\test.zip
Результатом выполнения такой команды будет сохранённый файл c:\temp\test.zip, скачанный с локального сервера.
Это все в теории, а на практике после выполнения последней команды у меня появилась ошибка:
При запуске или перезапуске службы Windows Deployment Services Server в журнале Application появляется событие от службы WDSTFTP с EventID 259 и текстом:
The root folder for the Windows Deployment TFTP server is not configured.Error Information: 0x2
Чтобы заставить TFTP сервер работать, мне пришлось установить компонент роли WDS -> Deployment Service и сразу же удалить его. После его установки в ветке WDSTFTP нужно изменить значение ключа RootFolder с C:\RemoteInstall на c:\tftp. Пытаемся еще раз скачать файл:
PS C:\temp> tftp -i localhost get boot\test.zip
Получилось!
Итак, мы рассмотрели как быстро без использования сторонних средств развернуть TFTP сервер на Windows Server 2012. Функционал такого сервера будет довольно урезанным, поэтому для более сложных инсталляций, предпочтительнее использовать альтернативную реализацию TFTP сервера, к примеру, tftpd32.
Вот это лучше: 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». тогда не нужно будет этих плясок с бубном установкой и удалением ненужных ролей.
сервер использует эти параметры на этапе запуска и последующее их изменение ничего не даст до тех пор, пока сервер не будет перезапущен.