The console is used for accessing the MikroTik Router’s configuration and management features using text terminals, either remotely using a serial port, telnet, SSH, console screen within WinBox, or directly using monitor and keyboard. The console is also used for writing scripts. This manual describes the general console operation principles. Please consult the Scripting Manual on some advanced console commands and on how to write scripts.
Login Options
Console login options enable or disable various console features like color, terminal detection, and many other.
Additional login parameters can be appended to the login name after the ‘+’ sign.
login_name ::= user_name [ '+' parameters ] parameters ::= parameter [ parameters ] parameter ::= [ number ] 'a'..'z' number ::= '0'..'9' [ number ]
If the parameter is not present, then the default value is used. If the number is not present then the implicit value of the parameter is used.
Example: admin+c80w — will disable console colors and set terminal width to 80.
Param | Default | Implicit | Description |
---|---|---|---|
«w» | auto | auto | Set terminal width |
«h» | auto | auto | Set terminal height |
«c» | on | off | disable/enable console colors |
«t» | on | off | Do auto-detection of terminal capabilities |
«e» | on | off | Enables «dumb» terminal mode |
The login process will display the MikroTik banner and short help after validating the user name and password.
MMM MMM KKK TTTTTTTTTTT KKK MMMM MMMM KKK TTTTTTTTTTT KKK MMM MMMM MMM III KKK KKK RRRRRR OOOOOO TTT III KKK KKK MMM MM MMM III KKKKK RRR RRR OOO OOO TTT III KKKKK MMM MMM III KKK KKK RRRRRR OOO OOO TTT III KKK KKK MMM MMM III KKK KKK RRR RRR OOOOOO TTT III KKK KKK MikroTik RouterOS 6.22 (c) 1999-2014 https://www.mikrotik.com/ [?] Gives the list of available commands command [?] Gives help on the command and list of arguments [Tab] Completes the command/word. If the input is ambiguous, a second [Tab] gives possible options / Move up to base level .. Move up one level /command Use command at the base level
After the banner can be printed other important information, like system note set by another admin, the last few critical log messages, demo version upgrade reminder, and default configuration description.
For example, the demo license prompt and last critical messages are printed
UPGRADE NOW FOR FULL SUPPORT ---------------------------- FULL SUPPORT benefits: - receive technical support - one year feature support - one year online upgrades (avoid re-installation and re-configuring your router) To upgrade, register your license "software ID" on our account server www.mikrotik.com Current installation "software ID": ABCD-456 Please press "Enter" to continue! dec/10/2007 10:40:06 system,error,critical login failure for user root from 10.0.0.1 via telnet dec/10/2007 10:40:07 system,error,critical login failure for user root from 10.0.0.1 via telnet dec/10/2007 10:40:09 system,error,critical login failure for user test from 10.0.0.1 via telnet
Command Prompt
At the end of the successful login sequence, the login process prints a banner that shows the command prompt, and hands over control to the user.
Default command prompt consists of user name, system identity, and current command path />
For example, change the current path from the root to the interface then go back to the root
[admin@MikroTik] > interface [enter] [admin@MikroTik] /interface> / [enter] [admin@MikroTik] >
Use up arrow to recall previous commands from command history (commands that added sensitive data, like passwords, will not be available in the history), TAB key to automatically complete words in the command you are typing, ENTER key to execute the command, Control-C to interrupt currently running command and return to prompt and ? to display built-in help, in RouterOS v7, F1 has to be used instead.
The easiest way to log out of the console is to press Control-D at the command prompt while the command line is empty (You can cancel the current command and get an empty line with Control-C, so Control-C followed by Control-D will log you out in most cases).
It is possible to write commands that consist of multiple lines. When the entered line is not a complete command and more input is expected, the console shows a continuation prompt that lists all open parentheses, braces, brackets, and quotes, and also trailing backslash if the previous line ended with backslash-white-space.
[admin@MikroTik] > { {... :put (\ {(\... 1+2)} 3
When you are editing such multiple line entries, the prompt shows the number of current lines and total line count instead of the usual username and system name.
line 2 of 3> :put (\
Sometimes commands ask for additional input from the user. For example, the command ‘/password
‘ asks for old and new passwords. In such cases, the prompt shows the name of the requested value, followed by colon and space.
[admin@MikroTik] > /password old password: ****** new password: ********** retype new password: **********
Hierarchy
The console allows the configuration of the router’s settings using text commands. Since there is a lot of available commands, they are split into groups organized in a way of hierarchical menu levels. The name of a menu level reflects the configuration information accessible in the relevant section.
For example, you can issue the /ip route print
command:
[admin@MikroTik] > /ip route print Flags: D - dynamic; X - disabled, I - inactive, A - active; C - connect, S - static, r - rip, b - bgp, o - ospf, d - dhcp, v - vpn # DST-ADDRESS GATEWAY DISTANCE 0 XS 4.4.4.4 10.155.101.1 D o 0.0.0.0/0 10.155.101.1 110 1 AS 0.0.0.0/0 10.155.101.1 1 D b 1.0.4.0/24 10.155.101.1 20 D b 1.0.4.0/24 10.155.101.1 20 DAb 1.0.4.0/24 10.155.101.1 20 [admin@MikroTik] >
Instead of typing `/ip route` path before each command, the path can be typed only once to move into this particular branch of the menu hierarchy. Thus, the example above could also be executed like this:
[admin@MikroTik] > /ip route [admin@MikroTik] /ip/route> print Flags: D - dynamic; X - disabled, I - inactive, A - active; C - connect, S - static, r - rip, b - bgp, o - ospf, d - dhcp, v - vpn # DST-ADDRESS GATEWAY DISTANCE 0 XS 4.4.4.4 10.155.101.1 D o 0.0.0.0/0 10.155.101.1 110 1 AS 0.0.0.0/0 10.155.101.1 1 D b 1.0.4.0/24 10.155.101.1 20 D b 1.0.4.0/24 10.155.101.1 20 DAb 1.0.4.0/24 10.155.101.1 20 [admin@MikroTik] >
Each word in the path can be separated by space (as in the example above) or by «/»
[admin@MikroTik] > /ip/route/ [admin@MikroTik] /ip/route> print Flags: D - dynamic; X - disabled, I - inactive, A - active; C - connect, S - static, r - rip, b - bgp, o - ospf, d - dhcp, v - vpn # DST-ADDRESS GATEWAY DISTANCE 0 XS 4.4.4.4 10.155.101.1 D o 0.0.0.0/0 10.155.101.1 110 1 AS 0.0.0.0/0 10.155.101.1 1 D b 1.0.4.0/24 10.155.101.1 20 D b 1.0.4.0/24 10.155.101.1 20 DAb 1.0.4.0/24 10.155.101.1 20 [admin@MikroTik] >
Notice that the prompt changes in order to reflect where you are located in the menu hierarchy at the moment. To move to the top level again, type » / «
[admin@MikroTik] > ip route [admin@MikroTik] /ip/route> / [admin@MikroTik] >
To move up one command level, type » .. «
[admin@MikroTik] /ip/route> .. [admin@MikroTik] /ip>
You can also use / and .. to execute commands from other menu levels without changing the current level:
[admin@MikroTik] /ip/route> /ping 10.0.0.1 10.0.0.1 ping timeout 2 packets transmitted, 0 packets received, 100% packet loss [admin@MikroTik] /ip/firewall/nat> .. service-port print Flags: X - disabled, I - invalid # NAME PORTS 0 ftp 21 1 tftp 69 2 irc 6667 3 h323 4 sip 5 pptp [admin@MikroTik] /ip/firewall/nat>
Item Names and Numbers
Many of the command levels operate with arrays of items: interfaces, routes, users, etc. Such arrays are displayed in similarly-looking lists. All items in the list have an item number followed by flags and parameter values.
To change the properties of an item, you have to use the set command and specify the name or number of the item.
Item Names
Some lists have items with specific names assigned to each of them. Examples are interface or user levels. There you can use item names instead of item numbers.
You do not have to use the print command before accessing items by their names, which, as opposed to numbers, are not assigned by the console internally, but are properties of the items. Thus, they would not change on their own. However, there are all kinds of obscure situations possible when several users are changing the router’s configuration at the same time. Generally, item names are more «stable» than the numbers, and also more informative, so you should prefer them to numbers when writing console scripts.
Item Numbers
Item numbers are assigned by the print command and are not constant — it is possible that two successive print commands will order items differently. But the results of the last print commands are memorized and, thus, once assigned, item numbers can be used even after add, remove and move operations (since version 3, move operation does not renumber items). Item numbers are assigned on a per session basis, they will remain the same until you quit the console or until the next print command is executed. Also, numbers are assigned separately for every item list, so ip address print
will not change the numbering of the interface list.
You can specify multiple items as targets to some commands. Almost everywhere, where you can write the number of items, you can also write a list of numbers.
[admin@MikroTik] > interface print Flags: X - disabled, D - dynamic, R - running # NAME TYPE MTU 0 R ether1 ether 1500 1 R ether2 ether 1500 2 R ether3 ether 1500 3 R ether4 ether 1500 [admin@MikroTik] > interface set 0,1,2 mtu=1460 [admin@MikroTik] > interface print Flags: X - disabled, D - dynamic, R - running # NAME TYPE MTU 0 R ether1 ether 1460 1 R ether2 ether 1460 2 R ether3 ether 1460 3 R ether4 ether 1500 [admin@MikroTik] >
General Commands
There are some commands that are common to nearly all menu levels, namely: print, set, remove, add, find, get, export, enable, disable, comment, move. These commands have similar behavior throughout different menu levels.
Property | Description |
---|---|
add | This command usually has all the same arguments as a set, except the item number argument. It adds a new item with the values you have specified, usually at the end of the item list, in places where the order of items is relevant. There are some required properties that you have to supply, such as the interface for a new address, while other properties are set to defaults unless you explicitly specify them.
Common Parameters
Return Values
|
edit | This command is associated with the set command. It can be used to edit values of properties that contain a large amount of text, such as scripts, but it works with all editable properties. Depending on the capabilities of the terminal, either a full-screen editor or a single line editor is launched to edit the value of the specified property. |
find | The find command has the same arguments as a set, plus the flag arguments like disabled or active that take values yes or no depending on the value of the respective flag. To see all flags and their names, look at the top of the print command’s output. The find command returns internal numbers of all items that have the same values of arguments as specified. |
move | Changes the order of items in the list. Parameters:
|
Shows all information that’s accessible from a particular command level. Thus, /system clock print shows the system date and time, /ip route print shows all routes etc. If there\’s a list of items in the current level and they are not read-only, i.e. you can change/remove them (example of read-only item list is /system history , which shows a history of executed actions), then print command also assigns numbers that are used by all commands that operate with items in this list.
Common Parameters:
|
|
remove | Removes specified item(-s) from a list. |
set | Allows you to change values of general parameters or item parameters. The set command has arguments with names corresponding to values you can change. Use ? or double Tab to see a list of all arguments. If there is a list of items in this command level, then the set has one action argument that accepts the number of items (or list of numbers) you wish to set up. This command does not return anything. |
Input Modes
It is possible to switch between several input modes:
- Normal mode — indicated by normal command prompt.
- Safe mode — safe mode is indicated by the word SAFE after the command prompt. In this mode, the configuration is saved to disk only after the safe mode is turned off. Safe mode can be turned on/off with Ctrl+X or F4. Read more >>
- Hot-lock mode — indicated by additional yellow >. Hot-lock mode autocompletes commands and can be turned on/off with F7
Quick Typing
There are two features in the console that help entering commands much quicker and easier — the [Tab] key completions, and abbreviations of command names. Completions work similarly to the bash shell in UNIX. If you press the [Tab] key after a part of a word, the console tries to find the command within the current context that begins with this word. If there is only one match, it is automatically appended, followed by a space:
/inte[Tab]_ becomes /interface _
If there is more than one match, but they all have a common beginning, which is longer than that what you have typed, then the word is completed to this common part, and no space is appended:
/interface set e[Tab]_ becomes /interface set ether_
If you’ve typed just the common part, pressing the tab key once has no effect. However, pressing it for the second time shows all possible completions in compact form:
[admin@MikroTik] > interface set e[Tab]_ [admin@MikroTik] > interface set ether[Tab]_ [admin@MikroTik] > interface set ether[Tab]_ ether1 ether5 [admin@MikroTik] > interface set ether_
The [Tab] key can be used almost in any context where the console might have a clue about possible values — command names, argument names, arguments that have only several possible values (like names of items in some lists or name of the protocol in firewall and NAT rules). You cannot complete numbers, IP addresses, and similar values.
Another way to press fewer keys while typing is to abbreviate command and argument names. You can type only the beginning of the command name, and, if it is not ambiguous, the console will accept it as a full name. So typing:
[admin@MikroTik] > pi 10.1 c 3 si 100
equals to:
[admin@MikroTik] > ping 10.0.0.1 count 3 size 100
It is possible to complete not only the beginning, but also any distinctive sub-string of a name: if there is no exact match, the console starts looking for words that have string being completed as first letters of a multiple word name, or that simply contain letters of this string in the same order. If a single such word is found, it is completed at the cursor position. For example:
[admin@MikroTik] > interface x[TAB]_ [admin@MikroTik] > interface export _ [admin@MikroTik] > interface mt[TAB]_ [admin@MikroTik] > interface monitor-traffic _
Console Search
Console search allows performing keyword search through the list of RouterOS menus and the history. The search prompt is accessible with the [Ctrl+r] shortcut.
Internal Chat System
RouterOS console has a built-in internal chat system. This allows remotely located admins to talk to each other directly in RouterOS CLI. To start the conversation prefix the intended message with the # symbol, anyone who is logged in at the time of sending the message will see it.
[admin@MikroTik] > # ready to break internet? [admin@MikroTik] > fake_admin: i was born ready [admin@MikroTik] >
[fake_admin@MikroTik] > admin: ready to break internet? [fake_admin@MikroTik] > # i was born ready [fake_admin@MikroTik] >
List of Keys
Key | Description |
---|---|
Control-C | keyboard interrupt |
Control-D | log out (if an input line is empty) |
Control-K | clear from the cursor to the end of the line |
Control-U | clear from the cursor to the beginning of the line |
Control-X or F4 | toggle safe mode |
F7 | toggle hot lock mode mode |
Control-R or F3 | toggle console search |
F6 | toggle cellar |
F1 | show context-sensitive help. |
Tab | perform line completion. When pressed a second time, show possible completions. |
# | Send a message to an internal chat system |
Delete | remove character at the cursor |
Control-H or Backspace | removes character before cursor and moves the cursor back one position. |
Control-\ | split line at cursor. Insert newline at the cursor position. Display second of the two resulting lines. |
Control-B or Left | move cursor backward one character |
Control-F or Right | move cursor forward one character |
Control-P or Up | go to the previous line. If this is the first line of input then recall previous input from history. |
Control-N or Down | go to the next line. If this is the last line of input then recall the next input from the history |
Control-A or Home | move the cursor to the beginning of the line. If the cursor is already at the beginning of the line, then go to the beginning of the first line of the current input |
Control-E or End | move the cursor to the end of the line. If the cursor is already at the end of the line, then move it to the end of the last line of the current input |
Control-L or F5 | reset terminal and repaint screen |
Полезные материалы по MikroTik
Введение
Эта статья содержит много практических примеров использования консоли 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:
[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 v7. Но любая информация из статьи применима и для консоли RouteroOS v6.
Информация об имени пользователя и имени устройства
После получения доступа к консоли начинает отображаться приглашение аналогичное тому, которое приведено ниже. В квадратных скобках [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
и указываем.. .. ..
(три раза по две точки, с пробелами после первого и второго блока из двух точек). - Мы оказываемся в корне.
Полезные материалы по MikroTik
Встроенные средства помощи
Способы получения помощи
В консоли MikroTik RouterOS имеются встроенные средства помощи, которые так же являются контекстно-ориентированными. Для получения помощи можно использовать:
- Однократное и двукратное нажатие клавиши Tab
- в начале строки указания команды,
- после пробела после команды,
- сразу после части команды без пробела.
- Клавишу F1.
Клавиша Tab
Использование клавиши Tab в начале строки или после пробела
После первого нажатия на Tab в консоли будет выведен список доступных команд из «основного» списка. В приведенном ниже примере показан список команд, которые доступны из корня.
[admin@MikroTik] > [Tab]
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
После второго нажатия на Tab в консоли будет выведен список доступных команд для встроенного скриптового языка. В приведенном ниже примере показан список команд скриптового языка, которые доступны из корня.
[admin@MikroTik] > [Tab]
/ error if put time toip6
: execute len resolve timestamp tonum
environment find local return toarray tostr
terminal for nothing rndnum tobool totime
delay foreach parse rndstr toid typeof
do global pick set toip while
В приведенном ниже примере показан список команд из «основного» списка, которые доступны из раздела /ip/firewall/filter
.
[admin@MikroTik] /ip/firewall/filter> [Tab]
add disable enable find print reset reset-counters-all unset
comment edit export move remove reset-counters set
В приведенном ниже примере показан список команд из «основного» списка, которые доступны для команды add
из раздела /ip/firewall/filter
.
[admin@MikroTik] /ip/firewall/filter> add [Tab]
action dst-address in-bridge-port-list log-prefix place-before src-address-list
address-list dst-address-list in-interface nth port src-address-type
address-list-timeout dst-address-type in-interface-list out-bridge-port priority src-mac-address
chain dst-limit ingress-priority out-bridge-port-list protocol src-port
comment dst-port ipsec-policy out-interface psd tcp-flags
connection-... fragment ipv4-options out-interface-list random tcp-mss
content hotspot jump-target p2p realm time
copy-from hw-offload layer7-protocol packet-mark reject-with tls-host
disabled icmp-options limit packet-size routing-mark ttl
dscp in-bridge-port log per-connection-classifier src-address
Использование клавиши Tab без пробела после указания части команды
Клавишу Tab можно нажать сразу после введенной части команды (без пробела). В этом случае выйдет подсказка, которая будет зависеть от конкретной ситуации: есть продолжение или его нет. Если оно есть, то оно уникальное или нет.
В случае неуникальной части команды
На букву «p» начинается три подчиненных подраздела (partition, port и ppp), две «обычные» команды (password и ping) и три команды скриптового языка (parse, pick и put).
Первое нажатие Tab результата не принесло.
[admin@MikroTik] > p[Tab]
Второе нажатие Tab показало доступные пути и «обычные» команды, которые начинаются с буквы «p» и не показало ни одной команды скриптового языка.
[admin@MikroTik] > p[Tab]
partitions port ppp password ping
В случае уникальной части команды
Ситуация № 1
На букву «d» начинается один подчиненный подраздел (disk), не начинается ни одна «обычная» команда и начинается две команды скриптового языка (delay и do);
Первое нажатие клавиши Tab в результате дало полное написание единственного доступного варианта который начинается на букву «p», из «основного» списка путей и команд.
[admin@MikroTik] > d[Tab]
[admin@MikroTik] > disk/
Ситуация № 2
На букву «w» не начинается ни один подраздел и ни одна команда из «обычного» меню и начинается одна команда скриптового языка (while). Первое нажатие клавиши Tab в результате дало полное написание единственного доступного варианта который начинается на букву «w», из списка команд скриптового языка.
[admin@MikroTik] > w[Tab]
[admin@MikroTik] > while
Ситуация № 3
На букву «y» не начинается ни один подраздел и ни одна команда из «обычного» меню и не начинается ни одна команда скриптового языка, но при этом буква «y» является второй буквой в одно названии пути (system), не является второй буквой ни у одной из «обычных» команд и является второй буквой у одной команды скриптового языка (typeof). Первое нажатие клавиши Tab в результате дало полное написание единственного доступного варианта который начинается на букву «y», из «основного» списка путей и команд.
[admin@MikroTik] > y[Tab]
[admin@MikroTik] > system/
Ситуация № 4
На букву «h» не начинается ни один подраздел и ни одна команда из «обычного» меню, но при этом буква «h» встречается в трех командах скриптового языка (foreach, nothing, while). Первое нажатие клавиши Tab результата не дало.
[admin@MikroTik] > h[Tab]
Второе нажатие клавиши Tab показало три варианта из списка команд скриптового языка, которые не начинаются с буквы «h», но при этом содержат ее в имени.
[admin@MikroTik] > h[Tab]
foreach nothing while
Клавиша F1
С помощью нажатия клавиши F1 при нахождении курсора в самом начале командной строки можно увидеть список команд, доступных из текущего раздела. Разница, по сравнению с использованием клавиши Tab, заключается в том, что с помощью F1 можно увидеть описание части команд.
Пример для корня:
[admin@MikroTik] > [F1]
beep --
blink --
caps-man --
certificate -- Certificate management
console --
delay -- does nothing for a while
disk --
do -- executes command
environment -- list of all variables
error -- make error value
Часть выдачи пропущена
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
Пример для раздела /ip
:
[admin@GW] /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
Часть выдачи пропущена
vrf --
export -- Print or save an export script that can be used to restore
configuration
Press F1 for general console usage help
Комбинации клавиш и функциональные клавиши
Перемещение курсора
В консоли 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]
Этот вариант уже разбирался в этой статье ранее, но в несколько ином контексте.
[admin@MikroTik] > ip/firewall/filter
На самом деле была введена следующая последовательность команд ip/f[Tab]f[Tab]
. Т.е. всего было выполнено семь нажатий клавиш. Остальная часть была подставлена автоматически.
Указание только уникальной части команды
Сокращение имени пути
1 [admin@MikroTik] > s 2 bad command name s (line 1 column 1) 3 [admin@MikroTik] > sn 4 [admin@MikroTik] /snmp>
- Мы находимся в корне консоли, ввели
s
и нажали клавишу Enter. - Система выдала ошибку, т.к. с буквы
s
начинается более одного наименования пути или команды (snmp, special-login, system). - Мы ввели
sn
и нажали клавишу Enter. - Мы оказываемся в разделе
/snmp
потому, что комбинация символов «sn» является уникальной и с нее начинается только название раздела system.
[admin@MikroTik] > ip/fi/fi [admin@MikroTik] /ip/firewall/filter>
- Мы находимся в корне консоли, ввели
ip/fi/fi
и нажали клавишу Enter. - Мы оказываемся в разделе
/ip/firewall/filter
потому, что «ip» – это полное название вложенного раздела, который доступен из корня; первое «fi» является уникальной частью, которая есть только в имени раздела «firewall», который доступен в разделе/ip
, а второе «fi» является уникальной частью, которая есть только в имени раздела «filter», который доступен в разделе/ip/firewall
.
[admin@MikroTik] > ip/f/f [admin@MikroTik] /ip/firewall/filter>
Приведенный выше пример аналогичен предыдущему, но разница заключается в том, что вместо 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 в котором команды автоматически дополняются до полного написания как только будет введен уникальный набор символов, который позволит однозначно идентифицировать эту команду.
1 [admin@MikroTik] > [F7]
2 [admin@MikroTik] >> ip/firewall/filter
3 [admin@MikroTik] ip/firewall/filter>>
- Мы нажали клавишу F7 и затем клавишу Enter.
- Консоль перешла в режим Hot Lock. Об этом свидетельствует изменение
>
на>>
. Если ориентироваться на визуальную выдачу, то может показаться что был введен путьip/firewall/filter
. На на самом деле были введены только следующие символыip/ff
, а все остальное было подставлено автоматически.
[admin@MikroTik] >> ip/firewall/i
В приведенном выше примере мы указали ip/fi
. И в итоге был получен нежелательный результат. Символы fi
являются уникальными для имени пути firewall
в разделе /ip
. Но самой короткой уникальной частью является самый первый символ f
. Поэтому как только был введен этот символ выдача консоли была автоматически дополнена до ip/firewall/
и после этого был добавлен символ i
. А в разделе /ip/firewall
нет ничего что начиналось бы на символ i
. Именно поэтому на практике режим Hot Lock редко используется из-за того, что для его использования надо уверенно знать уникальные части всех команд.
Полезные материалы по MikroTik
Чек-лист
Список обязательных действий при настройке маршрутизатора MikroTik. Бесплатно через подписку по форме ниже.
Имя
|
RouterOS: | v6 и v7 |
Дата публикации: | апрель 2022 |
Применимость: | сети до 100 и более компьютеров |
Темы: | Firewall, NAT, QoS, DHCP, DNS, Wi-Fi, основная и гостевая сеть и многое другое |
Формат: | файл, состоящий из 28 пунктов на 2-х листах в формате pdf |
Автор: | Скоромнов Дмитрий, практикующий инженер и сертифицированный тренер MikroTik (TR0680) |
Время получения: | в течение 5-ти минут после подписки |
Telegram-канал
На Telegram-канале Mikrotik сэнсей можно получить доступ к закрытой информации от официального тренера MikroTik.
Основные операции
Разница между путем, командой, параметром и значением параметра
В оригинальной выдаче командной строки 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
Определение номера правила
Для дальнейшего понимания принципа работы с командной строкой MikroTik RouterOS надо понять по какому принципу происходит нумерация правил и как можно определить номер конкретного интересующего нас правила.
[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, и т.д. Это очень важно учитывать и при настройке и через CL и через GUI, и при общении с коллегами. Если это не учитывать, то может получиться, что один человек имел ввиду номер в «человеческом» исчислении, а другой человек имел ввиду номер в «машинном» исчислении. Результат такого недопонимания может быть очень плачевным.
Список основных команд
- add – добавить правило.
- remove – удалить правило.
- move – переместить правило.
- set – изменить значение параметра.
- unset – удалить значение параметра.
Добавление нового правила
Для создания новых правил используется команда 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=2
) необходимо указать пустой комментарий (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
).
Почему нельзя использовать кириллицу
Консоль 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
(команда будет изучена позже) мы видим, что у последнего правила вместо кириллических символов используется непонятная кодировка.
======================
ВАЖНО: вся приведенная ниже информация является черновиками будущего продолжения статьи.
Как перестать бояться работать в командной строке (Этап 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 — копировать параметры из уже существующего элемента. Если вы не хотите, сделать точную копию, то вы можете указать новые значения для некоторых свойств. При копировании элементов, которые имеют имена, вы, как правило, должны дать новое имя копии;
- Возвращаемые значения:
- добавляет команду возврата внутреннего номера элемента который был добавлен.
- Общие параметры:
- set — позволяет изменять значения общих параметров или параметров изделия. Команда имеет множество аргументов с именами соответствующих значений, которые вы можете изменить. Используйте ? или двойной [Tab], чтобы увидеть список всех аргументов. Если есть список элементов для которых доступны действия, установите аргумент соответственно номеру элемента (или список номеров), который(е) вы хотите настроить. Эта команда не возвращает ничего.
Прочее
Указать что не изучаем что значат различные настройки, например у файрвола. А изучаем те команды, которые изучаем.
С помощью move и можно указать просто первый и второй элементы без указания numbers= и place-before? Аналогично для move.
Некоторые списки имеют элементы с конкретными именами, заданными для каждого из них. Например для пунктов interface или user. Там вы можете использовать имена элементов вместо номера позиций. Вы не должны использовать команду print перед обращением к элементам по их именам. Как правило, названия элементов являются более «стабильными», чем цифры, а также более информативными, так что отдавайте предпочтение их номерам при написании консольных скриптов.
кстати, две точки (..) можно использовать и для перехода в соседний раздел в один присест. юникс-стайл же)
[admin@mt-test] /ip firewall filter> ..nat
[admin@mt-test] /ip firewall nat>
Видеоурок
Загрузить видео
Полезные материалы по MikroTik
На чтение 3 мин Просмотров 25.7к. Опубликовано
Содержание
- Пользователи MikroTik
- Интерфейсы MikroTik CLI
- Беспроводные интерфейсы MikroTik
- Установка времени в MikroTik CLI
- Настройка Firewall MikroTik CLI
- Системные настройки MikroTik и информация в консоли
- Службы MikroTik
- Прочая информация по коммандрой строке MikroTik CLI
На страницах ресурса gotoADM.ru время от времени появляются материалы по настройке оборудования и сервисов на маршрутизаторах и точках доступа фирмы MikroTik. Все настройки выполняются в графическом режиме при подключении к устройству через программу Winbox. Далее указываются требуемые параметры в нужным меню и «все работает». В данной заметке я представляю вашему вниманию альтернативный вариант — подборку команд для работы с консолью (CLI) по соответствующим группам.
Освоить MikroTik Вы можете с помощью онлайн-куса «Настройка оборудования MikroTik». Курс содержит все темы, которые изучаются на официальном курсе MTCNA. Автор курса – официальный тренер MikroTik. Подходит и тем, кто уже давно работает с микротиками, и тем, кто еще их не держал в руках. В курс входит 162 видеоурока, 45 лабораторных работ, вопросы для самопроверки и конспект.
Пользователи MikroTik
По умолчанию для входа используется логин admin без пароля. Добавление пользователя:
use add name=имя password=пароль group=full
Отключаемся чтобы зайти под новым пользователем:
Отключение пользователя:
Просмотр пользователей:
Интерфейсы MikroTik CLI
Просмотр интерфейсов:
Активация интерфейса:
Назначение интерфейсу IP адреса:
ip address add address 172.17.1.199/24 interface ether1
Просмотр IP адресов:
Изменение MTU интерфейсов:
interface set 0,1,2 mtu=1500
Изменение mac адреса интерфейса:
/interface ethernet set ether1 mac-address=00:01:02:03:04:05
Сброс mac адреса интерфейса:
/interface ethernet reset-mac ether1
Установка шлюза по умолчанию:
ip route add gateway=172.16.1.131
Просмотр маршрутов:
Устанавливаем первичный и вторичный адреса DNS серверов:
ip dns set primary-dns=8.8.8.8 secondary-dns=8.8.4.4 allow-remote-requests=yes
Просмотр DNS параметров:
Беспроводные интерфейсы MikroTik
Просмотр беспроводных интерфейсов:
/interface wireless print
Установка времени в MikroTik CLI
Установка часового пояса:
system clock set time-zone=+2
Установка ip адреса ntp сервера с которым будет сверяться время:
system ntp client set enabled=yes primary-ntp=172.16.1.131
Просмотр времени:
Настройка Firewall MikroTik CLI
Настройка маскарадинга, чтобы чтобы внутренняя сеть не была видна с WAN порта:
ip firewall nat add chain=srcnat action=masquerade out-interface=интерфейс провайдера
Просмотр правил:
Пример ограничения количества соединений с одного IP:
/ip firewall rule forward add protocol=tcp tcp -options=syn-only connection-limit=5 action=drop
Пример блокировки всех TCP пакетов идущих на порт 135:
/ip firewall rule forward add dst -port=135 protocol=tcp action=drop
Пример проброса портов:
/ip firewall dst-nat add action=nat protocol=tcp dst-address=10.0.0.217/32:80 to-dst-address=192.168.0.4
Системные настройки MikroTik и информация в консоли
Просмотр стандартных настроек:
/system default-configuration print
Сброс настроек:
/system reset-configuration
Просмотр истории:
Службы MikroTik
Просмотр служб:
Прочая информация по коммандрой строке MikroTik CLI
Переход на уровень выше:
Выполнение команды из другого уровня без смены текущего:
Помощь:
Настройка маршрутизатора с помощью мастера настроек:
Пинг:
ping 192.168.1.2 count 3 size 512
Вход и выход из безопасного режима: Ctrl+X. Мини шпаргалка или памятка по командам для консоли маршрутизаторов MikroTik готова и будет обновляться. Какие комманды используете вы?
Освоить MikroTik Вы можете с помощью онлайн-куса «Настройка оборудования MikroTik». Курс содержит все темы, которые изучаются на официальном курсе MTCNA. Автор курса – официальный тренер MikroTik. Подходит и тем, кто уже давно работает с микротиками, и тем, кто еще их не держал в руках. В курс входит 162 видеоурока, 45 лабораторных работ, вопросы для самопроверки и конспект.
Hard: «MikroTik RB/CCR».
OS: «RouterOS v6».
Задача: создать простейшую конфигурацию маршрутизатора «MikroTik» для обеспечения работы типового небольшого офиса с парой десятков пользователей и двумя-тремя серверами.
Сразу после запуска ненастроенного (или сброшенного до заводского состояния) устройства для доступа к его конфигурации есть два пути: включиться в один из портов (обычно второй и следующие, в зависимости от модели) ethernet-порт (как правило по умолчанию на устройстве запущен DHCP-сервер, выдающий клиентам сетевой адрес) или воспользоваться более простым и надёжным RS-232 (через кабель DB-9). Я предпочитаю последний способ — это не вынуждает меня выключаться из сети, в которой я уже нахожусь:
$ minicom —device /dev/ttyUSB0 —baudrate 115200 —8bit —noinit
Прежде всего, если устройство только что поступило на полное реконфигурирование, есть смысл предварительно зачистить его настройки, и уже после этого приступать к дальнейшим действиям:
> /system reset-configuration
Аналогичного эффекта сброса настроек до заводских можно достигнуть следующей последовательностью действий:
1. Выключаем питание.
2. Зажимаем кнопку «Reset».
3. Удерживая кнопку «Reset» включаем питание.
4. Отпускаем кнопку «Reset», пока ещё мигает индикатор загрузки.
При входе на устройство сразу после сброса «мастером настройки» будет предложено применить «конфигурацию по умолчанию», но нам это не нужно — отказываемся путём нажатия клавиши «r».
Ознакомиться с текущей конфигурацией проще всего посредством команды экспортирования всего набора команд для воссоздания таковой:
> /export
Обращаю внимание, что в версии «RouterOS v6.41» аппаратную L2-коммутацию полностью перенесли на bridge-интерфейсы, отменив ранее использовавшиеся switch-группировки (через опции «master port») — новая реализация «прозрачного моста» поддерживает «аппаратную разгрузку (hardware offload)». Настоятельно рекомендую обновиться до версии v6.41 и выше, так описываемая здесь конфигурация основана уже на новом функционале мостового интерфейса.
Первичные настройки доступа.
Устанавливаем пароль для текущего пользователя «admin»:
> /password old-password=»»
Заводим дополнительного пользователя и выдаём ему полномочия суперпользователя:
> /user add name=superuser group=full password=»<userPassword>»
Выключаем все сервисы управления устройством, кроме SSH, «winbox» и COM-порта:
> /ip service disable telnet,ftp,www,www-ssl,api,api-ssl
Активируем повышенный уровень шифрования сеансов SSH и запрещаем транзитные подключения:
> /ip ssh set strong-crypto=yes
> /ip ssh set forwarding-enabled=no
Ради повышения уровня пассивной безопасности разрешаем обращения к «winbox» только из локальной сети — для настройки извне достаточно SSH:
> /ip service set winbox address=192.168.1.0/24
Настраиваем сетевое именование.
Задаём символическое сетевое имя (FQDN) устройству:
> /system identity set name=mrtr0.example.net
Задаём набор NS-серверов, к которым следует отправлять DNS-запросы (в примере Google и Yandex):
> /ip dns set servers=8.8.8.8,8.8.4.4
Разрешаем обслуживание маршрутизатором рекурсивных DNS-запросов от пользователей:
> /ip dns set allow-remote-requests=yes
Устанавливаем точное системное время.
Наверняка изначально может потребоваться явно указать желаемый часовой пояс (пример для Новосибирска):
> /system clock set time-zone-autodetect=no time-zone-name=Asia/Novosibirsk
Задаём внешний источник данных для автоматической синхронизации времени:
> /system ntp client set enabled=yes server-dns-names=0.asia.pool.ntp.org
Сразу по применению новых параметров даты и времени система попытается синхронизировать его с указанными time-серверами.
Позволяем маршрутизатору делиться сведениями о точном времени, активируя NTP-Server:
> /system ntp server set enabled=yes
Об аппаратных чипах и логике коммутации.
Ранее (до «RouterOS v6.41») на большинстве «Mikrotik» в настройках по умолчанию была предустановлена схема из двух уровней коммутации: группа ethernet-интерфейсов собирается в «switch-group» (трафик которой обслуживается только в рамках подключения к физическому чипу коммутации, коих может быть несколько), а порты «switch-group» через произвольный «master-port» (таковым может быть назначен любой из портов группы) вводятся в мостовой виртуальный интерфейс «bridge», коммутирующий (уже на уровне центрального процессора) пакеты «switch-group», автономных ethernet-интерфейсов и беспроводного интерфейса, предоставляя им единое L2 адресное пространство.
С внедрением «hardware offload» в мостовых интерфейсах прослойка «switch-group» была исключена из схемы, что сильно упростило её с точки зрения первичного конфигурирования — теперь по умолчанию все сетевые интерфейсы (кроме WAN) введены в виртуальный «прозрачный мост».
Такая реализация упрощает запуск устройства в работу, но не обеспечивает хорошей сетевой производительности из-за узкого места — CPU, через который будет пропускаться вся паразитная широковещательная коммутация, которой в реальной сети с количеством узлов за пару десятков не избежать.
Рекомендую сразу разделить по разным группам коммутации проводные и беспроводные интерфейсы (помним, что по умолчанию они сведены в «прозрачный мост») с тем, чтобы иметь возможность подключающихся беспроводных клиентов в любых комбинациях изолировать от работающих в проводной сети пользователей, а порты последней распределить в соответствии с назначением, функционально изолировав их в рамках аппаратных чипов.
Планируем распределение сетевых интерфейсов по задачам.
В дальнейшей настройке будем исходить из потребности в следующих сущностях:
WAN1 — интерфейс для подключения к первому провайдеру;
WAN2 — интерфейс для подключения ко второму провайдеру;
LAN1 — виртуальный интерфейс для обслуживания локальной сети;
DMZ1 — виртуальный интерфейс для подключения DMZ-сети;
WLAN1 — интерфейс беспроводного контроллера.
Если устройство начального уровня, то в нём немного физических портов и может статься, что каждый из них будет задействован в своей задаче с индивидуальной сетевой IP-адресацией. Если ethernet-портов больше, чем задач, что часть из них можно свести в группы коммутации, получив в итоге картину вроде нижеследующей:
switch1 — первый чип коммутации (GigabitEthernet):
WAN1:
ether1 — первый провайдер;
LAN1:
bridge1 — группа коммутации:
ether2 — первый клиентский коммутатор;
ether3 — второй клиентский коммутатор;
ether4 — рабочая станция;
ether5 — сетевой принтер;
switch2 — второй чип коммутации (FastEthernet):
WAN2:
ether6 — второй провайдер;
DMZ1:
bridge2 — группа коммутации:
ether7 — первый сервер;
ether8 — второй сервер;
ether9 — сетевая АТС;
ether10 — СХД;
WLAN1:
wlan1 — беспроводная сеть.
Конфигурируем локальные сетевые подключения.
Переименовываем сетевые интерфейсы для удобства восприятия их функциональной привязки, в соответствие с вышеприведённой схемой:
> /interface ethernet
> set [ find default-name=ether1 ] name=ether1-WAN1
> set [ find default-name=ether2 ] name=ether2-LAN1
> set [ find default-name=ether3 ] name=ether3-LAN1
> set [ find default-name=ether4 ] name=ether4-LAN1
> set [ find default-name=ether5 ] name=ether5-LAN1
> set [ find default-name=ether6 ] name=ether6-WAN2
> set [ find default-name=ether7 ] name=ether7-DMZ1
> set [ find default-name=ether8 ] name=ether8-DMZ1
> set [ find default-name=ether9 ] name=ether9-DMZ1
> set [ find default-name=ether10 ] name=ether10-DMZ1
Создаём «мостовые интерфейсы», которые будут играть роль виртуальных коммутаторов:
> /interface bridge add auto-mac=yes name=BR-LAN1 protocol-mode=rstp
> /interface bridge add auto-mac=yes name=BR-DMZ1 protocol-mode=rstp
Подключаем к виртуальным «мостовым интерфейсам» соответствующие сетевые физические интерфейсы:
> /interface bridge port
> add bridge=BR-LAN1 interface=ether2-LAN1
> add bridge=BR-LAN1 interface=ether3-LAN1
> add bridge=BR-LAN1 interface=ether4-LAN1
> add bridge=BR-LAN1 interface=ether5-LAN1
> add bridge=BR-DMZ1 interface=ether7-DMZ1
> add bridge=BR-DMZ1 interface=ether8-DMZ1
> add bridge=BR-DMZ1 interface=ether9-DMZ1
> add bridge=BR-DMZ1 interface=ether10-DMZ1
Проверяем, получилось ли задуманное распределение интерфейсов:
> /interface print
… R — running, S — slave
….
0 ether1-WAN1 ether …
1 S ether2-LAN1 ether …
2 S ether3-LAN1 ether …
3 S ether4-LAN1 ether …
4 RS ether5-LAN1 ether …
5 ether6-WAN2 ether …
6 S ether7-DMZ1 ether …
7 S ether8-DMZ1 ether …
8 S ether9-DMZ1 ether …
9 S ether10-DMZ1 ether …
10 sfp1 ether …
11 X wlan1 wlan …
12 R BR-DMZ1 bridge …
13 R BR-LAN1 bridge …
В следующем выводе сведений об участниках имеющихся «прозрачных мостов» хорошо видно, для каких интерфейсов (всех в примере) активна «аппаратная разгрузка (hardware offload)» — это значит, что между интерфейсами в рамках обоих групп коммутации пакеты будут передаваться с максимальной скоростью — обрабатываемые на аппаратном уровне, без привлечения медленного центрального CPU:
> /interface bridge port print
… I — inactive, H — hw-offload
….
0 I H ether2-LAN1 BR-LAN1 …
1 I H ether3-LAN1 BR-LAN1 …
2 I H ether4-LAN1 BR-LAN1 …
3 H ether5-LAN1 BR-LAN1 …
4 I H ether7-DMZ1 BR-DMZ1 …
5 I H ether8-DMZ1 BR-DMZ1 …
6 I H ether9-DMZ1 BR-DMZ1 …
7 I H ether10-DMZ1 BR-DMZ1 …
Назначаем «мостовым интерфейсам» локальных сетей IP-адреса:
> /ip address add address=192.168.1.1/24 interface=BR-LAN1
> /ip address add address=10.10.1.1/24 interface=BR-DMZ1
Результат наших действий по назначению IP-адресов:
> /ip address print
# ADDRESS NETWORK INTERFACE
0 192.168.1.1/24 192.168.1.0 BR-LAN1
1 10.10.1.1/24 10.10.1.0 BR-DMZ1
Конфигурируем беспроводное сетевое подключение.
Беспроводной интерфейс по умолчанию переведён под управление модуля CAPsMAN (Controlled Access Point system Manager) — контроллера беспроводных точек, призванного упростить настройку и управление единой Wi-Fi-сетью (аналог UniFi-сети на устройствах «Ubiquiti») с бесшовным роумингом:
> /interface wireless cap print
enabled: yes
interfaces: wlan1
….
Хорошо, но для одиночного устройства не нужно — отключаем привязку беспроводного интерфейса к системе CAP:
> /interface wireless cap set interfaces=»» discovery-interfaces=»»
> /interface wireless cap set enabled=no
Создаём выделенный профиль, описывающий метод аутентификации пользователя в беспроводной сети:
> /interface wireless security-profiles add name=staff-profile authentication-types=wpa2-psk group-ciphers=tkip,aes-ccm mode=dynamic-keys unicast-ciphers=tkip,aes-ccm wpa2-pre-shared-key=<secureWiFiKey>
Задаём параметры сети, обслуживаемой беспроводным интерфейсом, заодно привязав к нему заранее подготовленный профиль аутентификации:
> /interface wireless set wlan1 band=2ghz-b/g/n channel-width=20mhz default-forwarding=no disabled=no mode=ap-bridge security-profile=staff-profile ssid=zsmtu wps-mode=disabled
Задаём IP-адрес беспроводному интерфейсу и включаем таковой:
> /ip address add address=172.16.1.1/24 interface=wlan1
> /interface enable wlan1
Настраиваем автоматическую выдачу IP-адресов.
Запускаем DHCP-сервер для обслуживания клиентов локальной сети:
> /ip pool add name=DHCP_LAN1_POOL ranges=192.168.1.100-192.168.0.250
> /ip dhcp-server add name=DHCP_LAN1 interface=BR-LAN1 address-pool=DHCP_LAN1_POOL lease-time= 22d disabled=no
> /ip dhcp-server network add address=192.168.1.0/24 gateway=192.168.1.1 netmask=255.255.255.0 dns-server=192.168.1.1 ntp-server=192.168.1.1
При необходимости фиксируем IP-адрес компьютера пользователя за его аппаратным MAC-адресом:
> /ip dhcp-server lease add server=DHCP_LAN1 address=192.168.1.51 mac-address=00:AA:B0:C0:A6:F1 comment=»workstation-one»
Запускаем DHCP-сервер для обслуживания клиентов беспроводной сети:
> /ip pool add name=DHCP_WLAN1_POOL ranges=172.16.1.10-172.16.1.254
> /ip dhcp-server add name=DHCP_WLAN1 interface=wlan1 address-pool=DHCP_WLAN1_POOL lease-time= 7d disabled=no
> /ip dhcp-server network add address=172.16.1.0/24 gateway=172.16.1.1 netmask=255.255.255.0 dns-server=172.16.1.1
Удостоверяемся, что наши DHCP-серверы активны в заданной конфигурации:
> /ip pool print
> /ip dhcp-server print
> /ip dhcp-server network print detail
А вот так можно просмотреть список выданных пользователям сетей IP-адресов:
> /ip dhcp-server lease print
Конфигурируем внешние сетевые подключения.
Задаём внешнему интерфейсу первого (основного) провайдера IP-адрес:
> /ip address add address=123.45.67.90 netmask=255.255.255.248 interface=ether1-WAN1 disabled=no comment=»ISP1″
Объявляем маршрут «по умолчанию», отправляющий весь нераспределённый трафик в сеть первого провайдера «ISP1»:
> /ip route add check-gateway=ping comment=»GW1″ disabled=no distance=1 dst-address=0.0.0.0/0 gateway=123.45.67.89 scope=30 target-scope=10
Задаём параметры подключения ко второму, резервному интернет-провайдеру (например через xDSL-модем, выдающего динамические адреса на линии связи). По логике маршрутизации мы не должный принимать от DHCP-сервера провайдера «маршрут по умолчанию», нам достаточно просто получить адресацию, чтобы интерфейс был активен — но в комбинации «DHCP + StaticRoute» Mikrotik не вполне корректно отрабатывает маршруты на стыке сетей — так что сразу заводим второй «маршрут по умолчанию», но делаем его менее приоритетным:
> /ip dhcp-client add interface=ether6-WAN2 add-default-route=yes disabled=no comment=»ISP2″
> /ip route add check-gateway=ping comment=»GW2″ disabled=no distance=2 dst-address=0.0.0.0/0 gateway=ether6-WAN2 scope=30 target-scope=10
Просматриваем получившуюся таблицу простейшей статической маршрутизации:
> /ip route print
… D — dynamic, S — static …
# DST-ADDRESS … GATEWAY DISTANCE
0 S ;;; GW1
0.0.0.0/0 123.45.67.89 1
1 S ;;; GW2
0.0.0.0/0 ether6-WAN2 2
….
Настраиваем трансляцию запросов из локальной сети в интернет.
Так как внутри «MikroTik» живёт «Linux», управление сетевым трафиком и модификация пакетов реализовано через подсистему ядра «netfilter», только вместо обвязки «iptables» здесь оперируют сущностью «firewall».
Для упрощения дальнейшего конфигурирования отношений между подсетями составляем списки таковых:
> /ip firewall address-list
> add address=192.168.1.0/24 list=LIST_INET_USERS_IP
> add address=172.16.1.0/24 list=LIST_INET_USERS_IP
> add address=10.10.1.0/24 list=LIST_DMZ_IP
> add address=123.45.67.88/29 list=LIST_WAN_IP
Задаём правила NAPT/PAT (NAT Overload/Port Address Translation) трансляции локальных сетевых адресов пользователей во внешние, при обращении за сетевые интерфейсы провайдеров:
> /ip firewall nat add action=src-nat chain=srcnat comment=»NAPT/PAT via WAN1″ out-interface=ether1-WAN1 src-address-list=LIST_INET_USERS_IP to-addresses=123.45.67.90
>
> /ip firewall nat add action=masquerade chain=srcnat comment=»NAPT/PAT via WAN2″ disabled=yes out-interface=ether6-WAN2 src-address-list=LIST_INET_USERS_IP
Проверяем, применились ли правила организации доступа в интернет:
> /ip firewall nat print
….
1 ;;; NAPT/PAT via WAN1
chain=srcnat action=src-nat to-addresses=123.45.67.90 src-address-list=LIST_INET_USERS_IP out-interface=ether1-WAN1 log=no log-prefix=»»
2 ;;; NAPT/PAT via WAN2
chain=srcnat action=masquerade src-address-list=LIST_INET_USERS_IP out-interface=ether6-WAN2 log=no log-prefix=»»
Настраиваем трансляцию запросов из внешней сети к локальным ресурсам.
Наверняка потребуется обеспечить доступность внутреннего сервиса, спрятанного за «MikroTik», извне.
Добавляем правила DNAT (Destination NAT), разрешающие пропуск трафика снаружи к определённым сервисам и портам:
> /ip firewall nat
> add action=dst-nat chain=dstnat comment=»DNS: ns.example.net» dst-address=123.45.67.92 dst-port=53 protocol=tcp to-addresses=10.10.1.2 to-ports=53
> add action=dst-nat chain=dstnat comment=»DNS: ns.example.net» dst-address=123.45.67.92 dst-port=53 protocol=udp to-addresses=10.10.1.2 to-ports=53
Если нужно обеспечить как пропуск трафика извне, так и вывод такового наружу через определённый внешний IP-адрес, то к правилу DNAT добавим ещё и SNAT (Source NAT) — например, для всего сетевого узла в целом:
> /ip firewall nat
> add action=dst-nat chain=dstnat comment=»NAT To: example.net» dst-address=123.45.67.33 to-addresses=10.10.0.3
> add action=src-nat chain=srcnat comment=»NAT From: example.net» src-address=10.10.0.3 to-addresses=123.45.67.33
Более глубокую настройку защитного экрана, как такового рассмотрим в отдельной заметке.
Выключаем ненужное.
Деактивируем ненужные в простом офисе функциональные модули:
> /system package disable ipv6,hotspot,mpls
Выключаем сервисы мониторинга (Ping) и управления (Telnet, Winbox), принимающие подключения с указанием MAC-адреса, если IP-адрес интерфейсу не выдан:
> /tool mac-server ping set enabled=no
> /tool mac-server set allowed-interface-list=none
> /tool mac-server mac-winbox set allowed-interface-list=none
Выключаем для всех сетевых интерфейсов сервис автоматического поиска соседних сетевых устройств посредством LLDP-запросов — в небольшом офисе и так известно, что к чему подключено:
> /ip neighbor discovery-settings set discover-interface-list=none
Выключаем сервис, предназначенный для приёма подключений с целью тестирования пропускной способности:
> /tool bandwidth-server set enabled=no
Явно выключаем сервисы проксирования клиентских запросов:
> /ip proxy set enabled=no
> /ip socks set enabled=no
LCD-экранчик у Mikrotik откровенно неудобный — выключаем, не особо разбираясь в его возможностях:
> /lcd interface pages set 0 interfaces=ether1-WAN1
> /lcd set default-screen=stats-all read-only-mode=yes touch-screen=disabled
> /lcd set enabled=no
Всё, на данном этапе мы имеем устройство, готовое к обслуживанию сети небольшого офиса.
Роутер MikroTik предоставляет широкий спектр возможностей для настройки сети. Настройка роутера через консоль является одним из самых удобных и эффективных способов управления устройством. Этот метод позволяет полностью контролировать все настройки и функции роутера, обеспечивая стабильную работу сети.
Приступая к настройке роутера MikroTik через консоль, важно иметь представление о нескольких ключевых аспектах. Во-первых, необходимо установить соединение с роутером через USB-кабель или посредством Telnet или SSH. Затем следует войти в систему, используя логин и пароль администратора. После успешного входа вы сможете приступить к настройке роутера посредством командной строки.
Подробные инструкции по настройке роутера MikroTik через консоль можно найти в документации производителя. Там вы найдете все необходимые команды и параметры для настройки сети, настройки безопасности, настройки маршрутизации и многое другое. Не забудьте сохранить настройки после завершения процесса, чтобы они вступили в силу.
Когда настройка роутера MikroTik через консоль осуществлена успешно, вы можете воспользоваться множеством полезных советов и рекомендаций для оптимизации работы вашей сети. Например, регулярно обновляйте прошивку роутера, чтобы иметь доступ к последним функциям и исправлениям безопасности. Также рекомендуется регулярно резервировать настройки роутера, чтобы быстро восстановить работу сети в случае сбоя. И не забывайте о безопасности: устанавливайте надежные пароли и используйте защищенное соединение при доступе к роутеру из внешней сети.
Mikrotik настройка роутера через консоль
1. Перейдите в консольное окно MikroTik, введя IP-адрес роутера, имя пользователя и пароль.
2. После успешного входа в консоль вы увидите приглашение командной строки.
Обратите внимание: При первом входе в консоль роутера MikroTik рекомендуется задать новый пароль администратора для обеспечения безопасности.
3. Введите команду для настройки интерфейса Ethernet роутера. Например: interface ethernet set ether1 name=»WAN» comment=»Внешний интерфейс»
4. Настройте IP-адрес роутера с помощью команды ip address add address=192.168.1.1/24 interface=WAN, где ‘address’ — IP-адрес роутера, а ‘interface’ — имя интерфейса, который будет использоваться для настройки.
Совет: Проверьте сетевые настройки и убедитесь, что у вас есть доступ к Интернету.
5. Для настройки DHCP-сервера введите команду ip dhcp-server setup. По умолчанию все параметры уже заданы, поэтому просто следуйте инструкциям на экране.
6. Настройте маршрутизацию по умолчанию с помощью команды ip route add gateway=192.168.1.1, где ‘gateway’ — это IP-адрес шлюза по умолчанию.
Рекомендация: Для обеспечения безопасности сети рекомендуется настроить фильтрацию трафика, используя межсетевой экран (firewall) MikroTik.
7. Для настройки межсетевого экрана MikroTik введите следующие команды:
ip firewall filter add chain=input action=drop
ip firewall filter add chain=forward action=drop
ip firewall filter add chain=output action=accept
8. Сохраните все настройки с помощью команды /system backup save name=»backup», чтобы иметь возможность восстановить настройки в будущем, если что-то пойдет не так.
Теперь ваш роутер MikroTik настроен через консоль. Вы можете использовать эти основные настройки в качестве отправной точки для дополнительных настроек и конфигураций в зависимости от ваших потребностей.
Пошаговая инструкция
Для настройки роутера Mikrotik через консоль, следуйте следующим шагам:
- Подключите компьютер к роутеру Mikrotik с помощью Ethernet-кабеля.
- Откройте программу терминала или консоли на компьютере и настройте соединение с роутером с использованием стандартных настроек, таких как скорость передачи данных 9600 бит/с и битов данных 8.
- Введите логин и пароль для доступа к роутеру в терминале или консоли. Если вы используете роутер Mikrotik по умолчанию без изменений, логин по умолчанию — admin, а пароль — нет.
- Ознакомьтесь с основными командами для управления роутером Mikrotik. Эти команды позволят вам настроить различные параметры, такие как IP-адреса, маршруты, настройки безопасности и другие.
- Произведите настройку вашего роутера Mikrotik согласно требованиям вашей сети. Это может включать в себя настройку IP-адресов интерфейсов, маршрутизацию, протоколы безопасности и другие параметры, необходимые для вашего конкретного случая.
- Проверьте настройки роутера Mikrotik, чтобы убедиться, что они были успешно применены. Это можно сделать с помощью команды, такой как «ip address print» или «interface print», чтобы увидеть список настроенных интерфейсов и их IP-адресов.
- После завершения настройки роутера Mikrotik сохраните изменения, введя команду «system backup save». Это позволит вам восстановить настройки роутера в случае сбоя или потери данных.
Следуя этим простым шагам, вы сможете настроить роутер Mikrotik через консоль без особых проблем и удачно использовать его в своей сети.