Командная строка Mikrotik
Консольный доступ на Mikrotik используется для конфигурации и управления роутером с помощью терминала по telnet, SSH и т.д. Также консоль можно использовать для написания скриптов. Ниже вы найдете базовые команды, использующиеся для администрирования роутера.
Иерархия
Всего существует большое количество команд, которые разбиты на группы, отсортированные в иерархическом порядке. Это означает, что название уровня меню отображает информацию о конфигурации в соответствующем разделе — определение не очень понятное, но, после примеров все станет более прозрачным.
К примеру, введите команду ip route print для вывода таблицы маршрутизации:
Если же ввести команду ip route , то вы как бы сразу попадете в меню манипуляции конкретной ветки:
Обратите внимание, что для вывода всех возможных команд на данном уровне достаточно ввести знак ?, а для возврата на уровень выше — знак /. Если же вам нужно выполнить команду из основного уровня — добавьте слэш (/) и команду следом, к примеру ping :
Нумерация и названия сущностей
Множество команд оперирует массивами сущностей — массивами интерфейсов, маршрутов, пользователей и т.д. Для изменения свойств сущности, предварительно должна идти команда set и указано имя или номер сущности. Различие между номером и названием состоит в том, что при обращении к сущности по имени (item name) нет необходимости использовать команду print , в отличие от номера, который может быть назначен с помощью команды. Таким образом, использование “имен” в каком-то смысле более стабильно — однако все равно возможна ситуация, в которой, к примеру, несколько пользователей одновременно настраивают маршрутизатор. Ниже приведен пример изменения параметра MTU с помощью команды interface set 0 mtu=1460
Автозаполнение
В RouterOS есть две фичи, которые ускоряют конфигурацию — табуляция и сокращения команд. Табуляция — автозавершение команды после нажатия на клавишу Tab и оно работает также как автозавершение в bash для LinuxUNIX систем.
Если есть только одна альтернатива — она будет автоматически предложена и будет добавлен пробел, если же альтернатив больше — команда будет выполнена частично и пробел добавлен не будет.
- int[Tab] станет interface
- interface set e[Tab] станет interface set ether_
Другой фичей является сокращение команд — к примеру вместо interface можно использовать int, вместо ping использовать pi и так далее
Ниже пример как выполняется команда pi 192.1 c 3 si 100 , что абсолютно аналогично команде ping 192.0.0.1 count 3 size 100
Основные команды
Некоторые команды применимы практически на всех уровнях, эти команды — print, set, remove, add, find, get, export, enable, disable, comment, move.
- add — добавление нового элемента с указанными параметрами, некоторые из параметров перечислены далее — copy-from, place-before, disabled, comment;
- edit — ассоциирована с командой set, как правило используется для редактирования сущностей, содержащих большое количество текста, к примеру скриптов, но также работает для любых редактируемых сущностей;
- find — команда возвращает внутренние номера всех сущностей, которые попадают под указанный фильтр. Обладает такими же аргументами как и команда set + имеет аргументы вида flag — такие как disabled или active (другими словами, булевые переменные);
- move — команда меняет порядок сущностей в списке;
- print — команда выводит всю информацию доступную с текущего уровня. Типичные модификаторы — from, where, brief, detail, count-only, file, interval, oid, without-paging. К примеру команда system clock print выводит системную дату и время, ip rout print — таблицу маршрутизации;
- remove — удаление сущности (-ей) из списка;
- set — установка параметров, значений и так далее;
Горячие клавиши
Ниже приведен список самых полезных горячих клавиш, которые могут серьезно ускорить процесс настройки оборудования, и, даже спасти ситуацию в случае ввода некорректного сетевого адреса.
Как посмотреть конфигурацию микротик в терминале

понедельник, 25 декабря 2017 г.
Как вывести и сохранить конфигурацию Микротика в текстовый файл или на консоль
Показать конфиг в терминале:
/export compact
Сохранить конфигурацию в файл:
/export compact file=myconfig
При этом конфигурация микротика сохраняется в понятном текстовом виде, вроде:
/interface bridge
add name=bridge1
/interface ethernet
set 0 comment=To-ADSL-Modem mtu=1480 name=WAN
set 1 comment=To-LAN-Switch name=LAN
set 2 master-port=LAN
set 3 master-port=LAN
set 4 master-port=LAN
и т.д.
Консоль MikroTik RouterOS
Эта статья содержит много практических примеров использования консоли MikroTik RouterOS, а не просто перечисление имеющихся команд и их возможностей. Поэтому материал, содержащийся на этой странице, можно уверенно назвать учебником, а не справочником.
Консоль RouterOS используется для настройки устройств MikroTik с помощью введения текстовых команд. Термины «консоль» и «командная строка» являются синонимами. Термин «командная строка» происходит от англоязычного термина Command Line Interface (CLI). В операционной системе RouterOS командная строка является аналогом bash в Linux. Доступ к командной строке может быть получен с помощью серийного порта, протоколов Telnet и SSH или окна терминала в утилитах WinBox или WebFig. Использование командной строки значительно облегчает анализ конфигурации и дает значительный прирост скорости при выполнении некоторых операций. Также некоторые команды доступны только через консоль и недоступны через графический интерфейс.
Как перестать бояться командной строки RouterOS (Введение)
Умение пользоваться консолью является обязательным навыком, который должен быть у каждого администратора устройств MikroTik. Но зачастую у многих начинающих администраторов необходимость использования командной строки вызывает чувство страха. Материал, изложенный на этой странице, содержит большое количество наглядных примеров с помощью повторения которых можно легко и за короткий срок начать общаться с консолью MikroTik RouterOS на «ты». Такой «переход» происходит в несколько этапов:
- Изучение основ:
- принципы работы командной строки,
- закрепление навыков работы с основными командами,
Как перестать бояться командной строки RouterOS (Этап 1. Изучение основ)
В самом начале обучения работе с CLI RouterOS администратор должен:
- изучить принципы работы командной строки,
- закрепить навыки работы с основными командами.
К основным принципам работы с командной строкой относятся следующие навыки и знания:
- разница между командными строками RouterOS v6 и v7,
- получение информации об имени пользователя и имени устройства,
- перемещение по структуре меню,
- использование встроенной помощи,
- перемещение курсора в рамках строки,
- манипуляции с текстом,
- назначение функциональных клавиш,
- ускорение ввода команд,
- некоторые другие знания и навыки.
К основным командам, которые должны быть освоены на начальном этапе, относятся команды: add, remove, move, set, unset и print, а также некоторые их ключи. В результате освоения администратор должен не зачитывать определения того, что с помощью этих команд можно сделать, а уметь выполнять через консоль RouterOS следующие базовые операции:
- создание правил,
- удаление правил,
- перемещение правил,
- манипуляции с параметрами уже имеющихся правил (установка, изменение и удаление значений),
- включение и выключение правил.
Все эти знания и навыки и можно получить с помощью материала, изложенного ниже. После уверенного закрепления материалов первого этапа освоения консоли RouterOS можно переходить ко второму этапу, который также изложен на этой странице.
Разница между командными строками RouterOS v6 и RouterOS v7
Командные строки RouterOS v6 и RouterOS v7 идентичны. Единственная разница заключается в формате записи пути. В RouterOS v6 при указании пути разные иерархические уровни разделяются пробелами, а в RouterOS v7 – с помощью слэша (/). Разница касается только указания пути. Сами команды записываются одинаково в обеих версиях операционной системы.
Пример указания пути и создания правила брандмауэра в RouterOS v6:
Пример указания пути и создания правила брандмауэра в RouterOS v7:
В обоих приведенных выше примерах до знака > указан путь, а после команда. Поэтому различается только левая часть, которая содержит в себе запись пути.
Далее в этой статье примеры будут приводиться в формате записи для RouterOS v7. Но любая информация из статьи применима и для консоли RouteroOS v6.
Информация об имени пользователя и имени устройства
После получения доступа к консоли начинает отображаться приглашение аналогичное тому, которое приведено ниже. В квадратных скобках [admin@MikroTik] мы можем увидеть два имени, которые указаны через знак @. Первое имя (до знака @) – это имя пользователя от имени которого выполнено подключение, а второе имя (после знака @) – это имя устройства к которому выполнено подключение. Из приведенного ниже примера мы можем сделать вывод, что пользователь с именем admin подключился к устройству с именем MikroTik.
Структура меню
Ввиду того, что существует огромное количество возможных команд, они разбиты по иерархически организованным группам. В зависимости от того в каком месте иерархии происходит управление, будут доступны разные команды и разные наборы дальнейших путей для дальнейшего перемещения по структуре. Такой принцип организации структуры называется «контекстно-ориентированным». Самая верхняя точка меню называется «корень иерархической структуры» или просто «корень».
Пример доступных путей и команд из корня консоли:
Пример доступных путей и команд из раздела /ip:
Пример доступных путей и команд из раздела /ip/address:
В оригинальном отображении командной строки для разных элементов используются разные цвета. Пример:
В приведенном выше примере:
- /system/clock – путь,
- set – команда,
- time-zone-name= – параметр, который необходимо задать,
- Europe/Moscow – значение параметра, которое должно быть задано.
Чем между собой различаются путь, команда, параметр и значение параметра мы разберем далее в этой статье. Формально имя пути и команда это не одно и тоже. Но для облегчения изучения материала под термином «команда» мы будем подразумевать одновременно оба термина: «имя пути» и «команда».
Структуры интерфейса командной строки (CLI) и графического интерфейса (GUI) чаще всего совпадают, но иногда встречаются и различия. Различия могут заключаться, как в написании отдельных слов, так и в указании полного пути до интересующего раздела с настройками.
Перемещение по структуре меню
Варианты перемещения
С помощью приведенных в предыдущем разделе команд возможны разные способы перемещения по структуре меню RouterOS с помощью командной строки:
- Переход в раздел меню, являющийся нижестоящим относительно текущего расположения, возможен с помощью:
- поочередного перехода с указанием одного нижестоящего пункта за один раз,
- быстрого перехода с указанием более, чем одного нижестоящего пункта за один раз.
- указания полного пути с указанием корня в начале команды,
- предварительного перехода в нужный вышестоящий пункт меню с помощью указания .. (двух точек),
- предварительного перехода сразу в корень с помощью указания / (слэша).
Далее в статье приведен детальный разбор с примерами каждой из описанных выше ситуаций.
Команды
Для перемещения по меню RouterOS с помощью командной строки используются следующие команды:
- название вложенного пункта меню — переход в соответствующий подраздел,
- / – перемещение в корень,
- .. – перемещение на один уровень вверх.
Определение текущего расположения
Путь по которому происходит управление в консоли, отображается до символа > .
В обоих приведенных выше примерах примерах есть текст /ip/firewall/filter . Разница между примерами, заключается в расположении текста /ip/firewall/filter относительно знака > . В первом случае слева от этого знака пусто, а это значит, что управление происходит из корня иерархической структуры, а /ip/firewall/filter это путь по которому произойдет переход если будет нажата клавиша Enter. Во втором случае слева от знака > указан путь /ip/firewall/filter , а это значит, что этот путь и является путем текущего расположения.
Перемещение вглубь структуры меню
Для перемещения в нижестоящий раздел необходимо ввести название интересующего раздела и нажать Enter.
Перемещение на один пункт за один раз
Если интересующий раздел находится далее, чем в одном шаге от текущего раздела, то процесс перехода необходимо выполнить в несколько этапов пока не будет достигнут нужный раздел.
- Мы находимся в корне и указываем, что хотим переместиться на один пункт вглубь меню в раздел ip .
- Мы оказываемся в разделе /ip и указываем, что хотим переместиться на один пункт вглубь меню в раздел firewall .
- Мы оказываемся в разделе /ip/firewall и указываем, что хотим переместиться на один пункт в глубь меню в раздел filter .
- Мы оказываемся в разделе /ip/firewall/filter .
Перемещение на два и более пунктов за один раз
Для перемещения сразу в нужный раздел необязательно делать это пошагово. Это можно сделать указав сразу более одного пункта меню за один раз.
- Мы находимся в корне и указываем, что хотим переместиться сразу в раздел ip/firewall/filter .
- Мы оказываемся сразу в разделе /ip/firewall/filter .
Перемещение между пунктами меню, не связанными друг с другом напрямую
Для перемещения в пункт меню, который не является вложенным относительно текущего расположения необходимо указать знак корня / до указания пути по которому необходимо выполнить переход. Использование этого знака даст понять операционной системе, что точкой отсчета пути будет являться корень, а не текущий раздел.
- Мы находимся в разделе /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 и указываем путь / .
- Мы оказываемся в корне.
Перемещение по меню в обратном направлении (назад к корню)
Для перемещения по иерархической структуре в обратном направлении используется команда .. (две точки).
Перемещение на один пункт за один раз
Для перемещения по иерархической структуре в обратном направлении на один уровень необходимо указать .. (две точки).
- Мы находимся в разделе /ip/firewall/filter и указываем .. для того, чтобы перейти на один уровень наверх (ближе к корню) в раздел /ip/firewall .
- Мы оказываемся в разделе /ip/firewall и указываем .. для того, чтобы перейти на один уровень наверх (ближе к корню) в раздел /ip .
- Мы оказываемся в разделе /ip/ и указываем .. для того, чтобы перейти на один уровень наверх (ближе к корню).
- Мы оказываемся в корне.
Перемещение на два и более пунктов за один раз
Для перемещения по иерархической структуре в обратном направлении более чем на один уровень необходимо указать блоки из двух точек ( .. ) несколько раз. Между разными блоками должны стоять знаки пробела. Количество блоков должно соответствовать количеству уровней на которые необходимо сделать переход назад.
- Мы находимся в разделе /ip/firewall/filter и указываем .. .. .. (три раза по две точки, с пробелами после первого и второго блока из двух точек).
- Мы оказываемся в корне.
Полезные материалы по MikroTik
Встроенные средства помощи
Способы получения помощи
В консоли MikroTik RouterOS имеются встроенные средства помощи, которые так же являются контекстно-ориентированными. Для получения помощи можно использовать:
- Однократное и двукратное нажатие клавиши Tab
- в начале строки указания команды,
- после пробела после команды,
- сразу после части команды без пробела.
Клавиша Tab
Использование клавиши Tab в начале строки или после пробела
После первого нажатия на Tab в консоли будет выведен список доступных команд из «основного» списка. В приведенном ниже примере показан список команд, которые доступны из корня.
После второго нажатия на Tab в консоли будет выведен список доступных команд для встроенного скриптового языка. В приведенном ниже примере показан список команд скриптового языка, которые доступны из корня.
В приведенном ниже примере показан список команд из «основного» списка, которые доступны из раздела /ip/firewall/filter .
В приведенном ниже примере показан список команд из «основного» списка, которые доступны для команды add из раздела /ip/firewall/filter .
Использование клавиши Tab без пробела после указания части команды
Клавишу Tab можно нажать сразу после введенной части команды (без пробела). В этом случае выйдет подсказка, которая будет зависеть от конкретной ситуации: есть продолжение или его нет. Если оно есть, то оно уникальное или нет.
В случае неуникальной части команды
На букву «p» начинается три подчиненных подраздела (partition, port и ppp), две «обычные» команды (password и ping) и три команды скриптового языка (parse, pick и put).
Первое нажатие Tab результата не принесло.
Второе нажатие Tab показало доступные пути и «обычные» команды, которые начинаются с буквы «p» и не показало ни одной команды скриптового языка.
В случае уникальной части команды
Ситуация № 1
На букву «d» начинается один подчиненный подраздел (disk), не начинается ни одна «обычная» команда и начинается две команды скриптового языка (delay и do);
Первое нажатие клавиши Tab в результате дало полное написание единственного доступного варианта который начинается на букву «p», из «основного» списка путей и команд.
Ситуация № 2
На букву «w» не начинается ни один подраздел и ни одна команда из «обычного» меню и начинается одна команда скриптового языка (while). Первое нажатие клавиши Tab в результате дало полное написание единственного доступного варианта который начинается на букву «w», из списка команд скриптового языка.
Ситуация № 3
На букву «y» не начинается ни один подраздел и ни одна команда из «обычного» меню и не начинается ни одна команда скриптового языка, но при этом буква «y» является второй буквой в одно названии пути (system), не является второй буквой ни у одной из «обычных» команд и является второй буквой у одной команды скриптового языка (typeof). Первое нажатие клавиши Tab в результате дало полное написание единственного доступного варианта который начинается на букву «y», из «основного» списка путей и команд.
Ситуация № 4
На букву «h» не начинается ни один подраздел и ни одна команда из «обычного» меню, но при этом буква «h» встречается в трех командах скриптового языка (foreach, nothing, while). Первое нажатие клавиши Tab результата не дало.
Второе нажатие клавиши Tab показало три варианта из списка команд скриптового языка, которые не начинаются с буквы «h», но при этом содержат ее в имени.
Клавиша F1
С помощью нажатия клавиши F1 при нахождении курсора в самом начале командной строки можно увидеть список команд, доступных из текущего раздела. Разница, по сравнению с использованием клавиши Tab, заключается в том, что с помощью F1 можно увидеть описание части команд.
Пример для корня:
Пример для раздела /ip :
Комбинации клавиш и функциональные клавиши
Перемещение курсора
В консоли MikroTik RouterOS в пределах строки можно перемещать курсор следующими способами:
- Control-\ – разбиение строки на две отдельные строки в месте расположения курсора с последующим отображением второй из двух строк.
- Control+B или ← – перемещение курсора на один знак назад.
- Control+F или → – перемещение курсора на один знак вперед.
- Control+A или клавиша Home – перемещение курсора в начало строки.
- Control+E или клавиша End – перемещение курсора в конец строки.
Манипуляции с текстом
В командной строке MikroTik RouterOS манипуляции с текстом можно выполнять следующими способами:
- Ctrl+C – скопировать выделенный текст.
- Ctrl+V – вставить выделенный текст.
- Ctrl+K – удалить все знаки, начиная со знака, на котором находится курсор, и до конца строки.
- Ctrl+U – удалить все знаки от начала строки и до знака, на котором находится курсор, не считая самого этого знака.
- Delete – удалить знак, на котором находится курсор.
- Ctrl+H или клавиша Backspace – удалить знак перед курсором и сдвинуть курсор на один знак.
Прочие комбинации клавиш
Ниже перечислены прочие возможности консоли MikroTik, которые не были перечислены ранее:
- Ctrl+C – прервать выполнение команды.
- Ctrl+D – завершить сессию и выйти из консоли (поле ввода должно быть пустым).
- Ctrl+L или F5 – очистить экран.
- Ctrl+R или F3 – поиск по истории введенных команд.
- Ctrl+X или F4 – активация/деактивация безопасного режима.
- Ctrl+P или ↑ – перемещение назад по истории команд.
- Ctrl+N или ↓ – перемещение вперед по истории команд.
Функциональные клавиши
- F1 – контекстно ориентированная помощь.
- F2 – не используется.
- F3 – поиск по истории введенных команд.
- F4 – активация/деактивация безопасного режима.
- F5 – очистить экран.
- F6 – переключение между окнами в WinBox.
- F7 – активация/деактивация режима Hot Lock.
- F8 – F12 – не используются.
Ускорение ввода команд
В консоли RouterOS можно ускорить введение команд после того как будет введена уникальная комбинация символов, которая позволит однозначно идентифицировать команду в текущем разделе. Для ускорения ввода команд можно использовать:
- клавишу Tab,
- указание только уникальной части команды,
- режим Hot Lock.
Ниже мы разберем эти способа более подробно.
Клавиша [Tab]
Этот вариант уже разбирался в этой статье ранее, но в несколько ином контексте.
На самом деле была введена следующая последовательность команд ip/f [Tab] f [Tab] . Т.е. всего было выполнено семь нажатий клавиш. Остальная часть была подставлена автоматически.
Указание только уникальной части команды
Сокращение имени пути
- Мы находимся в корне консоли, ввели s и нажали клавишу Enter.
- Система выдала ошибку, т.к. с буквы s начинается более одного наименования пути или команды (snmp, special-login, system).
- Мы ввели sn и нажали клавишу Enter.
- Мы оказываемся в разделе /snmp потому, что комбинация символов «sn» является уникальной и с нее начинается только название раздела system.
- Мы находимся в корне консоли, ввели ip/fi/fi и нажали клавишу Enter.
- Мы оказываемся в разделе /ip/firewall/filter потому, что «ip» – это полное название вложенного раздела, который доступен из корня; первое «fi» является уникальной частью, которая есть только в имени раздела «firewall», который доступен в разделе /ip , а второе «fi» является уникальной частью, которая есть только в имени раздела «filter», который доступен в разделе /ip/firewall .
Приведенный выше пример аналогичен предыдущему, но разница заключается в том, что вместо ip/fi/fi мы указали еще более короткий вариант ip/f/f и система успешно приняла его. Логика принятия такая же как и в предыдущем варианте.
Сокращение команд
Использование уникальной части команды можно применять не только для сокращения названия пути, но и для сокращения команд. Вместо [admin@MikroTik] > ping 10.0.0.1 count 3 size 100 можно указать [admin@MikroTik] > pi 10.1 c 3 si 100 .
Режим Hot Lock
С помощью клавиши F7 в консоли MikroTik RouterOS активируется режим Hot Lock в котором команды автоматически дополняются до полного написания как только будет введен уникальный набор символов, который позволит однозначно идентифицировать эту команду.
- Мы нажали клавишу F7 и затем клавишу Enter.
- Консоль перешла в режим Hot Lock. Об этом свидетельствует изменение > на >> . Если ориентироваться на визуальную выдачу, то может показаться что был введен путь ip/firewall/filter . На на самом деле были введены только следующие символы ip/ff , а все остальное было подставлено автоматически.
В приведенном выше примере мы указали ip/fi . И в итоге был получен нежелательный результат. Символы fi являются уникальными для имени пути firewall в разделе /ip . Но самой короткой уникальной частью является самый первый символ f . Поэтому как только был введен этот символ выдача консоли была автоматически дополнена до ip/firewall/ и после этого был добавлен символ i . А в разделе /ip/firewall нет ничего что начиналось бы на символ i . Именно поэтому на практике режим Hot Lock редко используется из-за того, что для его использования надо уверенно знать уникальные части всех команд.
Полезные материалы по MikroTik
Чек-лист
Список обязательных действий при настройке маршрутизатора MikroTik. Бесплатно через подписку по форме ниже.
Telegram-канал
На Telegram-канале Mikrotik сэнсей можно получить доступ к закрытой информации от официального тренера MikroTik.
Основные операции
Разница между путем, командой, параметром и значением параметра
В оригинальной выдаче командной строки RouterOS для разных элементов используются разные цвета. Пример:
В приведенном выше примере:
- /system/clock – путь,
- set – команда,
- time-zone-name= – параметр, который необходимо задать,
- Europe/Moscow – значение параметра, которое должно быть задано.
Попробуем разобрать разницу между этими элементами на примере:
В приведенном выше примере:
- Руководитель говорит сотруднику – аналогия для «системный администратор настраивает маршрутизатор MikroTik».
- В офисе – путь.
- Подготовь – команда.
- Отчет – параметр № 1.
- В формате pdf – значение параметра «отчет».
- Крайний срок исполнения – параметр № 2.
- Конец дня – значение параметра «крайний срок исполнения».
Для одной команды должен быть указан хотя бы один параметр. Значение параметра указывается после самого параметра и знака равно. Если в значении параметра используется хотя бы один пробел, то все значение должно быть взято в кавычки. Пример: comment=»rule № 1″ .
Выполнение команд из раздела к которому они не относятся
В процессе работы иногда требуется выполнить команду, которая не относится к текущему разделу. При этом переход в соответствующий раздел возможен, но нежелателен. Например, потому что потом опять надо вернуться в исходный раздел. В таких ситуациях надо указать полный путь до интересующей команды, включая знак корня (/). В приведенном ниже примере команда ping выполнена из раздела /ip/route :
Определение номера правила
Для дальнейшего понимания принципа работы с командной строкой MikroTik RouterOS надо понять по какому принципу происходит нумерация правил и как можно определить номер конкретного интересующего нас правила.
В приведенном выше примере в разделе /ip/firewall/filter с помощью команды print мы получили информацию о списке имеющихся правил и их номерах. Учтите, что в жизни такие правила не имеют никакого смысла. Они сделаны в таком виде исключительно для удобства обучения. Первое правило имеет комментарий «rule_1», второе правило имеет комментарий «rule_2» и т.д. Но это именно комментарий к правилу, а не номер, который будет учитывать операционная система. Все правила нумеруются по порядку начиная с нуля: 0, 1, 2, 3, 4 и т. д. В итоге самое первое правило с комментарием «rule 1» с точки зрения RouterOS имеет номер 0, второе правило с комментарием «rule 2» с точки зрения операционной системы имеет номер 1, и т.д. Это очень важно учитывать и при настройке и через CL и через GUI, и при общении с коллегами. Если это не учитывать, то может получиться, что один человек имел ввиду номер в «человеческом» исчислении, а другой человек имел ввиду номер в «машинном» исчислении. Результат такого недопонимания может быть очень плачевным.
Список основных команд
- add – добавить правило.
- remove – удалить правило.
- move – переместить правило.
- set – изменить значение параметра.
- unset – удалить значение параметра.
Добавление нового правила
Для создания новых правил используется команда add .
В конце списка
По умолчанию любое вновь созданное правило добавляется в конец списка.
- Мы находимся в разделе /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 в котором указывается номер правила перед которым должно быть помещено вновь создаваемое правило.
- В выдаче команды print мы видим, что отсутствует правило с комментарием «rule_4».
- Мы указываем, что хотим создать новое правило с комментарием «rule_4» и сразу поместить его до текущего правила с номером 1 ( place-before=1 ).
- В выдаче команды print мы видим, что созданное на предыдущем шаге правило с комментарием «rule_4» сразу было помещено на место с номером 1, а предыдущее правило, которое ранее имело номер 1 и комментарий «rule_2» переместилось на позицию с номером 2.
Перемещение существующего правила
Для перемещения правил используется команда move и ее параметры numbers и destination . В параметре numbers задается какое правило или правила мы хотим переместить, а в параметре destination задается позиция куда должно быть перенесено правило. Итоговый номер перенесенного правила зависит от того в каком направлении производится перемещение: вверх или вниз по списку.
Перемещение правила ниже по списку
В любое место кроме последнего
Если правило должно быть перемещено ниже по списку, то в параметре destination необходимо указать номер правила перед которым должно быть помещено перемещаемое правило.
- В выдаче команды print мы видим, что правило с комментарием «rule_4» имеет номер 1.
- С помощью команды move мы указываем, что надо взять правило с номером 1 ( numbers=1 ) и поместить его перед правилом номер 3 ( destination=3 ).
- В выдаче команды print мы видим, что правило, которое ранее имело номер 1 и комментарий «rule_4», было помещено перед правилом с номером 3 и комментарием «rule_3».
На последнее место
Если правило должно быть перемещено в самый конец списка, то необходимо не указывать значение параметра destination . Т.е. запись должна выглядеть так: destination= .
- В выдаче команды print мы видим, что правило с комментарием «rule_4» имеет номер 2.
- С помощью команды move мы указываем, что надо взять правило с номером 2 ( numbers=2 ) и поместить в самый конец списка ( destination= ).
- В выдаче команды print мы видим, что правило с комментарием «rule_4», которое ранее имело номер 2, было поставлено в самый конец списка, т.е. теперь оно имеет номер 3.
Перемещение правила выше по списку
Если правило должно быть перемещено выше по списку, то в параметре destination указывается номер, который должно занять перемещаемое правило.
- В выдаче команды print мы видим, что правило с комментарием «rule_4» имеет номер 3.
- С помощью команды move мы указываем, что мы хотим взять правило с номером 3 ( numbers=3 ) и поместить его на место правила с номером 1 ( destination=1 ).
- В выдаче команды print мы видим, что правило с комментарием «rule_4» было перемещено на место правила с номером 1.
Перемещение более, чем одного правила
С помощью команды move можно переместить более одного правила за один раз. Для этого в в параметре numbers надо через запятую указать номера правил, которые мы хотим переместить. Правила переносятся в том порядке в котором они указаны в параметре numbers .
Перемещение правил с номерами, идущими по порядку
- В выдаче команды print мы видим, что правила с комментариями «rule_2» и «rule_3» имеют номера 2 и 3 соответственно.
- С помощью команды move мы указываем, что мы хотим взять правила с номерами 2 и 3 ( numbers=2,3 ) и поместить их на место правила с номером 1 ( destination=1 ).
- В выдаче команды print мы видим, что правила с комментариями «rule_2» и «rule_3» были перемещены и получили номера 1 и 2 соответственно.
Перемещение правил с номерами, идущими не по порядку
- В выдаче команды 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 . За один раз можно удалить как одно, так и более одного правил.
- В выдаче команды 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= определить интересующее правило, а далее необходимо указать интересующий параметр и его значение.
- В выдаче команды 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= определить интересующее правило, а далее необходимо указать интересующий параметр и его значение.
- В выдаче команды print мы видим, что у правила с номером 2 указан комментарий «rule_4».
- С помощью команды set мы указываем, что у правила с номером 2 ( numbers=2 ) необходимо изменить значение параметра comment на «rule_3» ( comment=rule_3 ).
- В выдаче команды print мы видим, что у правила с номером 2 комментарий изменился на «rule_3».
Удаление значения параметра
Для удаления значения параметра используется команда unset , но в некоторых случаях можно использовать частный случай команды set: set=»» .
С помощью параметра unset
- В выдаче команды print мы видим, что у правила номер 2 есть настройка dst-address=8.8.8.8 .
- С помощью команды unset мы указываем, что у правила с номером 2 ( numbers=2 ) необходимо удалить значение параметра dst-address .
- В выдаче команды print мы видим, что у правила номер 2 пропала настройка dst-address=8.8.8.8 .
С помощью параметра set
В некоторых случаях удалить значение параметра можно с помощью команды set=»» .
- В выдаче команды print мы видим, что у правила номер 3 указан комментарий «rule_6».
- С помощью команды set мы указываем, что у правила с номером 3 ( numbers=2 ) необходимо указать пустой комментарий ( comment=»» ).
- В выдаче команды print мы видим, что у правила номер 3 больше нет комментария.
Включение и выключение чего-либо
В заголовке раздела не случайно написано «чего-либо», т.к. включать и выключать можно: правила, интерфейсы или функционал. Включение и выключение производится с помощью параметров disabled и enabled . Команда disabled встречается намного чаще. Важно помнить, что в зависимости от того какая именно команда используется один и тот же параметр (yes или no) будет иметь прямо противоположное значение.
Параметр disabled
Disabled – команда включения или выключения чего-либо при наличии нумерации. Возможные значения:
- =yes выключено ,
- =no включено .
- В выдаче команды 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 выключено .
- Мы находимся в разделе с настройками L2TP-сервера ( /interface/l2tp-server/server ) и в выдаче команды print можно увидеть, что нумерация не используется, а сам L2TP-сервер выключен ( enabled: no ).
- С помощью команды set мы указываем, что необходимо включить L2TP-сервер ( enabled=yes ).
- В выдаче команды print мы видим, что L2TP-сервер активировался ( enabled: yes ).
Почему нельзя использовать кириллицу
Консоль RouterOS не примет кириллические символы. Но это ограничение можно обойти, если использовать графический интерфейс. В WinBox кириллические символы использовать получится. Проблема проявится, когда надо будет такую конфигурацию проанализировать в консольном режиме. В приведенном ниже режиме выполнены команды print и export после того как в GUI для правила номер 3 был задан комментарий «правило_3».
- В выдаче команды print мы видим, что у правила номер 3 не отображается та часть комментария в которой были использованы кириллические символы.
- С выдаче команды export (команда будет изучена позже) мы видим, что у последнего правила вместо кириллических символов используется непонятная кодировка.
ВАЖНО: вся приведенная ниже информация является черновиками будущего продолжения статьи.
Как перестать бояться работать в командной строке (Этап 2. Чтение конфигураций)
Просмотр конфигурации
Команда export. Перенос выдачи на другую строку.
Команда find
Команда print
- print — показывает всю информацию, которая доступна из определенного уровня команд. Таким образом, /system clock print показывает системные дату и время, /ip route print показывает все маршруты и т.д. Если есть список элементов в текущем уровне, и они не только для чтения, то есть вы можете изменить или удалить их (пример только для чтения элемента списка или системной истории, которая показывает историю выполненных действий), а затем напечатать команду также правопреемников номера, которые используются всеми командами, которые работают с элементами в этом списке.
- from — показать только указанные элементы, в том же порядке, в котором они даны.
- where — показать только те элементы, которые соответствуют указанным критериям. Синтаксис свойства where аналогичен команде find.
- brief — заставляет команду печати использовать табличную форму вывода
- detail — заставляет команду печати использовать форму вывода property=value(свойство=значение)
- count-only — показывает количество элементов
- file — печатает содержимое конкретного подменю в файл на маршрутизаторе.
- interval — обновление вывода команды print через интервал, заданный в секундах.
- oid — печатает значение OID для свойств, которые доступны из SNMP
- without-paging — печатает вывод без остановки после каждого заполненного экрана.
Результаты последних команд print запоминаются и, таким образом, один раз назначенные, номера позиций можно использовать даже после того, как применены операции add, remove and move.
Вы не должны использовать команду print перед обращением к элементам по их именам. Как правило, названия элементов являются более «стабильными», чем цифры, а также более информативными, так что отдавайте предпочтение их номерам при написании консольных скриптов.
Многие из уровней команды работают с массивами элементов: интерфейсы, маршруты, пользователей и т.д. Такие массивы отображаются как списки. У каждого элемента в списке есть номер элемента с последующим флагом и значениями параметров.
Прочие команды
- quit – завершение сессии.
- edit – редактировать значение в текстовом редакторе.
- edit — эта команда связана с командой set. Она может быть использована для редактирования значений свойств, которые содержат большое количество текста, например, скрипты, но она работает со всеми редактируемыми свойствами. В зависимости от возможностей терминала, либо полноэкранный редактор, или один редактор строки запускается для редактирования значения указанного свойства.
- add — эта команда обычно имеет все те же аргументы, как set, кроме аргумента с номером элемента. Это добавляет новый элемент со значениями, которые Вы определили, как правило, в конце списка позиций, в тех местах, где порядок элементов имеет значение. Есть некоторые необходимые свойства, которые вы должны поставить, например, как интерфейс для нового адреса, в то время как для других свойств устанавливаются значения по умолчанию, если вы явно не указали их.
- Общие параметры:
- copy-from — копировать параметры из уже существующего элемента. Если вы не хотите, сделать точную копию, то вы можете указать новые значения для некоторых свойств. При копировании элементов, которые имеют имена, вы, как правило, должны дать новое имя копии;
- добавляет команду возврата внутреннего номера элемента который был добавлен.
Прочее
Указать что не изучаем что значат различные настройки, например у файрвола. А изучаем те команды, которые изучаем.
С помощью move и можно указать просто первый и второй элементы без указания numbers= и place-before? Аналогично для move.
Некоторые списки имеют элементы с конкретными именами, заданными для каждого из них. Например для пунктов interface или user. Там вы можете использовать имена элементов вместо номера позиций. Вы не должны использовать команду print перед обращением к элементам по их именам. Как правило, названия элементов являются более «стабильными», чем цифры, а также более информативными, так что отдавайте предпочтение их номерам при написании консольных скриптов.
кстати, две точки (..) можно использовать и для перехода в соседний раздел в один присест. юникс-стайл же) [admin@mt-test] /ip firewall filter> ..nat [admin@mt-test] /ip firewall nat>
- Общие параметры: