Configuration Management
本页说明 MikroTik RouterOS 中的配置管理,详细介绍如何使用
/system/history界面或 CLI 命令撤销和重做操作,并给出防火墙规则修改示例。
配置管理
本文介绍一组用于配置管理的命令。
配置撤销与重做
在 GUI 中执行的任何操作或在 CLI 中执行的任何命令都会记录在 /system/history 中。可以从 CLI 运行 undo 或 redo 命令,或在 GUI 中点击 Undo 和 Redo 按钮,撤销或重做任何操作。
以下简单示例演示添加防火墙规则,以及如何撤销和重做该操作:
[admin@v7_ccr_bgp] /ip/firewall/filter> add chain=forward action=drop
[admin@v7_ccr_bgp] /ip/firewall/filter> print
Flags: X - disabled, I - invalid; D - dynamic
0 X chain=input action=drop protocol=icmp src-address=10.155.101.1 log=no
log-prefix=""
1 chain=forward action=drop
[admin@v7_ccr_bgp] /ip/firewall/filter> /system/history/print
Flags: U - undoable, R - redoable, F - floating-undo
Columns: ACTION, BY, POLICy
ACTION BY POLIC
F filter rule added admin write
U --- write
[admin@v7_ccr_bgp] /ip/firewall/filter>
我们添加了一条防火墙规则,在 /system/history 中可以看到执行过的所有操作。
现在撤销所有操作:
[admin@v7_ccr_bgp] /ip/firewall/filter> /undo
[admin@v7_ccr_bgp] /ip/firewall/filter> print
Flags: X - disabled, I - invalid; D - dynamic
0 X chain=input action=drop protocol=icmp src-address=10.155.101.1 log=no
log-prefix=""
[admin@v7_ccr_bgp] /ip/firewall/filter>
可以看到防火墙规则已消失。 现在重做最后一次更改:
[admin@v7_ccr_bgp] /ip/firewall/filter> /redo
[admin@v7_ccr_bgp] /ip/firewall/filter> print
Flags: X - disabled, I - invalid; D - dynamic
0 X chain=input action=drop protocol=icmp src-address=10.155.101.1 log=no
log-prefix=""
1 chain=forward action=drop
[admin@v7_ccr_bgp] /ip/firewall/filter>
即使操作是在 GUI 中执行的,系统历史也能显示 “Undo” 或 “Redo” 时执行的确切 CLI 命令。例如,从 WinBox 添加 TCP 接受规则后的详细历史输出:
[admin@v7_ccr_bgp] /system/history> print detail
Flags: U - undoable, R - redoable, F - floating-undo
F redo=
/ip/firewall/filter/add action=accept chain=forward disabled=no log=no \
log-prefix="" protocol=tcp
undo=/ip/firewall/filter/remove *4 action="filter rule added" by="admin"
policy=write time=2019-10-10 18:51:05
F redo=/ip/firewall/filter/add action=accept chain=forward
undo=/ip/firewall/filter/remove *3 action="filter rule added" by="admin"
policy=write time=2019-10-10 18:49:03
U redo="" undo="" action="---" by="" policy=write time=2019-09-27 13:07:35
[admin@v7_ccr_bgp] /system/history>
安全模式
有时更改路由器配置可能导致路由器无法访问(本地控制台除外)。这通常是误操作造成的,而当与路由器的连接已经中断时,就无法撤销最后一次更改。安全模式可用于将这种风险降到最低。
Winbox GUI 中的 “Safe Mode” 按钮可用于进入安全模式;在 CLI 中,可以使用键盘快捷键 <kbd>F4</kbd> 或按 [CTRL]+[X] 进入。要不保存 CLI 中所做更改并退出,请按 [CTRL]+[D]。

[admin@MikroTik] /ip/route>[CTRL]+[X]
[Safe Mode taken]
[admin@MikroTik] /ip/route<SAFE>
系统会显示 Safe Mode taken 消息,提示符也会变化,表明当前会话处于安全模式。路由器处于安全模式期间所做的所有配置更改(包括来自其他登录会话的更改),都会在安全模式会话异常终止时自动撤销。可以在系统历史中查看所有此类将被自动撤销的更改,它们会标记为 F:
[admin@MikroTik] /ip/route>
[Safe Mode taken]
[admin@MikroTik] /ip/route<SAFE> add
[admin@MikroTik] /ip/route<SAFE> /system/history/print
Flags: U, F - FLOATING-UNDO
Columns:
ACTION, BY, POLICY ACTION BY POLICY
F route 0.0.0.0/0 added admin write
此后,如果 telnet 连接(或 WinBox 终端)中断,一段时间后(TCP 超时为 9 分钟),安全模式期间所做的所有更改都会被撤销。使用 [Ctrl]+[D] 退出会话也会撤销所有安全模式更改,而 /quit 不会。
如果其他用户尝试进入安全模式,会收到以下提示:
[admin@MikroTik] >
Hijacking Safe Mode from someone - unroll/release/don't take it [u/r/d]:
- [u]:撤销所有安全模式更改,并将当前会话置于安全模式。
- [r]:保留当前所有安全模式更改,并将当前会话置于安全模式。安全模式的原持有者会收到通知。
[admin@MikroTik] >
[Safe mode released by another user]
- [d]:保持一切不变。
如果在安全模式下进行了过多更改,历史记录中没有足够空间保存全部内容(目前历史最多保留最近 100 个操作),会话会自动退出安全模式,且不会自动撤销任何更改。因此,在安全模式下最好分小步修改配置。连续按两次 [Ctrl]+[X] 是清空安全模式操作列表的简便方法。
系统备份与恢复
系统备份 是以二进制格式完整克隆路由器配置的方式。
配置导出与导入
RouterOS 允许以纯文本格式导出和导入部分配置。该方法可用于在不同设备之间复制配置片段,例如将整个防火墙配置从一台路由器克隆到另一台。
可以在每个菜单中执行导出命令(仅导出该特定菜单及其所有子菜单的配置),也可以在根菜单中执行以导出完整配置,且仅适用于 CLI。
危险
Export 命令不会导出系统用户密码、已安装证书、SSH 密钥、Dude 或 User-manager 数据库。
已安装证书、Dude 和 User Manager 数据库必须手动导出并导入到新设备。
系统用户密码和用户 SSH 密钥无法导出。
警告: 导入配置时,建议使用与导出配置时相同的 RouterOS 版本,以免某些命令在其中一个 RouterOS 版本中不存在。
配置导出
接受以下命令参数:
| 属性 | 说明 |
|---|---|
| compact | 仅输出已修改的配置。从 v6rc1 起,“export compact” 成为默认行为,因此 “export” 和 “export compact” 现在产生相同的输出。 |
| file | 将配置导出到指定文件。未指定文件时,导出输出会打印到终端 |
| path | 该参数可用于在路由器完整配置中包含或排除特定配置菜单 |
| show-sensitive | 显示敏感信息,例如密码、密钥等。默认隐藏敏感信息。含敏感参数的菜单列表 |
| terse | 使用该参数时,export 命令会将配置输出为独立行上的完整命令,每行都包含相应的菜单路径。 |
| verbose | 使用该参数时,export 命令会输出完整的配置参数和条目,包括默认值。 |
例如,导出 /ip/address 菜单中的配置并保存到文件:
[admin@MikroTik] > /ip/address/print
Flags: X - disabled, I - invalid, D - dynamic
# ADDRESS NETWORK BROADCAST INTERFACE
0 10.1.0.172/24 10.1.0.0 10.1.0.255 bridge1
1 10.5.1.1/24 10.5.1.0 10.5.1.255 ether1
[admin@MikroTik] > /ip/address/export file=address
[admin@MikroTik] > /file/print
# NAME TYPE SIZE CREATION-TIME
0 address.rsc script 315 2003-12-23 13:21:48
[admin@MikroTik] >
默认情况下,export 命令仅写入用户编辑过的配置,RouterOS 默认值会被省略。
例如,IPSec 默认策略不会被导出;如果更改了某个属性,则仅导出所做的更改:
[admin@rack1_b4] /ip/ipsec/policy> print
Flags: T - template, X - disabled, D - dynamic, I - inactive, * - default
0 T * group=default src-address=::/0 dst-address=::/0 protocol=all
proposal=default template=yes
[admin@rack1_b4] /ip/ipsec/policy> export
# 1970-04-02 17:59:14 by RouterOS 6.22
# software id = DB0D-LK67
#
[admin@rack1_b4] /ip/ipsec/policy> set 0 protocol=gre
[admin@rack1_b4] /ip/ipsec/policy> export
# 1970-04-02 17:59:30 by RouterOS 6.22
# software id = DB0D-LK67
#
/ip/ipsec/policy
set 0 protocol=gre
导出整个 /ip/firewall 配置(排除 /ip/firewall/nat)的示例:
/export path=/ip/firewall,!/ip/firewall/nat
/ip/firewall/address-list
add address=1.1.1.1 list=dns
/ip/firewall/filter
add action=passthrough chain=unused-hs-chain comment="place hotspot rules here" disabled=yes
add action=add-src-to-address-list address-list=12345 address-list-timeout=15s chain=input disabled=yes
add action=accept chain=output dst-port=80,443 log=yes protocol=tcp
/ip/firewall/mangle
add chain=prerouting
add action=accept chain=prerouting
add action=accept chain=prerouting dst-address=192.168.88.0/24 in-interface=ether2
信息
注意:
* 标志表示该条目是系统默认条目,无法手动删除。 以下是包含默认系统条目的所有菜单列表:
| 菜单 | 默认条目 |
|---|---|
/interface/wireless/security-profiles | default |
/ppp/profile | "default", "default-encryption" |
/ip/hotspot/profile | default |
/ip/hotspot/user/profile | default |
/ip/ipsec/policy | default |
/ip/ipsec/policy/group | default |
/ip/ipsec/proposal | default |
/ip/ipsec/mode-conf | read-only |
/ip/smb/shares | pub |
/ip/smb/users | guest |
/ipv6/nd | any |
/mpls/interface | all |
/routing/bfd/interface | all |
/routing/bgp/instance | default |
/routing/ospf/instance | default |
/routing/ospf/area | backbone |
/routing/ospf-v3/instance | default |
/routing/ospf-v3/area | backbone |
/snmp/community | public |
/tool/mac-server/mac-winbox | all |
/tool/mac-server | all |
/system/logging | "info", "error", "warning", "critical" |
/system/logging/action | "memory", "disk", "echo", "remote" |
/queue/type | "default", "ethernet-default", "wireless-default", "synchronous-default", "hotspot-default", "only-hardware-queue", "multi-queue-ethernet-default", "default-small" |
危险
如果某个特定菜单无法响应 export 命令,从 RouterOS v7.11 起,超时后 export 命令输出中会打印错误消息(“#error exporting "/xxx" (timeout)”),然后继续处理下一个菜单。 从 RouterOS 7.13 起,可以导出特定菜单的部分内容。例如,可以只导出路由器多个地址列表中的某个特定地址列表。
[admin@MikroTik] > ip firewall address-list export where list=mylist
配置导入
根菜单命令 import 允许从指定文件运行配置脚本。脚本文件(扩展名为 “.rsc”)可以包含任何控制台命令,包括复杂脚本。
例如,加载保存的配置文件:
[admin@MikroTik] > import address.rsc
Opening script file address.rsc
Script file loaded and executed successfully
[admin@MikroTik] >
Import 命令允许指定以下参数:
| 属性 | 说明 |
|---|---|
| from-line | 从指定行号开始执行脚本。该选项仅在 verbose 模式下可用。 |
| file-name | 要执行的脚本(.rsc)文件名。 |
| verbose | 逐行读取文件并逐条执行,便于调试语法或其他错误。 |
| dry-run | 模拟导入而不进行任何配置更改,有助于发现语法错误。该选项仅在 verbose 模式下可用。 |
提示
如果设备具有需要替换的默认或现有配置,需要执行配置重置。
这包括使用命令
/system/reset-configurationno-defaults=yes 应用干净的空配置,然后重启设备。
自动导入
也可以通过 FTP 或 SFTP 上传到路由器后自动执行脚本。脚本文件必须使用 *.auto.rsc 扩展名。文件中的命令执行完毕后,会创建一个新的 *.auto.log 文件,其中包含导入成功或失败的信息。
提示
文件名中的 “.auto.rsc” 是自动执行的必要条件。
导入故障排除
导出的 .rsc 文件中需要注意的配置部分
在新设备上尝试导入之前,应删除使用 “/export” 创建的导出文件中的以下内容:
- 接口重命名与默认以太网命名方案冲突。
/interface/ethernet
set [ find default-name=ether5 ] auto-negotiation=no name=ether1-gateway
set [ find default-name=ether6 ] name=ether2
set [ find default-name=ether7 ] name=ether3
set [ find default-name=ether8 ] name=ether4
set [ find default-name=ether1 ] name=ether5
set [ find default-name=ether2 ] name=ether6
set [ find default-name=ether3 ] name=ether7
set [ find default-name=ether4 ] name=ether8
- 在较旧版本中,“export” 的默认条目可能显示为 “add” 而不是 “set” 命令。导入前应编辑,以避免错误。
- 检查物理接口总数是否与新老设备匹配。如果缺少某些接口,.rsc 导入期间会出错。
如果导入出现问题,请尝试以下操作:
- 使用 dry-run 参数模拟导入而不进行任何配置更改,有助于发现语法错误。该选项仅在 verbose 模式下可用。
- 重置该设备的配置。
- 使用 “verbose=yes” 参数再次运行 import 命令。它同样会在遇到已经出现过的问题时停止导入,但还会显示导出失败的位置,从而指出需要编辑 .rsc 导入文件的位置。
启动延迟
如果配置依赖的接口在命令执行时可能尚未启动,建议引入延迟或监控直到所有所需接口可用。以下示例脚本可设置预期接口数量以及等待它们可用的时长:
{
:local i 0
#Number of interfaces. It is necessary to reconfigure this number for each device (/interface/print count-only)
:local x 10
#Max time to wait
:local t 30
while ($i < $t && [:len [/interface/find]] < $x) do={
:put $i
:set $i ($i + 1)
:delay 1
}
if ($i = $t) do={
:log warning message="Could not load all physical interfaces"
} else={
#Rest of your script
}
}
上述脚本会等待直到可见 10 个接口,或等待 30 秒。如果届时没有 10 个接口,会在日志中写入消息。请根据需要修改变量。
配置重置
RouterOS 允许使用 /system/reset-configuration 命令重置配置。
该命令会清除路由器的所有配置并恢复出厂默认值,包括登录名和密码(用户名为 'admin'、密码为空;某些型号则使用贴纸上的用户和无线密码)。有关默认配置的更多细节,请参阅列表。
执行配置重置命令后,路由器会重启并加载默认配置。从 7.13 版本起,重置后会显示许可证提示,可选择查看最终用户许可协议。
提示
重置前会保存现有配置的备份文件。这样如果误执行重置,可以轻松恢复之前的配置。
注意: 如果路由器使用 Netinstall 安装,并指定了脚本作为初始配置,重置命令会在清除配置后执行该脚本。要阻止此行为,必须重新安装路由器。 可以使用以下参数覆盖默认重置行为:
| 属性 | 说明 |
|---|---|
| keep-users | 不从配置中移除现有用户 |
| no-defaults | 不加载默认配置,仅清除配置 |
| skip-backup | 跳过重置前自动生成备份文件 |
| run-after-reset | 重置后运行指定的 .rsc 文件,从而加载自定义配置。警告: 如果特定 .rsc 文件执行超过 2 分钟,脚本会失败,LOG 中会包含 “runtime limit exceeded”,少数情况下为 “std failure: timeout” 错误。 |
| caps-mode | 配置重置后运行 caps-mode 脚本。 |
例如,硬重置配置,不加载默认配置并跳过备份文件:
[admin@MikroTik] > /system/reset-configuration no-defaults=yes skip-backup=yes
Dangerous! Reset anyway? [y/N]: y
使用 Winbox 执行相同操作:
