Консоль (командная строка) RouterOS
Введение
Консоль (командная строка) RouterOS используется для настройки устройств MikroTik с помощью введения текстовых команд. Эта статья содержит много практических примеров использования консоли MikroTik RouterOS, а не просто перечисление имеющихся команд и их возможностей. Также консоль RouterOS используется для написания и выполнения скриптов. Поэтому материал, содержащийся на этой странице, можно уверенно назвать учебником, а не справочником.
Использование командной строки значительно облегчает анализ конфигурации и дает значительный прирост скорости при выполнении некоторых операций. Также некоторые действия доступны только через консоль и недоступны через графический интерфейс.
Термин «командная строка» происходит от англоязычного термина Command Line Interface (CLI). В операционной системе RouterOS командная строка является аналогом bash в Linux. Доступ к командной строке может быть получен с помощью серийного порта, протоколов Telnet и SSH или окна терминала в утилитах WinBox или WebFig.
Доступ к консоли можно получить через текстовые терминалы: удаленно (Telnet, SSH, окно Terminal в WinBox), а также локально – напрямую с подключенного к роутеру монитора и клавиатуры (при установке на виртуальную машину или на физический компьютер) или через подключение с помощью серийного порта.
Как перестать бояться командной строки RouterOS
Умение пользоваться консолью является обязательным навыком, который должен быть у каждого администратора устройств MikroTik. Но зачастую у многих начинающих администраторов необходимость использования командной строки вызывает чувство страха. Материал, изложенный на этой странице, содержит большое количество наглядных примеров с помощью повторения которых можно легко и за короткий срок начать общаться с консолью MikroTik RouterOS на «ты». Такой «переход» происходит в несколько этапов:
В самом начале обучения работе с CLI RouterOS администратор должен:
- изучить принципы работы командной строки,
- закрепить навык работы с основными командами,
- получить навык чтения конфигураций.
К основным принципам работы с командной строкой относятся следующие навыки и знания:
- понимание разницы между командными строками RouterOS v6 и v7,
- получение информации об имени пользователя и имени устройства,
- перемещение по структуре меню,
- использование встроенной помощи,
- перемещение курсора в рамках строки,
- выполнение манипуляций с текстом,
- назначение функциональных клавиш,
- ускорение ввода команд,
- а также некоторые другие знания и навыки.
К основным командам, которые должны быть освоены на начальном этапе, относятся команды: add, remove, move, set, unset и print, а также некоторые их ключи. В результате освоения администратор должен не зачитывать определения того, что с помощью этих команд можно сделать, а уметь выполнять через консоль RouterOS следующие базовые операции:
- создание правил,
- удаление правил,
- перемещение правил,
- выполнение манипуляций с параметрами уже имеющихся правил (установка, изменение и удаление значений),
- включение и выключение правил.
Все эти знания и навыки и можно получить с помощью материала, изложенного ниже. После уверенного закрепления материалов первого этапа освоения консоли RouterOS можно переходить ко второму этапу, который также изложен на этой странице.
Информация об имени пользователя и имени устройства
После получения доступа к консоли начинает отображаться приглашение аналогичное тому, которое приведено ниже. В квадратных скобках [admin@MikroTik] мы можем увидеть два имени, которые указаны через знак @. Первое имя (до знака @) – это имя пользователя от имени которого выполнено подключение, а второе имя (после знака @) – это имя устройства к которому выполнено подключение. Из приведенного ниже примера мы можем сделать вывод, что пользователь с именем admin подключился к устройству с именем MikroTik.
[admin@MikroTik] >
Структура меню
Ввиду того, что существует огромное количество возможных команд, они разбиты по иерархически организованным группам. В зависимости от того в каком месте иерархии происходит управление, будут доступны разные команды и разные наборы дальнейших путей для дальнейшего перемещения по структуре. Такой принцип организации структуры называется «контекстно-ориентированным». Самая верхняя точка меню называется «корень иерархической структуры» или просто «корень».
Пример доступных путей и команд из корня консоли:
[admin@MikroTik] > caps-man interface partitions routing user password certificate ip port snmp beep ping console ipv6 ppp special-login blink quit disk log queue system export redo file mpls radius tool import undo
Пример доступных путей и команд из раздела /ip:
[admin@MikroTik] /ip > address dhcp-server kid-control route ssh export arp dns neighbor service tftp cloud firewall packing settings traffic-flow dhcp-client hotspot pool smb upnp dhcp-relay ipsec proxy socks vrf
Пример доступных путей и команд из раздела /ip/address:
[admin@MikroTik] /ip/address> add comment disable edit enable export find print remove reset set
В оригинальном отображении командной строки для разных элементов используются разные цвета. Пример:
[admin@MikroTik] > /system/clock set time-zone-name=Europe/Moscow
В приведенном выше примере:
- /system/clock – путь,
- set – команда,
- time-zone-name= – параметр, который необходимо задать,
- Europe/Moscow – значение параметра, которое должно быть задано.
Чем между собой различаются путь, команда, параметр и значение параметра мы разберем далее в этой статье. Формально имя пути и команда это не одно и то же. Но для облегчения изучения материала под термином «команда» мы будем подразумевать одновременно оба термина: «имя пути» и «команда».
Структуры интерфейса командной строки (CLI) и графического интерфейса (GUI) чаще всего совпадают, но иногда встречаются и различия. Различия могут заключаться, как в написании отдельных слов, так и в указании полного пути до интересующего раздела с настройками.
|
|
Перемещение по структуре меню
Варианты перемещения
С помощью приведенных в предыдущем разделе команд возможны разные способы перемещения по структуре меню RouterOS с помощью командной строки:
- Переход в раздел меню, являющийся нижестоящим относительно текущего расположения, возможен с помощью:
- поочередного перехода с указанием одного нижестоящего пункта за один раз,
- быстрого перехода с указанием более, чем одного нижестоящего пункта за один раз.
- Переход в раздел меню, который не является нижестоящим относительно текущего расположения, возможен с помощью:
- указания полного пути с указанием корня в начале команды,
- предварительного перехода в нужный вышестоящий пункт меню с помощью указания .. (двух точек),
- предварительного перехода сразу в корень с помощью указания / (слэша).
Далее в статье приведен детальный разбор с примерами каждой из описанных выше ситуаций.
Команды
Для перемещения по меню RouterOS с помощью командной строки используются следующие команды:
- название вложенного пункта меню - переход в соответствующий подраздел,
- / – перемещение в корень,
- .. – перемещение на один уровень вверх.
Определение текущего расположения
Путь по которому происходит управление в консоли, отображается до символа >.
1 [admin@MikroTik] > /ip/firewall/filter 2 [admin@MikroTik] /ip/firewall/filter>
В обоих приведенных выше примерах есть текст /ip/firewall/filter. Разница между примерами, заключается в расположении текста /ip/firewall/filter относительно знака >. В первом случае слева от этого знака пусто, а это значит, что управление происходит из корня иерархической структуры, а /ip/firewall/filter это путь по которому произойдет переход если будет нажата клавиша Enter. Во втором случае слева от знака > указан путь /ip/firewall/filter, а это значит, что этот путь и является путем текущего расположения.
Перемещение вглубь структуры меню
Для перемещения в нижестоящий раздел необходимо ввести название интересующего раздела и нажать Enter.
Перемещение на один пункт за один раз
Если интересующий раздел находится далее, чем в одном шаге от текущего раздела, то процесс перехода необходимо выполнить в несколько этапов пока не будет достигнут нужный раздел.
1 [admin@MikroTik] > ip 2 [admin@MikroTik] /ip> firewall 3 [admin@MikroTik] /ip/firewall> filter 4 [admin@MikroTik] /ip/firewall/filter>
- Мы находимся в корне и указываем, что хотим переместиться на один пункт вглубь меню в раздел
ip. - Мы оказываемся в разделе
/ipи указываем, что хотим переместиться на один пункт вглубь меню в разделfirewall. - Мы оказываемся в разделе
/ip/firewallи указываем, что хотим переместиться на один пункт в глубь меню в разделfilter. - Мы оказываемся в разделе
/ip/firewall/filter.
Перемещение на два и более пунктов за один раз
Для перемещения сразу в нужный раздел необязательно делать это пошагово. Это можно сделать указав сразу более одного пункта меню за один раз.
1 [admin@MikroTik] > ip/firewall/filter 2 [admin@MikroTik] /ip/firewall/filter>
- Мы находимся в корне и указываем, что хотим переместиться сразу в раздел
ip/firewall/filter. - Мы оказываемся сразу в разделе
/ip/firewall/filter.
Перемещение между пунктами меню, не связанными друг с другом напрямую
Для перемещения в пункт меню, который не является вложенным относительно текущего расположения необходимо указать знак корня / до указания пути по которому необходимо выполнить переход. Использование этого знака даст понять операционной системе, что точкой отсчета пути будет являться корень, а не текущий раздел.
1 [admin@MikroTik] /ip/firewall/filter> nat 2 bad command name nat (line 1 column 1) 3 [admin@MikroTik] /ip/firewall/filter> ip/firewall/nat 4 syntax error (line 1 column 3) 5 [admin@MikroTik] /ip/firewall/filter> /ip/firewall/nat 6 [admin@MikroTik] /ip/firewall/nat> /system/license 7 [admin@MikroTik] /system/license> / 8 [admin@MikroTik] >
- Мы находимся в разделе
/ip/firewall/filterи хотим перейти в раздел/ip/firewall/nat. Для этого мы указываемnat. - Мы получаем ошибку, т.к. система считает, что мы хотим перейти по пути
/ip/firewall/filter/nat. А такой путь отсутствует, т.к. путь до разделаnatне является вложенным в раздел/ip/firewall/filter. Он, идет «параллельно» ему, т.е. тоже находится по пути/ip/firewall, но без входа в подразделfilter. - Мы указываем путь
ip/firewall/nat. - Мы получаем ошибку, т.к. система считает, что мы хотим перейти по пути
/ip/firewall/filter/ip/firewall/nat. А такой путь отсутствует. - Мы указываем путь
/ip/firewall/nat. Разница с пунктом 3 заключается в том, что в этот раз перед путем был указан знак корня/. - Мы оказываемся в разделе
/ip/firewall/natи указываем путь/system/license. - Мы оказываемся в разделе
/system/licenseи указываем путь/. - Мы оказываемся в корне.
Перемещение по меню в обратном направлении (назад к корню)
Для перемещения по иерархической структуре в обратном направлении используется команда .. (две точки).
Перемещение на один пункт за один раз
Для перемещения по иерархической структуре в обратном направлении на один уровень необходимо указать .. (две точки).
1 [admin@MikroTik] /ip/firewall/filter> .. 2 [admin@MikroTik] /ip/firewall> .. 3 [admin@MikroTik] /ip> .. 4 [admin@MikroTik] >
- Мы находимся в разделе
/ip/firewall/filterи указываем..для того, чтобы перейти на один уровень наверх (ближе к корню) в раздел/ip/firewall. - Мы оказываемся в разделе
/ip/firewallи указываем..для того, чтобы перейти на один уровень наверх (ближе к корню) в раздел/ip. - Мы оказываемся в разделе
/ip/и указываем..для того, чтобы перейти на один уровень наверх (ближе к корню). - Мы оказываемся в корне.
Перемещение на два и более пунктов за один раз
Для перемещения по иерархической структуре в обратном направлении более чем на один уровень необходимо указать блоки из двух точек (..) несколько раз. Между разными блоками должны стоять знаки пробела. Количество блоков должно соответствовать количеству уровней на которые необходимо сделать переход назад.
1 [admin@MikroTik] /ip/firewall/filter> .. .. .. 2 [admin@MikroTik] >
- Мы находимся в разделе
/ip/firewall/filterи указываем.. .. ..(три раза по две точки, с пробелами после первого и второго блока из двух точек). - Мы оказываемся в корне.
Разница между путем, командой, параметром и значением параметра
В оригинальной выдаче командной строки RouterOS для разных элементов используются разные цвета. Пример:
[admin@MikroTik] > /system/clock set time-zone-name=Europe/Moscow
В приведенном выше примере:
- /system/clock – путь,
- set – команда,
- time-zone-name= – параметр, который необходимо задать,
- Europe/Moscow – значение параметра, которое должно быть задано.
Попробуем разобрать разницу между этими элементами на примере:
Руководитель говорит сотруднику в офисе: подготовь отчет в формате pdf, крайний срок исполнения конец дня.
В приведенном выше примере:
- Руководитель говорит сотруднику – аналогия для «системный администратор настраивает маршрутизатор MikroTik».
- В офисе – путь.
- Подготовь – команда.
- Отчет – параметр № 1.
- В формате pdf – значение параметра «отчет».
- Крайний срок исполнения – параметр № 2.
- Конец дня – значение параметра «крайний срок исполнения».
Для многих команд требуется указать хотя бы один параметр. Значение параметра указывается после самого параметра и знака равно. Если в значении параметра используется хотя бы один пробел, то все значение должно быть взято в кавычки. Пример: comment="rule № 1".
Основные операции
Выполнение команд из раздела к которому они не относятся
В процессе работы иногда требуется выполнить команду, которая не относится к текущему разделу. При этом переход в соответствующий раздел возможен, но нежелателен. Например, потому что потом опять надо вернуться в исходный раздел. В таких ситуациях надо указать полный путь до интересующей команды, включая знак корня (/).
В приведенном ниже примере команда ping выполнена из раздела /ip/route:
[admin@MikroTik] /ip/route> /tool/ping 8.8.8.8
Альтернатива «полному пути от корня» – использовать относительный подъем `..` прямо в команде, чтобы подняться на один уровень «только для выполнения этой команды», не выходя из текущего раздела. Пример (находясь в `/ip/firewall/nat`):
[admin@MikroTik] /ip/firewall/nat> .. service-port print ... [admin@MikroTik] /ip/firewall/nat>
Определение номера правила
Для дальнейшего понимания принципа работы с командной строкой MikroTik RouterOS надо понять по какому принципу происходит нумерация правил и как можно определить номер конкретного интересующего нас правила.
Во многих разделах RouterOS работа происходит со списками однотипных объектов (интерфейсы, адреса, маршруты, пользователи, правила и т.д.). Такие списки выводятся командой «print». В выводе каждому элементу назначается номер, показываются флаги и значения параметров.
Важно различать:
- имя элемента (если оно есть) – это свойство объекта, обычно оно «стабильнее» и не меняется само по себе;
- номер элемента – это нумерация, которую назначает консоль (обычно при выводе списка `print`). Номера не являются постоянными: после следующего `print` порядок элементов и номера могут измениться. Нумерация действует в рамках текущей сессии и актуальна до следующего `print` (или до выхода из консоли).
Дополнительные нюансы:
- Результат выдачи последнего выполнения команды
printзапоминается. Поэтому послеadd,removeиmoveможно продолжать обращаться к элементам по тем же номерам — до следующегоprint(или до выхода из консоли). - Нумерация ведется отдельно для каждого списка. Например, команда
/ip/address/printне влияет на нумерацию в списке интерфейсов (/interface/print) и наоборот. - Номера можно использовать даже без предварительного
print. В таком случае они будут назначены автоматически (как если бы print уже выполнялся).
Также во многих командах можно указывать сразу несколько элементов списком номеров, например «numbers=0,1,2».
Во многих разделах элементы списка можно указывать не только через параметр numbers=, но и позиционно – сразу после имени команды set/remove/move.
Пример (из раздела /interface):
[admin@MikroTik] > interface set 0,1,2 mtu=1460
Предупреждение: номера элементов удобны для интерактивной работы, но для скриптов и автоматизации это ненадежный идентификатор. Если есть имя – лучше опираться на имя. Если имени нет – используйте поиск `find` по признакам (например, по `comment`).
[admin@MikroTik] /ip/firewall/filter> print
Flags: X - disabled, I - invalid; D - dynamic
0 ;;; rule_1
chain=forward action=accept
1 ;;; rule_2
chain=forward action=accept
2 ;;; rule_3
chain=forward action=accept
В приведенном выше примере в разделе /ip/firewall/filter с помощью команды print мы получили информацию о списке имеющихся правил и их номерах. Учтите, что в жизни такие правила не имеют никакого смысла. Они сделаны в таком виде исключительно для удобства обучения. Первое правило имеет комментарий «rule_1», второе правило имеет комментарий «rule_2» и т.д. Но это именно комментарий к правилу, а не номер, который будет учитывать операционная система. Все правила нумеруются по порядку начиная с нуля: 0, 1, 2, 3, 4 и т. д. В итоге самое первое правило с комментарием «rule 1» с точки зрения RouterOS имеет номер 0, второе правило с комментарием «rule 2» с точки зрения операционной системы имеет номер 1, и т.д. Это очень важно учитывать и при настройке и через CLI и через GUI, и при общении с коллегами. Если это не учитывать, то может получиться, что один человек имел ввиду номер в «человеческом» исчислении, а другой человек имел ввиду номер в «машинном» исчислении. Результат такого недопонимания может быть очень плачевным.
Список основных команд
- add – добавить правило.
- remove – удалить правило.
- move – переместить правило.
- set – изменить значение параметра.
- unset – удалить значение параметра.
Список основных команд (вариант № 2)
Во многих разделах RouterOS повторяется общий набор команд. Ниже – краткая справка по этим командам (их поведение во многом одинаково в разных разделах):
add– добавить новый элемент в список (обычно в конец списка). Команда add возвращает внутренний номер добавленного элемента. Часто встречающиеся параметрыadd:copy-from=– создать новый элемент как копию существующего (при необходимости переопределив отдельные параметры).place-before=– сразу вставить новый элемент перед указанной позицией (чтобы не делатьadd+move).disabled=– создать элемент сразу включенным/выключенным.comment=– задать комментарий.
edit– редактировать значение параметра, который содержит большой объем текста (например, скрипт). В зависимости от возможностей терминала может открываться полноэкранный редактор или однострочный редактор. Поле редактирования скрипта в консоли ограничено 30 000 символов.find– найти элементы по заданным критериям и вернуть их внутренние номера. По смыслу критерии похожи наset(плюс флаги видаdisabled=yes/no,active=yes/noи т.п.). Имена флагов удобно смотреть в шапке выводаprint.move– изменить порядок элементов в списке (актуально там, где порядок имеет значение). Смысл параметров: что перемещаем (один элемент или список), и перед каким элементом размещаем. Если «перед чем» не указано – элементы попадают в конец списка.print– вывести информацию текущего раздела (список элементов или значения параметров). Если в разделе есть редактируемый список, тоprintтакже назначает номера элементов, которые используются командамиset/remove/move/.... Часто используемые параметрыprint:from=– показать только указанные элементы (в заданном порядке).where– фильтрация по условиям (логика похожа наfind).brief– табличный вывод.detail– вывод в видеparameter=value.count-only– вывести только количество элементов.file=– записать вывод в файл на роутере.interval=– обновлять вывод каждые N секунд.oid– показать OID (для свойств, доступных через SNMP).without-paging– печатать без остановки после каждого экрана.
remove– удалить указанный элемент/элементы из списка.set– изменить значения параметров (как общих параметров раздела, так и параметров элемента списка). Чтобы увидеть доступные параметры в текущем месте, используйте F1 или двойной [Tab].reset– сбросить параметры к значениям по умолчанию. Можно сочетать сброс и настройку в одной команде (сразу указав нужные параметры).export– вывести (или сохранить) конфигурацию текущего раздела и его подменю (если они есть) в виде набора команд RouterOS. Если указан параметрfile=, вывод будет записан в файл с расширением .rsc, иначе – напечатан в терминал.get– получить значение одного параметра выбранного элемента. По умолчанию значение не печатается в терминал; обычноgetиспользуют внутри выражений или вместе с:put. Пример::put [system/resource/get version].enable– включить выбранный элемент.disable– выключить выбранный элемент.comment– изменить комментарий выбранного элемента.
Команды можно комбинировать. Например, можно вставить новое правило перед правилом, найденным по комментарию:
/ip firewall/filter/add chain=forward place-before=[find where comment=CommentX] ip/firewall/filter/add chain=forward place-before="CommentX"
Добавление нового правила
Для создания новых правил используется команда add.
В конце списка
По умолчанию любое вновь созданное правило добавляется в конец списка.
1 [admin@MikroTik] /ip/firewall/filter> print
Flags: X - disabled, I - invalid; D - dynamic
2 [admin@MikroTik] /ip/firewall/filter> add chain=forward action=accept comment=rule_1
3 [admin@MikroTik] /ip/firewall/filter> add chain=forward action=accept comment=rule_2
4 [admin@MikroTik] /ip/firewall/filter> add chain=forward action=accept comment=rule_3
5 [admin@MikroTik] /ip/firewall/filter> print
Flags: X - disabled, I - invalid; D - dynamic
0 ;;; rule_1
chain=forward action=accept
1 ;;; rule_2
chain=forward action=accept
2 ;;; rule_3
chain=forward action=accept
- Мы находимся в разделе
/ip/firewall/filterи выполняем командуprintв выдаче которой мы видим, что правила в текущем разделе отсутствуют. - Мы создаем правило с комментарием rule_1.
- Мы создаем правило с комментарием rule_2.
- Мы создаем правило с комментарием rule_3.
- В выдаче команды
printмы видим, что в разделе/ip/firewall/filterпоявились правила с номерами 0, 1 и 2 и эти правила имеют комментарии «rule_1», «rule_2», «rule_3».
На заданную позицию
В некоторых таблицах порядок правил играет роль, а в некоторых нет. Например, в /ip/route порядок правил роли не играет, а в /ip/firewall/filter порядок правил роль играет. Поэтому иногда может потребоваться поместить правило не в конец списка, а на какую-то конкретную позицию. Это делается с помощью параметра place-before в котором указывается номер правила перед которым должно быть помещено вновь создаваемое правило.
1 [admin@MikroTik] /ip/firewall/filter> print
Flags: X - disabled, I - invalid; D - dynamic
0 ;;; rule_1
chain=forward action=accept
1 ;;; rule_2
chain=forward action=accept
2 ;;; rule_3
chain=forward action=accept
2 [admin@MikroTik] /ip/firewall/filter> add chain=forward action=accept comment=rule_4 place-before=1
3 [admin@MikroTik] /ip/firewall/filter> print
Flags: X - disabled, I - invalid; D - dynamic
0 ;;; rule_1
chain=forward action=accept
1 ;;; rule_4
chain=forward action=accept
2 ;;; rule_2
chain=forward action=accept
3 ;;; rule_3
chain=forward action=accept
- В выдаче команды
printмы видим, что отсутствует правило с комментарием «rule_4». - Мы указываем, что хотим создать новое правило с комментарием «rule_4» и сразу поместить его до текущего правила с номером 1 (
place-before=1). - В выдаче команды
printмы видим, что созданное на предыдущем шаге правило с комментарием «rule_4» сразу было помещено на место с номером 1, а предыдущее правило, которое ранее имело номер 1 и комментарий «rule_2» переместилось на позицию с номером 2.
Перемещение существующего правила
Для перемещения правил используется команда move и ее параметры numbers и destination. В параметре numbers задается какое правило или правила мы хотим переместить, а в параметре destination задается позиция куда должно быть перенесено правило. Итоговый номер перенесенного правила зависит от того в каком направлении производится перемещение: вверх или вниз по списку.
Перемещение правила ниже по списку
В любое место кроме последнего
Если правило должно быть перемещено ниже по списку, то в параметре destination необходимо указать номер правила перед которым должно быть помещено перемещаемое правило.
1 [admin@MikroTik] /ip/firewall/filter> print
Flags: X - disabled, I - invalid; D - dynamic
0 ;;; rule_1
chain=forward action=accept
1 ;;; rule_4
chain=forward action=accept
2 ;;; rule_2
chain=forward action=accept
3 ;;; rule_3
chain=forward action=accept
2 [admin@MikroTik] /ip/firewall/filter> move numbers=1 destination=3
3 [admin@MikroTik] /ip/firewall/filter> print
Flags: X - disabled, I - invalid; D - dynamic
0 ;;; rule_1
chain=forward action=accept
1 ;;; rule_2
chain=forward action=accept
2 ;;; rule_4
chain=forward action=accept
3 ;;; rule_3
chain=forward action=accept
- В выдаче команды
printмы видим, что правило с комментарием «rule_4» имеет номер 1. - С помощью команды
moveмы указываем, что надо взять правило с номером 1 (numbers=1) и поместить его перед правилом номер 3 (destination=3). - В выдаче команды
printмы видим, что правило, которое ранее имело номер 1 и комментарий «rule_4», было помещено перед правилом с номером 3 и комментарием «rule_3».
На последнее место
Если правило должно быть перемещено в самый конец списка, то необходимо не указывать значение параметра destination. Т.е. запись должна выглядеть так: destination=.
1 [admin@MikroTik] /ip/firewall/filter> print
Flags: X - disabled, I - invalid; D - dynamic
0 ;;; rule_1
chain=forward action=accept
1 ;;; rule_2
chain=forward action=accept
2 ;;; rule_4
chain=forward action=accept
3 ;;; rule_3
chain=forward action=accept
2 [admin@MikroTik] /ip/firewall/filter> move numbers=2 destination=
3 [admin@MikroTik] /ip/firewall/filter> print
Flags: X - disabled, I - invalid; D - dynamic
0 ;;; rule_1
chain=forward action=accept
1 ;;; rule_2
chain=forward action=accept
2 ;;; rule_3
chain=forward action=accept
3 ;;; rule_4
chain=forward action=accept
- В выдаче команды
printмы видим, что правило с комментарием «rule_4» имеет номер 2. - С помощью команды
moveмы указываем, что надо взять правило с номером 2 (numbers=2) и поместить в самый конец списка (destination=). - В выдаче команды
printмы видим, что правило с комментарием «rule_4», которое ранее имело номер 2, было поставлено в самый конец списка, т.е. теперь оно имеет номер 3.
Перемещение правила выше по списку
Если правило должно быть перемещено выше по списку, то в параметре destination указывается номер, который должно занять перемещаемое правило.
1 [admin@MikroTik] /ip/firewall/filter> print
Flags: X - disabled, I - invalid; D - dynamic
0 ;;; rule_1
chain=forward action=accept
1 ;;; rule_2
chain=forward action=accept
2 ;;; rule_3
chain=forward action=accept
3 ;;; rule_4
chain=forward action=accept
2 [admin@MikroTik] /ip/firewall/filter> move numbers=3 destination=1
3 [admin@MikroTik] /ip/firewall/filter> print
Flags: X - disabled, I - invalid; D - dynamic
0 ;;; rule_1
chain=forward action=accept
1 ;;; rule_4
chain=forward action=accept
2 ;;; rule_2
chain=forward action=accept
3 ;;; rule_3
chain=forward action=accept
- В выдаче команды
printмы видим, что правило с комментарием «rule_4» имеет номер 3. - С помощью команды
moveмы указываем, что мы хотим взять правило с номером 3 (numbers=3) и поместить его на место правила с номером 1 (destination=1). - В выдаче команды
printмы видим, что правило с комментарием «rule_4» было перемещено на место правила с номером 1.
Перемещение более, чем одного правила
С помощью команды move можно переместить более одного правила за один раз. Для этого в в параметре numbers надо через запятую указать номера правил, которые мы хотим переместить. Правила переносятся в том порядке в котором они указаны в параметре numbers .
Перемещение правил с номерами, идущими по порядку
1 [admin@MikroTik] /ip/firewall/filter> print
Flags: X - disabled, I - invalid; D - dynamic
0 ;;; rule_1
chain=forward action=accept
1 ;;; rule_4
chain=forward action=accept
2 ;;; rule_2
chain=forward action=accept
3 ;;; rule_3
chain=forward action=accept
2 [admin@MikroTik] /ip/firewall/filter> move numbers=2,3 destination=1
3 [admin@MikroTik] /ip/firewall/filter> print
Flags: X - disabled, I - invalid; D - dynamic
0 ;;; rule_1
chain=forward action=accept
1 ;;; rule_2
chain=forward action=accept
2 ;;; rule_3
chain=forward action=accept
3 ;;; rule_4
chain=forward action=accept
- В выдаче команды
printмы видим, что правила с комментариями «rule_2» и «rule_3» имеют номера 2 и 3 соответственно. - С помощью команды
moveмы указываем, что мы хотим взять правила с номерами 2 и 3 (numbers=2,3) и поместить их на место правила с номером 1 (destination=1). - В выдаче команды
printмы видим, что правила с комментариями «rule_2» и «rule_3» были перемещены и получили номера 1 и 2 соответственно.
Перемещение правил с номерами, идущими не по порядку
1 [admin@MikroTik] /ip/firewall/filter> print
Flags: X - disabled, I - invalid; D - dynamic
0 ;;; rule_1
chain=forward action=accept
1 ;;; rule_2
chain=forward action=accept
2 ;;; rule_3
chain=forward action=accept
3 ;;; rule_4
chain=forward action=accept
2 [admin@MikroTik] /ip/firewall/filter> add chain=forward action=accept comment=rule_5
3 [admin@MikroTik] /ip/firewall/filter> add chain=forward action=accept comment=rule_6
4 [admin@MikroTik] /ip/firewall/filter> add chain=forward action=accept comment=rule_7
5 [admin@MikroTik] /ip/firewall/filter> print
Flags: X - disabled, I - invalid; D - dynamic
0 ;;; rule_1
chain=forward action=accept
1 ;;; rule_2
chain=forward action=accept
2 ;;; rule_3
chain=forward action=accept
3 ;;; rule_4
chain=forward action=accept
4 ;;; rule_5
chain=forward action=accept
5 ;;; rule_6
chain=forward action=accept
6 ;;; rule_7
chain=forward action=accept
6 [admin@MikroTik] /ip/firewall/filter> move numbers=6,2,4 destination=0
7 [admin@MikroTik] /ip/firewall/filter> print
Flags: X - disabled, I - invalid; D - dynamic
0 ;;; rule_7
chain=forward action=accept
1 ;;; rule_3
chain=forward action=accept
2 ;;; rule_5
chain=forward action=accept
3 ;;; rule_1
chain=forward action=accept
4 ;;; rule_2
chain=forward action=accept
5 ;;; rule_4
chain=forward action=accept
6 ;;; rule_6
chain=forward action=accept
- В выдаче команды
printмы видим, что есть 4 правила с номерами 0–3 и комментариями «rule_1», «rule_2», «rule_3», «rule_4» имеет номер 2. - Мы добавляем правило с комментарием «rule_5».
- Мы добавляем правило с комментарием «rule_6».
- Мы добавляем правило с комментарием «rule_7».
- В выдаче команды
printмы видим, что есть 7 правил с номерами 0–6 и комментариями «rule_1» – «rule_7». Правило 0 имеет комментарий «rule_1», правило 1 имеет комментарий «rule_2», Правило 2 имеет комментарий «rule_3» и т. д. по порядку. - С помощью команды
moveмы говорим, что хотим переместить правила с номерами 6, 2 и 4 (numbers=6,2,4) на место правила с номером 0 (destination=0). - В выдаче команды
printмы видим, что правила 6 («rule_7»), 2 («rule_3») и 4 («rule_2») были перенесены на место правила 0. Также мы видим, что перенос был выполнен с учетом порядка в котором номера правил были перечислены в параметреnumbers.
Удаление правила
Для удаления правил используется команда remove. Номер удаляемого правила должен быть указан в параметре numbers. За один раз можно удалить как одно, так и более одного правил.
1 [admin@MikroTik] /ip/firewall/filter> print Flags: X - disabled, I - invalid; D - dynamic 0 ;;; rule_7 chain=forward action=accept 1 ;;; rule_3 chain=forward action=accept 2 ;;; rule_5 chain=forward action=accept 3 ;;; rule_1 chain=forward action=accept 4 ;;; rule_2 chain=forward action=accept 5 ;;; rule_4 chain=forward action=accept 6 ;;; rule_6 chain=forward action=accept 2 [admin@MikroTik] /ip/firewall/filter> remove numbers=0,1,2 3 [admin@MikroTik] /ip/firewall/filter> print Flags: X - disabled, I - invalid; D - dynamic 0 ;;; rule_1 chain=forward action=accept 1 ;;; rule_2 chain=forward action=accept 2 ;;; rule_4 chain=forward action=accept 3 ;;; rule_6 chain=forward action=accept
- В выдаче команды
printмы видим, что правила с номерами 0, 1 и 2 имеют комментарии «rule_7», «rule_3» и «rule_5». - С помощью команды
removeмы указываем, что хотим удалить правила с номерами 0, 1 и 2 (numbers=0,1,2). - В выдаче команды
printмы видим, что правила с комментариями «rule_7», «rule_3» и «rule_5» удалены.
Установка, изменение и удаление значения параметров у имеющихся правил
Установка значения параметра, который ранее не использовался
Для установки значения для какого-либо параметра у уже имеющегося правила, необходимо с помощью команды set и параметра numbers= определить интересующее правило, а далее необходимо указать интересующий параметр и его значение.
1 [admin@MikroTik] /ip/firewall/filter> print
Flags: X - disabled, I - invalid; D - dynamic
0 ;;; rule_1
chain=forward action=accept
1 ;;; rule_2
chain=forward action=accept
2 ;;; rule_4
chain=forward action=accept
3 ;;; rule_6
chain=forward action=accept
2 [admin@MikroTik] /ip/firewall/filter> set numbers=2 dst-address=8.8.8.8
3 [admin@MikroTik] /ip/firewall/filter> print
Flags: X - disabled, I - invalid; D - dynamic
0 ;;; rule_1
chain=forward action=accept
1 ;;; rule_2
chain=forward action=accept
2 ;;; rule_4
chain=forward action=accept dst-address=8.8.8.8
3 ;;; rule_6
chain=forward action=accept
- В выдаче команды
printмы видим, что ни у одного из правил не указано значение параметраdst-address. - С помощью команды
setмы указываем, что у правила с номером 2 (numbers=2) необходимо установить значение параметраdst-addressравное 8.8.8.8 (dst-address=8.8.8.8). - В выдаче команды
printмы видим, что у правила с номером 2 параметрdst-addressполучил значение 8.8.8.8.
Изменение значения параметра, который ранее использовался
Процедура изменения значения какого-либо параметра происходит аналогично процедуре установке значения у параметра, который ранее уже использовался. Для установки значения для какого-либо параметра у уже имеющегося правила, необходимо с помощью команды set и параметра numbers= определить интересующее правило, а далее необходимо указать интересующий параметр и его значение.
1 [admin@MikroTik] /ip/firewall/filter> print
Flags: X - disabled, I - invalid; D - dynamic
0 ;;; rule_1
chain=forward action=accept
1 ;;; rule_2
chain=forward action=accept
2 ;;; rule_4
chain=forward action=accept dst-address=8.8.8.8
3 ;;; rule_6
chain=forward action=accept
2 [admin@MikroTik] /ip/firewall/filter> set numbers=2 comment=rule_3
3 [admin@MikroTik] /ip/firewall/filter> print
Flags: X - disabled, I - invalid; D - dynamic
0 ;;; rule_1
chain=forward action=accept
1 ;;; rule_2
chain=forward action=accept
2 ;;; ;;; rule_3
chain=forward action=accept dst-address=8.8.8.8
3 ;;; rule_6
chain=forward action=accept
- В выдаче команды
printмы видим, что у правила с номером 2 указан комментарий «rule_4». - С помощью команды
setмы указываем, что у правила с номером 2 (numbers=2) необходимо изменить значение параметра comment на «rule_3» (comment=rule_3). - В выдаче команды
printмы видим, что у правила с номером 2 комментарий изменился на «rule_3».
Удаление значения параметра
Для удаления значения параметра используется команда unset, но в некоторых случаях можно использовать частный случай команды set: set="".
С помощью параметра unset
1 [admin@MikroTik] /ip/firewall/filter> print
Flags: X - disabled, I - invalid; D - dynamic
0 ;;; rule_1
chain=forward action=accept
1 ;;; rule_2
chain=forward action=accept
2 ;;; ;;; rule_3
chain=forward action=accept dst-address=8.8.8.8
3 ;;; rule_6
chain=forward action=accept
2 [admin@MikroTik] /ip/firewall/filter> unset numbers=2 dst-address
3 [admin@MikroTik] /ip/firewall/filter> print
Flags: X - disabled, I - invalid; D - dynamic
0 ;;; rule_1
chain=forward action=accept
1 ;;; rule_2
chain=forward action=accept
2 ;;; rule_3
chain=forward action=accept
3 ;;; rule_6
chain=forward action=accept
- В выдаче команды
printмы видим, что у правила номер 2 есть настройкаdst-address=8.8.8.8. - С помощью команды
unsetмы указываем, что у правила с номером 2 (numbers=2) необходимо удалить значение параметраdst-address. - В выдаче команды
printмы видим, что у правила номер 2 пропала настройкаdst-address=8.8.8.8.
С помощью параметра set
В некоторых случаях удалить значение параметра можно с помощью команды set="".
1 [admin@MikroTik] /ip/firewall/filter> print
Flags: X - disabled, I - invalid; D - dynamic
0 ;;; rule_1
chain=forward action=accept
1 ;;; rule_2
chain=forward action=accept
2 ;;; rule_3
chain=forward action=accept
3 ;;; rule_6
chain=forward action=accept
2 [admin@MikroTik] /ip/firewall/filter> set numbers=3 comment=""
3 [admin@MikroTik] /ip/firewall/filter> print
Flags: X - disabled, I - invalid; D - dynamic
0 ;;; rule_1
chain=forward action=accept
1 ;;; rule_2
chain=forward action=accept
2 ;;; rule_3
chain=forward action=accept
3 chain=forward action=accept
- В выдаче команды
printмы видим, что у правила номер 3 указан комментарий «rule_6». - С помощью команды
setмы указываем, что у правила с номером 3 (numbers=3) необходимо указать пустой комментарий (comment=""). - В выдаче команды
printмы видим, что у правила номер 3 больше нет комментария.
Включение и выключение чего-либо
В заголовке раздела не случайно написано «чего-либо», т.к. включать и выключать можно: правила, интерфейсы или функционал. Включение и выключение производится с помощью параметров disabled и enabled. Параметрdisabled встречается намного чаще. Важно помнить, что в зависимости от того какая именно команда используется один и тот же параметр (yes или no) будет иметь прямо противоположное значение.
Параметр disabled
Disabled – параметр включения или выключения чего-либо при наличии нумерации. Возможные значения:
- =yes выключено,
- =no включено.
1 [admin@MikroTik] /ip/firewall/filter> print
Flags: X - disabled, I - invalid; D - dynamic
0 ;;; rule_1
chain=forward action=accept
1 ;;; rule_2
chain=forward action=accept
2 ;;; rule_3
chain=forward action=accept
3 chain=forward action=accept
2 [admin@MikroTik] /ip/firewall/filter> set numbers=1,3 disabled=yes
3 [admin@MikroTik] /ip/firewall/filter> print
Flags: X - disabled, I - invalid; D - dynamic
0 ;;; rule_1
chain=forward action=accept
1 X ;;; rule_2
chain=forward action=accept
2 ;;; rule_3
chain=forward action=accept
3 X chain=forward action=accept
- В выдаче команды
printмы видим, что у правил номер 1 и 3 отсутствуют флаги X. Наличие этого флага говорило бы о том, что правило выключено (X - disabled). - С помощью команды
setмы указываем, что правила с номерами 1 и 3 (numbers=1,3) необходимо выключить (disabled=yes). - В выдаче команды
printмы видим, что у правил номер 1 и 3 появился флаг X. а это означает, что правила оказались выключенными.
Параметр enabled
Enabled – параметр включения или выключения чего-либо при отсутствии нумерации (пример: /interface/l2tp-server/server). Возможные значения:
- =yes включено,
- =no выключено.
1 [admin@MikroTik] /interface/l2tp-server/server> print
enabled: no
max-mtu: 1450
max-mru: 1450
mrru: disabled
authentication: pap,chap,mschap1,mschap2
keepalive-timeout: 30
max-sessions: unlimited
default-profile: default-encryption
use-ipsec: no
ipsec-secret:
caller-id-type: ip-address
one-session-per-host: no
allow-fast-path: no
l2tpv3-circuit-id:
l2tpv3-cookie-length: 0
l2tpv3-digest-hash: md5
accept-pseudowire-type: all
accept-proto-version: all
2 [admin@MikroTik] /interface/l2tp-server/server> set enabled=yes
3 [admin@MikroTik] /interface/l2tp-server/server> print
enabled: yes
max-mtu: 1450
max-mru: 1450
mrru: disabled
authentication: pap,chap,mschap1,mschap2
keepalive-timeout: 30
max-sessions: unlimited
default-profile: default-encryption
use-ipsec: no
ipsec-secret:
caller-id-type: ip-address
one-session-per-host: no
allow-fast-path: no
l2tpv3-circuit-id:
l2tpv3-cookie-length: 0
l2tpv3-digest-hash: md5
accept-pseudowire-type: all
accept-proto-version: all
- Мы находимся в разделе с настройками L2TP-сервера (
/interface/l2tp-server/server) и в выдаче командыprintможно увидеть, что нумерация не используется, а сам L2TP-сервер выключен (enabled: no). - С помощью команды
setмы указываем, что необходимо включить L2TP-сервер (enabled=yes). - В выдаче команды
printмы видим, что L2TP-сервер активировался (enabled: yes).
Встроенные средства помощи
В консоли MikroTik RouterOS имеются встроенные средства помощи, которые также являются контекстно-ориентированными, т.е. выдается информация для раздела конфигурации, который указан в пути.
Клавиша F1
Использование F1 сразу после указания пути
После первого нажатия на клавишу F1 будет выведен список команд доступных по указанному пути, также для некоторых команд будет приведено описание. После повторного нажатия будет выведен список функциональных клавиш, комбинаций клавиш, а также описания их назначений.
Пример для корня:
[admin@MikroTik] > [F1] beep -- blink -- caps-man -- certificate -- Certificate management console -- convert -- convert binary data encoding delay -- does nothing for a while deserialize -- deserialize input to console values disk -- do -- executes command environment -- list of all variables error -- make error value execute -- run script as separate console job Часть выдачи пропущена user -- User management while -- executes command while condition is true export -- Print or save an export script that can be used to restore configuration Press F1 for general console usage help [admin@MikroTik] > [F1] F1 Give the list of available commands command F1 Give help on the command and list of arguments [Tab] Complete the command/word. If the input is ambiguous, a second [Tab] gives possible options F3 or Ctrl-R Search command history F4 or Ctrl-X Toggle safe mode F5 or Ctrl-L Repaint the screen F7 Toggle hotlock mode F8 Print entire multiline input Ctrl-\ Split line Home or Ctrl-A Go to the beginning of the line End or Ctrl-E Go to the end of the line Ctrl-C Interrupt current action Ctrl-D Terminate session (on empty prompt) Ctrl-K Delete to the end of the line Ctrl-U Delete to the beginning of the line Ctrl-T Switch to a background task / Move up to base level .. Move up one level /command Use command at the base level
Пример для раздела /ip:
[admin@MikroTik] /ip> [F1] .. -- go up to root address -- Address management arp -- ARP entries management cloud -- dhcp-client -- DHCP client settings dhcp-relay -- DHCP relay settings dhcp-server -- DHCP server settings Часть выдачи пропущена upnp -- Universal Plug and Play vrf -- export -- Print or save an export script that can be used to restore configuration Press F1 for general console usage help [admin@MikroTik] /ip> [F1] F1 Give the list of available commands command F1 Give help on the command and list of arguments [Tab] Complete the command/word. If the input is ambiguous, a second [Tab] gives possible options F3 or Ctrl-R Search command history F4 or Ctrl-X Toggle safe mode F5 or Ctrl-L Repaint the screen F7 Toggle hotlock mode F8 Print entire multiline input Ctrl-\ Split line Home or Ctrl-A Go to the beginning of the line End or Ctrl-E Go to the end of the line Ctrl-C Interrupt current action Ctrl-D Terminate session (on empty prompt) Ctrl-K Delete to the end of the line Ctrl-U Delete to the beginning of the line Ctrl-T Switch to a background task / Move up to base level .. Move up one level /command Use command at the base level
Использование F1 после указания команды
После первого нажатия на клавишу F1 после команды и пробела будет выведен список параметров данной команды, также для некоторых команд будет приведено описание. После повторного нажатия будет выведен список функциональных клавиш, комбинаций клавиш, а также описания их назначений.
[admin@MikroTik] /interface> set [F1] <numbers> -- List of item numbers comment -- Short description of the item disabled -- Defines whether item is ignored or used l2mtu -- mtu -- Maximum Transmit Unit name -- Interface name Press F1 for general console usage help [admin@MikroTik] /interface> set [F1] F1 Give the list of available commands command F1 Give help on the command and list of arguments [Tab] Complete the command/word. If the input is ambiguous, a second [Tab] gives possible options F3 or Ctrl-R Search command history F4 or Ctrl-X Toggle safe mode F5 or Ctrl-L Repaint the screen F7 Toggle hotlock mode F8 Print entire multiline input Ctrl-\ Split line Home or Ctrl-A Go to the beginning of the line End or Ctrl-E Go to the end of the line Ctrl-C Interrupt current action Ctrl-D Terminate session (on empty prompt) Ctrl-K Delete to the end of the line Ctrl-U Delete to the beginning of the line Ctrl-T Switch to a background task / Move up to base level .. Move up one level /command Use command at the base level
После первого нажатия на клавишу F1 сразу после команды без пробела будет выведен список параметров данного раздела, как бы выглядела такая выдача без введенной команды, также для некоторых команд будет приведено описание. После повторного нажатия будет выведен список функциональных клавиш, комбинаций клавиш, а также описания их назначений.
[admin@MikroTik] /ip> set[F1] .. -- go up to root address -- Address management arp -- ARP entries management cloud -- dhcp-client -- DHCP client settings dhcp-relay -- DHCP relay settings dhcp-server -- DHCP server settings Часть выдачи пропущена upnp -- Universal Plug and Play vrf -- export -- Print or save an export script that can be used to restore configuration Press F1 for general console usage help [admin@MikroTik] /ip> set[F1] F1 Give the list of available commands command F1 Give help on the command and list of arguments [Tab] Complete the command/word. If the input is ambiguous, a second [Tab] gives possible options F3 or Ctrl-R Search command history F4 or Ctrl-X Toggle safe mode F5 or Ctrl-L Repaint the screen F7 Toggle hotlock mode F8 Print entire multiline input Ctrl-\ Split line Home or Ctrl-A Go to the beginning of the line End or Ctrl-E Go to the end of the line Ctrl-C Interrupt current action Ctrl-D Terminate session (on empty prompt) Ctrl-K Delete to the end of the line Ctrl-U Delete to the beginning of the line Ctrl-T Switch to a background task / Move up to base level .. Move up one level /command Use command at the base level
Клавиша [Tab]
После первого нажатия на [Tab] в консоли будет выведен список доступных команд из «основного» списка, а после второго нажатия – список доступных команд для встроенного скриптового языка.
Пример 1:
[admin@MikroTik] > [Tab] certificate ipv6 queue system export undo console log radius task import disk mpls routing tool password file partitions safe-mode user ping interface port snmp beep quit ip ppp special-login blink redo [admin@MikroTik] > [Tab] / error jobname put set toip6 : execute len range time tolf environment find local resolve timestamp tonsec terminal for lock retry toarray tonum convert foreach nothing return tobool tostr delay global onerror rndnum tocrlf totime deserialize grep parse rndstr toid typeof do if pick serialize toip while
Пример 2:
[admin@MikroTik] /ip/firewall/filter> [Tab] add edit find remove reset-counters-all comment enable move reset set disable export print reset-counters unset [admin@MikroTik] /ip/firewall/filter> [Tab] .. / : get
Выводить подсказку можно также для параметров и их значений:
[admin@MikroTik] /interface/ethernet> set[Tab]
ether1 fec-mode poe-voltage
ether2 l2mtu power-cycle-interval
ether3 loop-protect power-cycle-ping-address
ether4 loop-protect-disable-time power-cycle-ping-enabled
ether5 loop-protect-send-interval power-cycle-ping-timeout
advertise mac-address rx-flow-control
arp mdix-enable sfp-ignore-rx-los
arp-timeout mtu sfp-rate-select
auto-negotiation name sfp-shutdown-temperature
bandwidth numbers speed
combo-mode orig-mac-address tx-flow-control
comment poe-out
disabled poe-priority
[admin@MikroTik] /interface/ethernet> set poe-out=[Tab]
auto-on forced-on forced-on-a forced-on-bt off
Ускорение ввода
В консоли RouterOS можно ускорить введение слов1 после того как будет введены символы2, позволяющие однозначно идентифицировать слово в разделе конфигурации. Для ускорения ввода слов можно использовать:
- указание уникальной части слова,
- клавишу [Tab],
- режим Hot Lock.
Далее эти способы будут разобраны более подробно.
1 В рамках данного раздела под термином «слово» будут пониматься пути, команды, параметры и значения параметров.
2 В рамках данного раздела термин «веденные символы» используется как собирательный термин для обозначения как одного символа, так и двух и более символов, если иное не будет оговорено явным образом отдельно.
Указание уникальной части слова
Можно ускорять ввод пути, если указать уникальную его часть, которая позволит однозначно его идентифицировать:
[admin@MikroTik] > ip/f/f [admin@MikroTik] /ip/firewall/filter>
Ускорять ввод можно, также и для команд и их параметров. Например, запись:
[admin@MikroTik] > pin 10.0.0.1 c 3 si 100
эквивалентна записи:
[admin@MikroTik] > ping 10.0.0.1 count 3 size 100
Клавиша [Tab]
С помощью клавиши [Tab] можно:
- получить подсказку по имеющимся совпадениям для введенного символа или комбинации символов (два или более символов);
- частично ввести оставшуюся часть слова до начала уникальной части слова, если ранее была введена частично уникальная комбинация символов;
- полностью вести оставшуюся часть слова, если ранее была введена полностью уникальная комбинация символов.
При введении неуникальных символов
Если с помощью введенных символов нельзя однозначно распознать слово целиком или часть слова, являющуюся общей для двух и более слов, то после нажатия на [Tab] будут выведены слова, содержащие в себе введенные символы.
Если указывается один символ, расположенный в самом начале пути и есть слова, начинающиеся с этого символа, то после нажатия на [Tab] будут выведены только такие слова:
[admin@MikroTik] > i[Tab]
interface ip ipv6 import
[admin@MikroTik] > /interface> s[Tab]
sstp-client sstp-server set
Если указывается один символ, расположенный в самом начале пути и и нет слов, начинающихся с этого символа, то после нажатия на [Tab] будут выведены слова, содержащие этот символ, независимо от расположения символа в слове:
[admin@MikroTik] > /interface> x[Tab]
dot1x vxlan export
Если указывается один символ, расположенный после команды, то после нажатия на [Tab] будут выведены, слова содержащие этот символ, независимо от расположения символа в слове:
[admin@MikroTik] /interface> set e[Tab]
ether1 ether2 ether3 ether4 ether5 comment disabled name numbers
Если указываются два и более символа, то ищется любое слово, содержащие эти символы. При поиске учитывается только то, что символы должны идти в перечисленном порядке, а место расположения символов в слове, а также то идут они подряд или нет не учитывается:
[admin@MikroTik] /interface> set et[Tab]
ether1 ether2 ether3 ether4 ether5 comment
[admin@MikroTik] /interface> sstp-[Tab]
sstp-client sstp-server
При введении частично уникальных символов
Если с помощью введенных символов нельзя однозначно распознать слово целиком, но можно однозначно распознать часть слова, являющуюся общей для двух и более слов, то после нажатия на [Tab] произойдет вывод этой части слова. При поиске учитывается только то, что символы должны идти в перечисленном порядке, а место расположения символов в слове, а также то идут они подряд или нет не учитывается.
[admin@MikroTik] > /interface> ss[Tab]
[admin@MikroTik] > /interface> sstp-
[admin@MikroTik] /interface> set eth[Tab]
[admin@MikroTik] /interface> set ether
[admin@MikroTik] /interface> set tr[Tab]
[admin@MikroTik] /interface> set ether
[admin@MikroTik] /interface> set h[Tab]
[admin@MikroTik] /interface> set ether
Примечание: в реальной консоли полное указание слова происходит на той же самой строке, а не в новой как это показано для наглядности в приведенных выше примерах.
При введении полностью уникального символа или комбинации символов
С помощью клавиши [Tab] можно ввести слово целиком, если введенные символы позволяют однозначно распознать такое слово. При поиске учитывается только то, что символы должны идти в перечисленном порядке, а место расположения символов в слове, а также то идут они подряд или нет не учитывается.
[admin@MikroTik] > in[Tab]
[admin@MikroTik] > interface/
[admin@MikroTik] > /interface> se[Tab]
[admin@MikroTik] > /interface> set
[admin@MikroTik] > /interface> set t5[Tab]
[admin@MikroTik] > /interface> set ether5
[admin@MikroTik] > /interface> mt[Tab]
[admin@MikroTik] > /interface> monitor-traffic
Примечание: в реальной консоли полное указание слова происходит на той же самой строке, а не в новой как это показано для наглядности в приведенных выше примерах.
Режим Hot Lock
С помощью клавиши F7 в консоли MikroTik RouterOS активируется режим Hot Lock в котором команды автоматически без использования [Tab] дополняются до полного написания как только будет введен уникальный набор символов, позволяющий однозначно идентифицировать путь, команду, параметр или его значение.
После нажатия на [F7] после указания пути начинает отображаться два знака >>, вместо одного >.
[admin@MikroTik] > [F7]
[admin@MikroTik] >>
Например, после последовательного нажатия клавиш m, f и p автоматически будет подставлено:
[admin@MikroTik] >> mpls/forwarding-table/print
Комбинации клавиш и функциональные клавиши
Перемещение курсора
В консоли MikroTik RouterOS в пределах строки можно перемещать курсор следующими способами:
- Control-\ – разбиение строки на две отдельные строки в месте расположения курсора с последующим отображением второй из двух строк.
- Control + B или ← – перемещение курсора на один знак назад.
- Control + F или → – перемещение курсора на один знак вперед.
- Control + A или клавиша Home – перемещение курсора в начало строки.
- Control + E или клавиша End – перемещение курсора в конец строки.
Манипуляции с текстом
В командной строке MikroTik RouterOS манипуляции с текстом можно выполнять следующими способами:
- Ctrl + C – скопировать выделенный текст (является функционалом некоторых терминальных клиентов, а не RouterOS и поэтому не является противоречием описания Ctrl + С из подраздела «Прочие комбинации клавиш»).
- Ctrl + V – вставить выделенный текст (является функционалом некоторых терминальных клиентов, а не RouterOS).
- Ctrl + K – удалить все знаки, начиная со знака, на котором находится курсор, и до конца строки.
- Ctrl + U – удалить все знаки от начала строки и до знака, на котором находится курсор, не считая самого этого знака.
- Delete – удалить знак, на котором находится курсор.
- Ctrl + H или клавиша Backspace – удалить знак перед курсором и сдвинуть курсор на один знак.
Прочие комбинации клавиш
Ниже перечислены прочие возможности консоли MikroTik, которые не были перечислены ранее:
- Ctrl + C – прервать выполнение команды (не является противоречием описания Ctrl + С из подраздела «Манипуляции с текстом»).
- Ctrl + D – завершить сессию и выйти из консоли (поле ввода должно быть пустым), а при использовании Safe Mode отменить изменения, сделанные в Safe Mode.
- Ctrl + L (или F5) – очистить экран.
- Ctrl + R (или F3) – поиск по истории введенных команд.
- Ctrl + X (или F4) – активация/деактивация безопасного режима.
- Ctrl + P или ↑ – перемещение назад по истории команд.
- Ctrl + N или ↓ – перемещение вперед по истории команд.
- Ctrl + T – вернуться к фоновому заданию.
Функциональные клавиши
- F1 – контекстно ориентированная помощь.
- F2 – не используется.
- F3 (или Ctrl + R) – поиск по истории введенных команд.
- F4 (или Ctrl + X) – активация/деактивация безопасного режима.
- F5 (или Ctrl + L) – очистить экран.
- F6 – переключение между окнами в WinBox.
- F7 – активация/деактивация режима Hot Lock.
- F8 – вывод всей многострочной команды
- F9 – F12 – не используются.
Режимы работы редактора строки
Редактор строки консоли может работать в одном из двух режимов:
- многострочный режим (multiline) – вводимая команда отображается целиком, даже если она длиннее одной строки терминала; для редактирования больших текстовых значений (например, скриптов) может использоваться полноэкранный редактор;
- однострочный режим (single-line) – для редактирования используется одна строка терминала; длинные строки показываются «обрезанными» вокруг курсора; полноэкранный редактор в этом режиме не используется.
Выбор режима зависит от автоматически определенных возможностей терминала.
Настройки консоли: /console/settings
В меню `/console/settings` есть опция `sanitize-names` (yes/no, по умолчанию no). Она заменяет «зарезервированные» символы в имени файла (`\ / : * ? |`) на символ подчеркивания `_`.
Практический смысл: полезно при сохранении вывода в файл (например, `print file=...` или `export file=...`), если имя файла формируется автоматически и может содержать символы, которые нежелательны в имени файла.
Безопасный режим (Safe Mode)
Безопасный режим нужен, когда вы меняете конфигурацию по удаленному доступу и есть риск «отрезать» себе доступ к роутеру (например, ошибиться в правилах firewall или адресации). Safe Mode помогает минимизировать риск тем, что позволяет автоматически откатить изменения при аварийном завершении сессии.
Как включить и как понять, что Safe Mode активен
- В WinBox – кнопка Safe Mode.
- В CLI – клавиша F4 или сочетание Ctrl + X.
После включения появляется сообщение `[Safe Mode taken]`, а в приглашении командной строки появляется суффикс `<SAFE>`.
[admin@MikroTik] /ip/route> [Ctrl]+[X] [Safe Mode taken] [admin@MikroTik] /ip/route<SAFE>
Как работает Safe Mode
Пока Safe Mode активен, все изменения конфигурации, сделанные в этот момент (в том числе из других сессий входа), помечаются как «откатываемые». Если сессия, которая «держит» Safe Mode, завершается ненормально (например, обрыв telnet/terminal), изменения будут автоматически отменены.
Проверить список изменений, которые будут отменены, можно в `/system/history` – они помечены флагом `F` (FLOATING-UNDO).
[admin@MikroTik] /ip/route<SAFE> add
[admin@MikroTik] /system/history/print Flags: U, F - FLOATING-UNDO ...
Если соединение оборвалось, отмена изменений произойдет после TCP timeout (в документации указано 9 минут).
Как выйти из Safe Mode
- Ctrl + D в пустой строке завершает сессию и одновременно отменяет все изменения, сделанные в Safe Mode.
- Важно: выход командой `/quit` завершает сессию, но без автоматической отмены изменений Safe Mode.
Если Safe Mode уже «занят» другой сессией
Если другой пользователь/сессия уже включили Safe Mode, при попытке включить его вы увидите запрос вида:
Hijacking Safe Mode from someone - unroll/release/don't take it [u/r/d]:
- `u` – отменить все текущие изменения Safe Mode и забрать Safe Mode себе;
- `r` – сохранить текущие изменения Safe Mode и забрать Safe Mode себе (предыдущая сессия получит уведомление);
- `d` – оставить все как есть.
Ограничения Safe Mode
История Safe Mode ограничена (в документации – до 100 последних действий). Если изменений слишком много, роутер автоматически выводит сессию из Safe Mode, и дальнейший автоматический откат не выполняется. Поэтому лучше вносить изменения небольшими шагами. Быстрый способ очистить список действий Safe Mode – нажать Ctrl + X два раза.
Safe Mode игнорируется для команд, требующих перезагрузки (например, сброс конфигурации или восстановление из бэкапа).
Прочее
Использование кириллицы
Консоль RouterOS не примет кириллические символы. Но это ограничение можно обойти, если использовать графический интерфейс. В WinBox кириллические символы использовать получится. Проблема проявится, когда надо будет такую конфигурацию проанализировать в консольном режиме. В приведенном ниже режиме выполнены команды print и export после того как в GUI для правила номер 3 был задан комментарий «правило_3».
1 [admin@MikroTik] /ip/firewall/filter> print
Flags: X - disabled, I - invalid; D - dynamic
0 ;;; rule_1
chain=forward action=accept
1 X ;;; rule_2
chain=forward action=accept
2 ;;; rule_3
chain=forward action=accept
3 X ;;; _3
chain=forward action=accept log=no log-prefix=""
2 [admin@MikroTik] /ip/firewall/filter> export
# mar/31/2022 21:48:45 by RouterOS 7.1.1
# software id = VP5J-JC7C
#
# model = RBD52G-5HacD2HnD
# serial number = BEEB0AC80265
/ip/firewall/filter
add action=accept chain=forward comment=rule_1
add action=accept chain=forward comment=rule_2 disabled=yes
add action=accept chain=forward comment=rule_3
add action=accept chain=forward comment="\EF\F0\E0\E2\E8\EB\EE_3" disabled=yes
- В выдаче команды
printмы видим, что у правила номер 3 не отображается та часть комментария в которой были использованы кириллические символы. - С выдаче команды
export(команда будет изучена позже) мы видим, что у последнего правила вместо кириллических символов используется непонятная кодировка.
Разница между командными строками RouterOS v6 и RouterOS v7
Командные строки RouterOS v6 и RouterOS v7 во многом похожи. Основная разница заключается в формате записи пути. В RouterOS v6 при указании пути разные иерархические уровни разделяются пробелами, а в RouterOS v7 – с помощью слэша (/). Разница касается только указания пути. Сами команды записываются одинаково в обеих версиях операционной системы.
Пример указания пути и создания правила брандмауэра в RouterOS v6:
[admin@MikroTik] /ip firewall filter> add action=accept chain=forward connection-state=established,related
Пример указания пути и создания правила брандмауэра в RouterOS v7:
[admin@MikroTik] /ip/firewall/filter> add action=accept chain=forward connection-state=established,related
Но также в RouterOS можно использовать и вариант указания пути аналогичный RouterOS v6:
[admin@MikroTik] >ip firewall filter [admin@MikroTik] /ip/firewall/filter> add action=accept chain=forward connection-state=established,related
В приведенных выше примерах /ip firewall filter и /ip/firewall/filter это указание пути.
Далее в этой статье примеры будут приводиться в формате записи для RouterOS v7. Но любая информация из статьи применима и для консоли RouterOS v6.
Видеоурок
Полезные ссылки
Онлайн-курсы по MikroTik
- Администрирование сетевых устройств MikroTik
- Файрвол и приоритизация трафика на MikroTik
- Маршрутизация на MikroTik
- Коммутация на MikroTik
Онлайн-курсы по сетям
- Математика и физика в сетевых технологиях
- Архитектура современных компьютерных сетей
- Устройство, проектирование и диагностика беспроводных сетей IEEE 802.11 (Wi-Fi)
Telegram-каналы
Telegram-чат
Прочее