Итак задача: Хочу на Mikrotik“е (в роли Mikrotik выступит мой домашний: RB2011UiAS-2HnD) поднять TFTP сервис на который будет бекапировать конфигурация коммутатора 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.