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-profilesdefault
/ppp/profile"default", "default-encryption"
/ip/hotspot/profiledefault
/ip/hotspot/user/profiledefault
/ip/ipsec/policydefault
/ip/ipsec/policy/groupdefault
/ip/ipsec/proposaldefault
/ip/ipsec/mode-confread-only
/ip/smb/sharespub
/ip/smb/usersguest
/ipv6/ndany
/mpls/interfaceall
/routing/bfd/interfaceall
/routing/bgp/instancedefault
/routing/ospf/instancedefault
/routing/ospf/areabackbone
/routing/ospf-v3/instancedefault
/routing/ospf-v3/areabackbone
/snmp/communitypublic
/tool/mac-server/mac-winboxall
/tool/mac-serverall
/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-configuration no-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 执行相同操作:

相关主题