TFTP на MikroTik: настройка и примеры использования

tftp на mikrotik
Быстрый ответ
TFTP вокруг MikroTik встречается в двух ролях. Первая — восстановление роутера через Netinstall, когда система убита или забыт пароль: TFTP-сервером тут работает компьютер с Netinstall, а роутер загружается с него по сети. Вторая — раздача файлов самим MikroTik: прошивок, конфигов, загрузчиков для IP-телефонов, точек доступа и бездисковых машин. Сервер на RouterOS настраивается в IP > TFTP: какой файл, под каким именем и каким IP-адресам отдавать. Клиент — одна команда /tool fetch mode=tftp. Порт 69/UDP, шифрования и аутентификации нет — только для доверенной сети.

1. Диагноз

Поднял TFTP на MikroTik. Телефон не забирает конфиг, Netinstall не видит роутер. Или наоборот — роутер не может закачать конфиг с сервера. Знакомо?

TFTP на MikroTik — это три разных сценария в одной аббревиатуре, и половина проблем от того, что их путают:

  • RouterOS как TFTP-сервер — раздаёт файлы другим устройствам: конфиги и прошивки IP-телефонам, загрузчик PXE бездисковым машинам, прошивки точкам доступа.
  • RouterOS как TFTP-клиент — через /tool fetch тянет файл с внешнего TFTP-сервера.
  • Netinstall — переустановка RouterOS на убитом роутере. Здесь MikroTik не сервер, а клиент: его загрузчик RouterBOOT получает адрес по BOOTP и скачивает установщик по TFTP с компьютера, на котором запущен Netinstall.

Что получишь на выходе этой статьи:

  • Рабочий TFTP-сервер на MikroTik с раздачей файла нужной подсети
  • Связку DHCP + TFTP для сетевой загрузки устройств
  • Настроенный TFTP-клиент для скачивания прошивок и конфигов
  • Понимание, почему Netinstall не видит роутер и как это чинить
  • Список типовых ошибок и как их закрывать без танцев с бубном

Время на настройку: 10-15 минут, если сеть без сюрпризов. Если за фаерволом на три уровня вложенности — закладывай час.

Нужно: MikroTik с RouterOS 7.x, доступ к Winbox или SSH, файл для раздачи (конфиг, прошивка, образ). Для Netinstall — компьютер с проводным Ethernet. На момент обновления статьи (октябрь 2026) актуальна RouterOS 7.24.5 stable. Перед установкой проверь свежие релизы на официальном сайте.

Компонент Версия / требование
RouterOS 7.x (проверено на 7.24.5)
Netinstall той же версии, что и устанавливаемый пакет, с mikrotik.com/download
ОС для Netinstall Windows 10/11 или Linux с netinstall-cli
Сетевой интерфейс Ethernet напрямую или через неуправляемый свитч, не Wi-Fi

2. Причины, почему это ломается

  • Firewall режет UDP/69 — drop-правило в цепочке input стоит выше разрешающего, или выключен helper TFTP в /ip firewall service-port, и ответные пакеты с динамических портов не считаются related
  • IP клиента не попадает в ip-addresses — сервер MikroTik отдаёт файл только адресам из списка, заданного в записи /ip tftp. Привязки к MAC у TFTP-сервера RouterOS нет
  • Имя файла не совпадает с req-filename — клиент просит один путь, в записи прописан другой. Регистр и расширение должны совпадать
  • Нет DHCP-опций для сетевой загрузки — устройство не знает, у кого и какой файл просить: не заданы next-server и boot-file-name (опции 66 и 67)
  • Netinstall слушает не тот интерфейс — на ПК несколько сетевых карт или включён Wi-Fi, и BOOTP-запросы роутера уходят мимо
  • Антивирус или Windows Firewall на ПК с Netinstall — блокирует BOOTP (67/68) и TFTP (69)
  • Роутер подключён не тем портом — сетевая загрузка работает только через boot-порт, обычно ether1

3. Рецепт

Подготовка

Зависимости: RouterOS 7.x, физический доступ к порту роутера или management-VLAN без изоляции. Проверь среду перед стартом.


# На MikroTik: версия, интерфейсы, правила firewall, helper TFTP
/system resource print
/interface print
/ip firewall filter print
/ip firewall service-port print where name=tftp

Смотри на вывод: версию RouterOS, список активных интерфейсов, есть ли drop-правила на входящий трафик, которые перехватят UDP/69 раньше, чем он дойдёт до TFTP. Service-port tftp должен быть включён (без флага X) — он помечает пакеты передачи данных как related.

Шаг 1. Положи файл на роутер

Загрузи файл через Winbox (Files, перетаскиванием), FTP или SFTP и проверь, что он на месте.


# На MikroTik: файл должен физически лежать в файловой системе
/file print where name~"phone"

На роутерах с USB или microSD файлы лежат в подкаталоге диска, например usb1/ или sd1/. Этот путь потом пишется в real-filename.

Шаг 2. Создай запись TFTP-сервера

Заходи в раздел IP > TFTP. Отдельного выключателя у сервера нет: он начинает отвечать, как только появляется хотя бы одна активная запись. Каждая запись описывает, какой файл, под каким именем и каким адресам отдавать.


# На MikroTik: раздавать phone.cfg только подсети 10.10.10.0/24, только на чтение
/ip tftp add ip-addresses=10.10.10.0/24 req-filename=phone.cfg real-filename=phone.cfg read-only=yes
/ip tftp print detail

Результат: в выводе /ip tftp print detail запись без флага X, с нужными ip-addresses и путём к файлу.

Не перепутай
real-filename — физический путь к файлу на роутере (например usb1/fw/ap.bin). req-filename — имя, которое клиент запрашивает по сети, и RouterOS воспринимает его как регулярное выражение. Если ip-addresses оставить пустым, файл получит любой адрес, поэтому подсеть указывай всегда.

Шаг 3. Настрой firewall под TFTP

Порт 69/UDP должен быть открыт на приём только для доверенной подсети. Не открывай его в мир — TFTP без аутентификации это подарок для любого, кто окажется в сети.


# На MikroTik: разрешить TFTP из доверенной подсети и запретить остальным, правила наверх списка
/ip firewall filter add chain=input protocol=udp dst-port=69 src-address=10.10.10.0/24 action=accept comment="TFTP allow trusted" place-before=0
/ip firewall filter add chain=input protocol=udp dst-port=69 action=drop comment="TFTP drop others" place-before=1

Порядок правил критичен: RouterOS читает filter сверху вниз, accept должен стоять выше drop. Передача данных идёт с динамических портов, отдельно их открывать не нужно: при включённом service-port tftp и стандартном правиле accept established,related они проходят сами.

Шаг 4. Сетевая загрузка: DHCP + TFTP

Телефоны, тонкие клиенты и PXE-машины сами не знают адрес TFTP-сервера. Его и имя файла им выдаёт DHCP: опция 66 (next-server) и 67 (boot-file-name).


# На MikroTik: DHCP-сеть сообщает клиентам адрес TFTP-сервера и имя загрузочного файла
/ip dhcp-server network set [find address=10.10.10.0/24] next-server=10.10.10.1 boot-file-name=pxelinux.0
/ip tftp add ip-addresses=10.10.10.0/24 req-filename=pxelinux.0 real-filename=pxe/pxelinux.0 read-only=yes

Результат: клиент при загрузке получает адрес, узнаёт next-server и сразу просит у него pxelinux.0. Для IP-телефонов вместо pxelinux.0 укажи имя конфига, которое ждёт модель телефона.

Шаг 5. Настрой TFTP-клиент для скачивания файла

Если роутер должен сам скачать файл с внешнего TFTP-сервера — например конфиг или прошивку с центрального сервера управления — используй tool fetch.


# На MikroTik: скачать файл с TFTP-сервера 192.168.88.1
/tool fetch address=192.168.88.1 mode=tftp src-path=config-backup.rsc dst-path=config-backup.rsc

Результат: файл появится в списке /file print. Проверь размер: если 0 байт, сервер ответил, но файл не найден или путь неверный.

Шаг 6. Автоматизируй через scheduler (опционально)

Для регулярной синхронизации конфигов через TFTP — например для парка одинаковых роутеров в филиалах.


# На MikroTik филиала: каждую ночь забирать и применять конфиг с центрального сервера
/system scheduler add name=tftp-sync interval=1d start-time=03:00:00 on-event="/tool fetch address=10.10.10.5 mode=tftp src-path=configs/branch.rsc dst-path=branch.rsc; /import branch.rsc"
Осторожно с автоимпортом
Автоматический импорт конфига без проверки контента — это способ уронить весь парк устройств одной опечаткой на сервере. Перед продакшн-использованием добавь проверку контрольной суммы файла или подпись.

Схема раздачи файла с MikroTik

%%{init: {
  'theme': 'base',
  'themeVariables': {
    'primaryColor': '#ffffff',
    'primaryTextColor': '#1e293b',
    'primaryBorderColor': '#94a3b8',
    'lineColor': '#64748b',
    'fontSize': '15px',
    'fontFamily': 'ui-sans-serif, system-ui, sans-serif'
  },
  'flowchart': {'curve': 'linear', 'nodeSpacing': 50, 'rankSpacing': 50}
}}%%
flowchart TD
    A["Клиент: телефон, PXE, роутер"] --> B["DHCP: next-server и boot-file-name"]
    B --> C["Запрос RRQ на порт 69"]
    C --> D["MikroTik: проверка ip-addresses и req-filename"]
    D --> E["Отдача файла блоками"]
    E --> F["Клиент собирает файл"]
    style A fill:#f8fafc,stroke:#3b82f6,stroke-width:2px,color:#1e40af
    style B fill:#f8fafc,stroke:#3b82f6,stroke-width:2px,color:#1e40af
    style D fill:#f8fafc,stroke:#f97316,stroke-width:2px,color:#9a3412
    style F fill:#f8fafc,stroke:#22c55e,stroke-width:2px,color:#15803d

Netinstall: где тут TFTP

При Netinstall роли меняются. Сервер — компьютер с Netinstall: он отвечает на BOOTP и отдаёт загрузчик по TFTP. Роутер — клиент: его RouterBOOT грузится по сети через boot-порт, обычно ether1.

%%{init: {
  'theme': 'base',
  'themeVariables': {
    'primaryColor': '#f8fafc',
    'primaryTextColor': '#1e293b',
    'primaryBorderColor': '#94a3b8',
    'noteBkgColor': '#fefce8',
    'noteTextColor': '#713f12',
    'noteBorderColor': '#fbbf24',
    'actorBkg': '#f8fafc',
    'actorBorder': '#94a3b8',
    'actorTextColor': '#1e293b',
    'fontSize': '15px',
    'fontFamily': 'ui-sans-serif, system-ui, sans-serif'
  },
  'sequence': {'mirrorActors': false, 'messageAlign': 'center', 'actorMargin': 120}
}}%%
sequenceDiagram
    participant R as Роутер (RouterBOOT)
    participant N as ПК с Netinstall
    R->>N: BOOTP-запрос с ether1
    N->>R: IP-адрес и имя загрузчика
    R->>N: TFTP-запрос загрузчика
    N->>R: Загрузчик Netinstall
    N->>R: Пакеты RouterOS
    Note over R,N: Роутер ставит систему и перезагружается

Роутер в режим сетевой загрузки переводится двумя способами. Если он жив и доступен — командой ниже и перезагрузкой. Если нет — зажми reset, подай питание и держи кнопку, пока роутер не появится в списке Netinstall (обычно 15-20 секунд).


# На MikroTik (если ещё доступен): один раз загрузиться по сети, потом снова с NAND
/system routerboard settings set boot-device=try-ethernet-once-then-nand
/system reboot

На Linux Netinstall запускается консольной утилитой. Компьютеру задай статический адрес в той же подсети, что и адрес для роутера в параметре -a.


# На Linux-ПК с netinstall-cli: переустановить RouterOS со сбросом конфигурации
sudo ./netinstall-cli -r -a 192.168.88.3 routeros-7.24.5-arm64.npk

Таблица портов

Порт Протокол Назначение Доступен снаружи?
69 UDP TFTP: запрос файла Нет, только LAN
от 1024 и выше UDP (динамический) TFTP: передача данных, проходит как related через service-port tftp Нет
67/68 UDP DHCP/BOOTP: сетевая загрузка и Netinstall Нет

4. Проверка

После настройки проверяй сразу, не жди пока кто-то напишет «у меня не грузится».


# На MikroTik: записи сервера, лог и соединения TFTP
/ip tftp print detail
/log print where topics~"tftp"
/ip firewall connection print where dst-address~":69"

Если после запроса клиента в connection появилась запись с портом 69, пакет дошёл до роутера. Если записи нет — проблема на уровне сети, не MikroTik.

Тест передачи с внешней машины на Linux — curl умеет TFTP:


# На Linux-машине в подсети 10.10.10.0/24: скачать файл с MikroTik по TFTP
curl -o /tmp/phone.cfg tftp://10.10.10.1/phone.cfg
ls -l /tmp/phone.cfg

5. Осложнения

Ошибка Причина Решение
Netinstall не видит роутер Роутер не в режиме сетевой загрузки, подключён не через boot-порт, Netinstall слушает другой интерфейс Подключись к ether1, отключи Wi-Fi и лишние сетевые карты на ПК, держи reset при включении до появления роутера в списке
Timeout при /tool fetch mode=tftp Ответ сервера приходит с нового порта и отбрасывается firewall Включи /ip firewall service-port tftp и проверь, что правило accept established,related стоит выше drop
Клиент получает отказ или File not found IP клиента не входит в ip-addresses или req-filename не совпадает с запросом Сверь адрес клиента и имя файла посимвольно, включая регистр, смотри /log print where topics~»tftp»
Передача обрывается на середине Крупные блоки фрагментируются или нестабильный линк Уменьши размер блока: /ip tftp settings set max-block-size=1400
Netinstall видит роутер, но прошивка не заливается Несовместимая архитектура пакета (arm vs arm64 vs mipsbe) Скачай пакет под архитектуру из поля architecture-name в /system resource print
Из жизни
Капля никотина убивает лошадь. Один неверный req-filename в TFTP — и весь парк телефонов в филиале остаётся без конфигов. Проверяй имя файла до запуска, а не после третьего звонка от заказчика.

6. Альтернативы

TFTP — не единственный способ передать файл на MikroTik или с него. Вот варианты и когда что выбирать.

  • FTP — есть аутентификация, но нужна работающая RouterOS. Для восстановления мёртвого роутера не подходит
  • SCP/SFTP — шифрование и безопасность, отличный вариант для регулярной синхронизации конфигов между рабочими роутерами
  • Сброс кнопкой reset или через serial console — если система загружается, а пароль забыт, часто хватает сброса конфигурации без переустановки RouterOS
  • WinBox drag-and-drop файлов — удобно вручную, но не автоматизируется через scheduler

TFTP остаётся единственным вариантом там, где у устройства ещё нет операционной системы: загрузчик RouterBOOT при Netinstall, PXE-загрузка, первичная настройка IP-телефонов. Для регулярного обмена файлами между живыми устройствами используй SFTP, он безопаснее.

7. Профилактика

Мониторинг: Netwatch проверяет только ping, работу самого TFTP он не покажет. Надёжнее периодически скачивать тестовый файл с сервера мониторинга.


# На сервере мониторинга (Linux): проверка, что TFTP на MikroTik отдаёт файл, код 0 - всё в порядке
curl -s -m 10 -o /dev/null tftp://10.10.10.1/phone.cfg; echo $?

Бэкап: перед любыми манипуляциями с прошивкой делай экспорт конфига и бинарный бэкап.


# На MikroTik: текстовый экспорт и бинарный бэкап
/export file=before-tftp-backup
/system backup save name=before-tftp-backup

Записи /ip tftp хранятся в конфигурации роутера и после перезагрузки начинают работать сразу, дополнительных действий не требуется.

Безопасность

  • Всегда заполняй ip-addresses конкретной подсетью: пустое поле означает раздачу любому адресу
  • Ставь read-only=yes, чтобы через TFTP нельзя было записать файл на роутер
  • Отключай записи сразу после задачи: /ip tftp disable [find]
  • SSH hardening на самом MikroTik — отдельный пользователь без full-доступа для задач автоматизации через scheduler
  • Никогда не пробрасывай UDP/69 через NAT наружу в интернет

8. FAQ

Почему TFTP не работает после настройки на MikroTik?

Чаще всего дело в firewall: drop стоит выше accept для UDP/69. Вторая причина — IP клиента не входит в ip-addresses записи или имя файла не совпадает с req-filename. Проверь /ip firewall filter print, /ip tftp print detail и лог с topics~»tftp».

Как проверить, что TFTP-сервер на MikroTik работает правильно?

Запусти /ip tftp print detail: запись должна быть без флага X. Затем скачай файл с другой машины в разрешённой подсети: curl -o /tmp/test tftp://IP-роутера/имя-файла. Ошибки смотри в /log print where topics~»tftp».

Что делать, если Netinstall не видит роутер?

Подключи роутер к ПК через boot-порт (обычно ether1), отключи на ПК Wi-Fi и лишние сетевые карты, разреши Netinstall в Windows Firewall. Зажми reset, подай питание и держи кнопку, пока роутер не появится в списке. Если роутер ещё доступен, проще задать boot-device=try-ethernet-once-then-nand и перезагрузить его.

Чем TFTP отличается от FTP на MikroTik?

TFTP работает по UDP без аутентификации и нужен там, где у устройства ещё нет системы: Netinstall, PXE, первичная загрузка телефонов. FTP работает по TCP, требует логин и пароль и подходит для обмена файлами между уже рабочими устройствами.

Можно ли использовать TFTP на MikroTik для регулярного бэкапа конфигов?

Технически да, через tool fetch и scheduler, но TFTP не шифрует трафик и не проверяет целостность файла. Для регулярных задач лучше SFTP — он безопаснее и надёжнее при разрывах связи.

9. Прогноз

Настроил TFTP-сервер на MikroTik, ограничил раздачу доверенной подсетью, связал его с DHCP для сетевой загрузки и закрыл лишний доступ через firewall. Теперь роутер раздаёт конфиги и загрузчики устройствам в сети, сам забирает файлы с центрального сервера по расписанию, а убитый MikroTik ты поднимешь через Netinstall.

Дальше — дело привычки. Первое восстановление через Netinstall займёт минут двадцать с нервами, десятое — три минуты на автомате. Если не заработало — пиши в комментарии, разберёмся.

Андрей А.
Author: Андрей А.

25 years in IT — from a field engineer at MegaFon to head of department. I rebuild IT infrastructure that’s falling apart and turn it into something predictable. I know what chaos costs. I help businesses get out of a crisis: cleaning up legacy systems, stabilizing what’s breaking, and setting up processes you can actually plan around.

Оставайтесь на связи

Рецепты от IT-боли. Без воды, без рекламы, без маркетинговой шелухи.

Подписаться на IT-Аптеку →
Поделитесь:

Оставьте комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Прокрутить вверх