суббота, 23 февраля 2013 г.

Что надо сделать при удалённой работе с Mikrotik. Аналог Reload.

Баловаться с FireWall на удаленном компе или роутере - к дальней дороге

Вводная: При удалённом программировании вполне можно ошибиться и вбить что-нибудь, что ограничит собственный доступ. В cisco есть хорошая команда reload in, но к сожалению в mikrotik её нет. Но её заменяет целых две возможности

Методика проверки: Тестировалось через подключение к роутеру по WiFi и дальнейшему отключению беспроводной сети. В консоли выполнялась команда /interface disable 5
где 5 номер wlan интерфейса.

1. Safe Mode.

http://wiki.mikrotik.com/wiki/Manual:Console#Safe_Mode

При входе в терминал, нажимаете Ctrl-X - теперь при разрыве связи с роутером настройки скинуться на конфигурацию которая была ДО нажатия :) В отличии от reload не надо задавать время и в случае ошибки ждать когда сработает таймер - срабатывает сразу, как пропадает связь между тем кто конфигурирует и микротиком. Также нет вечной проблемы с тем, что забываешь отменить reload :).
После окончание конфигурирования опять нажимаем Ctrl-X и выходим из сейфмода. Так же можно нажать Ctrl+D и отменить все внесённые изменения (к примеру если вам не нравится, что вы сделали и хотите сделать откат настроек).
Плюсы:
  1. Нет задержки на ожидание, конфигурация откатывается сразу после пропадания связи (хотя в официальной документации и указано, что откат проходит через 9 минут, но у меня всегда делалось практически мгновенно (Now, if telnet connection (or winbox terminal) is cut, then after a while (TCP timeout is 9 minutes) all changes that were made while in safe mode will be undone))
  2. Простота и скорость реализации - достаточно нажать Ctrl-X
Минусы:
  1. Есть проблемы с настройкой интерфейсов - Любые настройки требующие переподключения. К примеру на WiFi смена канала или настроек безопасности. Так как при данной смене рвётся соединение, то происходит откат к старым настройкам. Так же это же относится и к другим настройкам связанным с переподключениями, к примеру смена скорости и режима дуплекса у проводных и прочая.
Также можно включить через WinBox

2. Эмуляция reload - делается с помощью скриптовой системы RouterOS. 
Создадим скрипт reload (ну или с любым другим именем, следующего содержания
/system backup save name=reload
delay 600
/system backup load name=reload.backup
Теперь перед началом изменения конфигурации запускаем данный скрипт. И через заданное в delay время он заменит конфигурацию и перезагрузит роутер. Отменить выполнение можно либо командой -
system script job remove [find script=reload]
(вместо reload имя скрипта), либо через WinBox (Systems - Scripts - вкладка jobs - и удаляем нашу задачу)
Плюсы: 
  1. Работает везде - после старта скрипта можно делать, что угодно (кроме перезагрузки - после перезагрузки, скрипт вам не восстановит систему)
  2. Создаёт бэкап, что никогда не лишнее.
Минусы: 
  1. Нельзя запустить через терминал - при запуске не через winbox, при операции восстановления выводит запрос - "Restore and reboot? [y/N]:" и ждёт подтверждения (через winbox такого запроса нет, как отключить так и не разобрался)


3 комментария:

  1. Спасибо, очень нужная команда. Я давно искал как реализовать что то подобное на микротике. Например , на оборудовании UBIQUTI есть подобная функция, вкладка test , при нажатии которой включается обратный отсчет времени 300с и если, например,при смене канала, точка не соединилась с базой, она возвращается в прежнюю конфигурацию. Что очень удобно для удаленной настройки сетей. А на микротике Safe Mode не работает должным образом... Я был на конференции MUM в Киеве и задавал вопрос о Safe Mode,просил чтоб сделали обратный осчет.... Но так мой вопрос и не расмотрели.

    ОтветитьУдалить
  2. Этот комментарий был удален автором.

    ОтветитьУдалить
  3. Начиная с версии 6.43 немножко изменились параметры
    https://wiki.mikrotik.com/wiki/Manual:System/Backup
    У меня на 6.44.3 работает скрипт вот в таком виде (бэкап нешифрованный, без пароля):

    /system backup save name=reload
    delay 600
    /system backup load name=reload.backup password=""
    /system reboot

    ОтветитьУдалить