Лінійка продуктів 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 сервер Microsoft має досить урізаний функціонал, мінімально необхідний для роботи завантаження по PXE. Зокрема клієнти можуть тільки читати дані з такого TFTP сервера, а операції запису не доступні.Щоб встановити службу 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, скачаний з локального сервера.
Це все в теорії, а на практиці після виконання останньої команди у мене з'явилася помилка:
Connect request failedПри запуску або перезапуску служби 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.