Использование TFTP на Mikrotik

Posted by

Итак задача: Хочу на “е (в роли Mikrotik выступит мой домашний: RB2011UiAS-2HnD) поднять сервис на который будет бекапировать конфигурация коммутатора D-Link DES-3200-28/ME. Также TFTP сервис может служить для загрузки конфигураций на телефоны к примеру Cisco CP-7925G.

Запускаю утилиту winbox с рабочей системы Ubuntu Trusty Desktop (Gnome Classic)

Winbox — ip:port&user&pass — IP — TFTP — Add после представится мастер настройки. Обозначение полей настройки:

IP Addresses Доверенная сеть которая видит TFTP или конкретный IP адрес которому предназначены файлы
Req. Filename Имя запрашиваемого файла
Real Filename Действительное имя файла
Allow Говорит, что разрешить загрузку сюда
Read Only Только с TFTP совершать загрузку без загрузки на него

Мои настройки:

  • IP Addresses: 172.33.33.0/24
  • Allow: отмечаю галочкой

и нажимаю Apply — Ok.

Проверяю, как на данный TFTP происходит загрузка файлов:

ekzorchik@system:~$ sudo apt-get install -y tftp

ekzorchik@system:~$ cat /etc/passwd > passwd

ekzorchik@system:~$ tftp 172.33.33.1

tftp> put passwd

Sent 2086 bytes in 0.1 seconds

Отобразить статус соединения:

tftp> status

Connected to 172.33.33.1.

Mode: netascii Verbose: off Tracing: off

Rexmt-interval: 5 seconds, Max-timeout: 25 seconds

Если файл на TFTP существует в момент передачи выведется ошибка:

tftp> put group

Error code 6: file exists

А в логе на Mikrotik будет сообщение: ERROR code: 6 string file exists

Чтобы получить файл с TFTP Mikrotika: (Передача не надежна, порой вываливается в ошибку Transfer timed out и при сравнении файла он не сходится)

tftp> verbose

Verbose mode on.

tftp> mode ascii

tftp> trace

Packet tracing on.

Но когда установил режим передачи, как binary файл успешно скачался и на проверку он был идентичен сделанному бекапу:

tftp> mode binary

mode set to octet

tftp> get passwd

getting from 172.33.33.1:passwd to passwd [octet]

sent RRQ <file=passwd, mode=octet>

received DATA <block=1, 512 bytes>

sent ACK <block=1>

received DATA <block=2, 512 bytes>

sent ACK <block=2>

received DATA <block=3, 512 bytes>

sent ACK <block=3>

received DATA <block=4, 512 bytes>

sent ACK <block=4>

received DATA <block=5, 0 bytes>

Received 2048 bytes in 0.1 seconds [163840 bits/sec]

ekzorchik@system:~$ md5sum passwd passwd.1

fb5581dcc17edcdc423b40fd37e3b773 passwd

fb5581dcc17edcdc423b40fd37e3b773 passwd.1

tftp> quit

Проверяю, а действительно ли на Mikrotik теперь присутствует переданный с рабочей системы Ubuntu Trusty Desktop файл.

ekzorchik@system:~$ ssh -l ekzorchik 172.33.33.1

[ekzorchik@ekzorchik] > file print where name=passwd

# NAME TYPE SIZE CREATION-TIME

0 passwd file 2048 feb/10/2018 19:42:44

Из вывода выше видно, что файл успешно передался на Mikrotik.

На заметку: Мой Mikrotik RB2011UiAS-2HnD имеет на борту 128Mbytes свободной памяти т. е. Своего рода жесткий диск где может располагаться информация, к примеру: бекапы, ключи, файлы прошивок и все что я как системный администратор сочту нужным на нем расположить. А вот если подключить USB Flash Drive то объем дискового пространства увеличиться и можно будет организовать целый сервис по обслуживанию устройств сервисом TFTP. Но вот делать это нужно точнее давать доступ только доверенным сетям.

Чтобы ограничить доступ к TFTP сервису для определенной сети за Mikrotik нужно добавить следующие два правила в брандмауер:

[ekzorchik@ekzorchik] > ip firewall filter add chain=input dst-port=69 protocol= tcp src-address=172.33.33.0/24

[ekzorchik@ekzorchik] > ip firewall filter add chain=input dst-port=69 protocol=udp src-address=172.33.33.0/24

[ekzorchik@ekzorchik] > quit

interrupted

Connection to 172.33.33.1 closed.

ekzorchik@system:~$

На заметку: по расширенному использованию TFTP на Mikrotik стоит см. документацию производителя.

Так а теперь шаги чтобы обновить прошивку на коммутаторе D-Link DES-3200-28/ME:

Исходные данные: IP адрес коммутатора 172.33.33.99

[ekzorchik@ekzorchik] > tool fetch url="http://ftp.dlink.ru/pub/Switch/DES-3200-26_C1/Firmware/DES3200R_4.48.B002.had" mode=http

status: finished

downloaded: 6316KiB

total: 6316KiB

duration: 5s

добавляю настройку в TFTP сервис на Mikrotik:

Подключаюсь через консольный кабель с коммутатору, а после с Ubuntu Trusty Desktop открываю утилиту minicom и выполняю действия по обновлению прошивки с TFTP поднятом на Mikrotik:

ekzorchik@system:~$ sudo minicom -c on des

Нажмите CTRL-A Z для получения подсказки по клавишам

UserName:ekzorchik

PassWord:*********

DES-3200-28/ME:admin#

DES-3200-28/ME:admin#download firmware_fromTFTP 172.33.33.1 src_file DES3200R_4.48.B002.had

Command: download firmware_fromTFTP 172.33.33.1 src_file DES3200R_4.48.B002.had

Connecting to server................... Done.

Download firmware...................... 95 %

Memory is insufficient!

Fail!

Увы сколько я не пытался, загрузка все время обрывается для этой версии прошивки, а вот получилось с другой:

DES-3200-28/ME:admin#download firmware_fromTFTP 172.33.33.1 src_file DES3200R_4.37.B014.had

Command: download firmware_fromTFTP 172.33.33.1 src_file DES3200R_4.37.B014.had

Connecting to server................... Done.

Download firmware...................... Done. Do not power off!

Please wait, programming flash......... Done.

Success.

DES-3200-28/ME:admin#reboot

Command: reboot

Are you sure you want to proceed with the system reboot?(y/n) y

Please wait, the switch is rebooting...

DES-3200-28/ME:admin#show switch

Firmware Version : Build 4.37.B014 — О, да я успешно обновился с TFTP-сервиса поднятого на Mikrotik. Работает.

На заметку: TFTP на Mikrotik слишком медленный правильнее использовать развернутый на Ubuntu, как делаю я обычно, но такой вариант как в данной заметке имеет право существование. Так сказать полезно для развития.

На этом у меня всё, с уважением автор блога Олло Александр aka ekzorchik.