Safe Mode в MikroTik: как не потерять доступ к роутеру при настройке

11 минут чтенияАвтор: Евгений Коржиков, сертифицированный тренер MikroTik
Safe Mode в MikroTik: как не потерять доступ к роутеру при настройке

Одна неверная команда по удалённому подключению, и роутер недоступен: до него не достучаться, а ехать далеко. Safe Mode для этого и придуман: он запоминает ваши изменения и сам откатывает их, если связь оборвалась. Разберём, как он работает в WinBox и в консоли, и где его защита кончается.

Нет роутера под рукой? На открытом уроке стенд уже включён и ждёт вас. Подробнее ↓

Что такое Safe Mode и когда его включать

Safe Mode (безопасный режим) в RouterOS работает как страховка для текущей сессии. Пока он включён, роутер ведёт журнал всех изменений конфигурации. Если сессия завершилась нештатно, например оборвался кабель или вы отключили интерфейс, через который подключены, роутер сам отменяет всё, что было сделано в безопасном режиме. Если вы вышли штатно и подтвердили изменения, они остаются.

Включайте его всегда, когда меняете настройки удалённо и ошибка может отрезать вас от роутера:

  • firewall: правило drop в цепочке input с неверным условием легко закрывает доступ по WinBox и SSH;
  • адреса: смена IP-адреса интерфейса, через который вы подключены;
  • интерфейсы и bridge: отключение порта, вынос порта из bridge, смена настроек bridge;
  • VLAN: перенос управляющего порта в другой VLAN или включение VLAN-фильтрации;
  • маршруты: изменение маршрута по умолчанию или маршрута к вашему компьютеру.
Важно. Safe Mode нужен для удалённой настройки. Если вы подключены к роутеру кабелем рядом, ошибку всегда можно исправить через локальную консоль или сбросом конфигурации.

Команды в статье проверены на RouterOS 7.22. Сообщения и поведение режима сверены и с документацией MikroTik (раздел «Configuration Management»).

Как работает откат

Safe Mode не делает снимок конфигурации и не сравнивает её потом. Вместо этого он помечает действия в журнале: каждое изменение, сделанное после включения режима, получает флаг F (floating-undo, «плавающая отмена»). Пока режим держится, эти действия висят в состоянии «может быть отменено». Дальше возможны два исхода:

  • Вы штатно выключили Safe Mode. Флаги F снимаются, действия остаются в конфигурации как обычные.
  • Сессия оборвалась. RouterOS отменяет все действия с флагом F в обратном порядке, как будто вы нажали отмену для каждого из них.
Схема работы Safe Mode: включили режим, внесли изменения с флагом F, затем либо вы выключили режим и изменения сохранились, либо сессия оборвалась и роутер откатил изменения

Откат запускается, как только RouterOS узнаёт, что сессия закончилась. Здесь важно не путать два случая, и в документации MikroTik это разделено так: если соединение закрыто явно, RouterOS видит обрыв сразу. Если же TCP-соединение «подвисло» и роутер этого не заметил (например, пропал канал в интернет), откат наступит только по таймауту TCP, а в документации он указан как 9 минут. Все изменения, сделанные в Safe Mode, в том числе из других сессий, отменяются вместе с ним.

Safe Mode в WinBox

В WinBox 3 это кнопка Safe Mode в левом верхнем углу окна. В WinBox 4 это переключатель в верхней панели справа, рядом со стрелками отмены и возврата (↶ и ↷). Выключенный режим выглядит серым, включённый зелёным. Проверим работу честным экспериментом: включим режим и намеренно отключим интерфейс, через который подключены.

Мы подключились к роутеру по MAC-адресу через порт ether1. Включаем Safe Mode, затем в Interfaces выключаем ether1. Связь рвётся мгновенно, WinBox показывает потерю соединения. Ещё через несколько секунд он переподключается сам, а ether1 снова включён: роутер откатил изменение.

Как это выглядит в WinBox 3 (Windows)

Сколько это заняло на стенде (RouterOS 7.22.3, подключение WinBox 4 по MAC): интерфейс выключен в 03:34:16, сессия закрыта в 03:34:18, ether1 снова поднят в 03:34:19, то есть откат занял около 3 секунд. Ещё около 10 секунд WinBox ждал и переподключался, так что связь вернулась примерно через 13 секунд. Соединение по MAC обрывается сразу, поэтому откат быстрый. Через интернет и подвисший TCP ждать придётся дольше, см. раздел выше.

Как выйти и сохранить изменения

Если изменения оказались безопасными (вы проверили, что связь на месте, и всё работает), режим нужно выключить: нажмите переключатель в WinBox ещё раз. Действия потеряют флаг F и останутся в конфигурации. Если просто закрыть WinBox, не выключив Safe Mode, сессия завершится, и роутер откатит всё, что вы сделали.

Важно. Выключать Safe Mode нужно только после проверки. Хорошая привычка: внесли изменение, убедились, что доступ и сервисы работают, и только тогда подтвердили. Если связи нет, ничего не нажимайте: роутер откатит всё сам.

Safe Mode в консоли

В терминале (WinBox → New Terminal, SSH, Telnet или локальная консоль) режим включается сочетанием Ctrl+X. В документации MikroTik указан также F4. RouterOS отвечает Taking Safe Mode session... Success!, а в приглашении появляется пометка <SAFE>:

[admin@MikroTik] > (Ctrl+X)
Taking Safe Mode session... Success!
[admin@MikroTik] <SAFE> /ip address add address=172.31.1.1/24 interface=bridge

Повторное нажатие Ctrl+X выключает режим и сохраняет изменения: Releasing Safe Mode... Success!, пометка <SAFE> исчезает.

Ctrl+D делает противоположное: закрывает терминал и откатывает всё, что было сделано в Safe Mode. Мы проверили это на стенде: в безопасном режиме сменили имя роутера и добавили адрес, нажали Ctrl+D, вошли заново, и обе правки пропали, а настройки, сделанные до включения режима, остались.

Как это выглядит в WinBox 3 (Windows)

Команда /quit в безопасном режиме в RouterOS 7.22 спрашивает подтверждение: You are in Safe Mode. Quitting will unroll changes. Quit? [y/N]. Ответ n отменяет выход. Чтобы выйти и сохранить изменения, сначала снимите режим через Ctrl+X, а потом выходите.

История действий и /undo

Всё, что делает Safe Mode, видно в истории: System → History в WinBox или команда:

/system history print

Флаги в первой колонке: U (undoable) значит, что действие можно отменить, F (floating-undo) значит, что оно сделано в Safe Mode и будет отменено при обрыве, R (redoable) значит, что действие отменено и его можно вернуть. После выключения Safe Mode флаги F превращаются в U.

Как это выглядит в WinBox 3 (Windows)

История работает и без Safe Mode. Команда /undo отменяет последнее действие, а /redo возвращает отменённое. Проверка на стенде: после /undo имя роутера вернулось к прежнему, а запись в истории получила флаг R. Команда /redo вернула изменение обратно. Новое действие стирает записи с флагом R: вернуть отменённое уже нельзя. Это как «шаг назад» в редакторе. Safe Mode же сам отменяет цепочку действий при обрыве сессии.

Ограничения: что Safe Mode не спасёт

  • Лимит истории: 100 действий. Журнал хранит не больше 100 последних действий (так сказано в документации). Если за время Safe Mode их набралось больше, сессия молча выходит из безопасного режима, и откатывать уже нечего. Мы проверили: после 110 добавлений у нас в истории осталось 100 записей, все с флагом U, а в приглашении осталась пометка <SAFE>. Нажатие Ctrl+X ответило Releasing Safe Mode... Failure. Поэтому меняйте настройки небольшими шагами, а длинные серии команд разбивайте и подтверждайте по частям.
  • Safe Mode один на роутер. Режим может держать только одна сессия. Если вы пытаетесь включить его из второй сессии, RouterOS остановит вас (подробности ниже).
  • Откат не мгновенный при «зависшем» соединении. При обрыве по MAC это секунды, а при подвисшем TCP по документации может быть до 9 минут.
  • Откатывается только конфигурация. Safe Mode отменяет действия из истории изменений. Файлы на диске и перезагрузка роутера в эту историю не входят, и на их отмену рассчитывать нельзя.
  • Не заменяет бэкап. Перед серьёзными изменениями всё равно сохраните /system backup save и /export. А если дойдёт до худшего, пригодится Netinstall.

Вторая сессия и захват режима

Если Safe Mode уже держит одна сессия, а вы включаете его в другой, RouterOS не даст сделать это молча. В WinBox при включении, пока режим у терминала, появится ошибка Failed enabling Safe Mode: safe mode already held by somebody. В терминале при режиме у WinBox вы увидите вопрос Safe Mode is taken by current user in another session. Unroll, release or abort [u/r]?. В документации описан похожий вопрос для другого пользователя (Hijacking Safe Mode from someone - unroll/release/don't take it [u/r/d]):

  • u (unroll): отменить все изменения предыдущего владельца и забрать режим себе;
  • r (release): оставить изменения предыдущего владельца в силе и забрать режим себе;
  • d / abort: ничего не менять, режим остаётся у прежнего владельца.
Как это выглядит в WinBox 3 (Windows)

Прежнему владельцу режима RouterOS пришлёт уведомление о захвате. Помните: все изменения, сделанные из других сессий, пока режим включён, тоже попадают в журнал отката.

Не работает: разбор проблем

СимптомПричинаЧто сделать
Изменения пропали после выходаВышли по Ctrl+D или закрыли WinBox, не выключив Safe ModeВыключайте режим (Ctrl+X, переключатель) перед выходом и проверьте /system history print
Связи нет, роутер не откатилсяSafe Mode не был включён, либо история переполнилась и режим тихо выключилсяДождитесь таймаута или подключитесь локально. В будущем меняйте настройки меньшими шагами
Releasing Safe Mode... FailureРежим уже потерян (переполнена история или его забрала другая сессия)Откройте новую сессию и проверьте /system history print: флаг F показывает, что ещё под защитой
safe mode already held by somebodyРежим уже держит другая сессияНайдите эту сессию (/user active print) и снимите режим там, или заберите его через unroll/release
После отката настройка «вернулась» не всяЧасть действий не входит в историю конфигурацииСверьтесь с /export и бэкапом: файлы и перезагрузка не откатываются

Частые вопросы

Включать ли Safe Mode всегда? При удалённой настройке да. Это почти ничего не стоит. Но держите режим включённым только на время работы и подтверждайте изменения небольшими порциями.

Нужен ли он при работе в консоли на месте? Не обязательно, но он помогает отменить серию ошибочных команд без ручной чистки: достаточно выйти по Ctrl+D.

Чем Safe Mode отличается от /undo? /undo отменяет действие по вашей команде, а Safe Mode отменяет всё сам, когда пропадает сессия. Первое для ручной отмены, второе для случая, когда вы уже не можете ничего ввести.

Спасёт ли Safe Mode, если роутер перезагрузится? Не рассчитывайте на это: режим защищает от обрыва сессии, а не от сбоев питания и перезагрузки. Мы такой сценарий не проверяли, в документации он не описан.

Открытый урок · бесплатно

Попробуйте Safe Mode руками на живом стенде

Свой роутер не нужен. На каждом открытом уроке стенды уже прогреты: RouterOS загружена, доступ выдан. Вы включаете Safe Mode, намеренно отрезаете себе доступ и смотрите, как роутер откатывает ошибку, а тренер отвечает на вопросы по ходу.

Стенд онлайн

Подключение за пару минут

Практика

Safe Mode в WinBox и в консоли

Тренер рядом

Разбор ваших вопросов вживую

Ближайший урок: [ДАТА И ВРЕМЯ УРОКА]

Читайте также