简介


读者将会了解到如何创建并保存更改到正在使用的配置文件。


操作步骤


1.通常情况下您可以使用 save 命令来保存活动的的配置文件到硬盘(config/config.boot);然而你也可以将正在使用的配置文件保存为不同的文件或者保存到远程服务器。

2.输入 save 并按下 ? 键。

ubnt@RTR# save
Possible completions:
 Save to system config file
 Save to file on local machine
 scp://:@/ Save to file on remote machine
 ftp://:@/ Save to file on remote machine
 tftp:/// Save to file on remote machine
 [edit]
 ubnt@RTR#
 save
 tftp://10.1.0.15/rtr-config.boot
 Saving configuration to
 ‘tftp://10.1.0.15rtr-config.boot’...
 ############################################### 100.0% Done
 [edit]

3.在某个应用场景中,在管理员从 IPsec 隧道变更到 OpenVPN 的中途,管理员不得不将 EdgeRouter 切换回之前的 IPsec 隧道的配置文件。

(1) 在进行更改前,管理员已经备份了一份配置文件,带有 IPsec 隧道的配置:

ubnt@RTR# save config.boot-ipsec
Saving configuration to ‘/config/config.boot-ipsec’...
Done
[edit]

注意:这是一个备份。如果 EdgeRouter 被重启,还是会从默认的文件 “/config/config.boot” 启动。

(2)在管理员删除 IPsec 配置并配置 OpenVPN 隧道后,情况有变,需要再次配置 IPsec 通道。因此,管理员恢复 EdgeRouter 到之前的带有 IPsec 隧道的配置文件。

ubnt@RTR# load config.boot-ipsec
Loading configuration from
‘/config/config.boot-ipsec’...
Load complete. Use ‘commit’ to make changes active.
[edit]
ubnt@RTR# commit
[edit]
ubnt@RTR# save; exit
Saving configuration to ‘/config/config.boot’...
Done
exit
ubnt@RTR:~$

(3) 要在每次 commit 之后自动创建一个远程备份,使用 commit-archive 配置选项,输入 location,然后按下 ? 键。

ubnt@RTR# set system config-management commit-archive location
Possible completions: Uniform Resource Identifier
Detailed information:
“scp://:@/ ”
“ftp://:@/”
“tftp:///”
ubnt@RTR# set system config-management commit-archive location tftp://10.1.0.15/RTR
[edit]
ubnt@RTR# commit
Archiving config... tftp://10.1.0.15/RTR OK
[edit]

(4) 在远程 tftp 服务器,一个带有主机名和日期的备份在每次 commit 时自动保存。

admin2@server://tftpboot/RTR$ ls -l
total 8
-rw------- 1 nobody nogroup 908 Aug 17 17:19
config.boot-RTR.20120817_171932
-rw------- 1 nobody nogroup 874 Aug 17 17:20
config.boot-RTR.20120818_002046

4.你还可以在本地磁盘上为配置文件保存一个指定的版本号。使用 commit-revisions 配置选项。

ubnt@RTR# set system config-management commit-revisions 50
[edit]
ubnt@RTR# commit
[edit]
Here is an example that uses the commit-revisions command:
ubnt@RTR# set system login user joe authentication plaintext-password secret
[edit]
ubnt@RTR# commit
[edit]
ubnt@RTR# save; exit
Saving configuration to ‘/config/config.boot’...
Done
exit
 
ubnt@RTR:~$ show system commit
0 2012-08-17 18:32:13 by ubnt via cli commit
1 2012-08-17 18:31:52 by ubnt via cli commit
2 2012-08-17 18:31:51 by root via init commit

(1) 注意下面的命令需要配置选项 commit-revisions 事先已经设定。

show system commit diff      commit-confirm
show system commit file      confirm
show system commit       rollback
commit comment  

(2) 要显示版本 0 中的更改,使用 show system commit diff 命令。

ubnt@RTR:~$ show system commit diff 0
[edit system login]
+user joe {
+ authentication {
+    encrypted-password
     $1$CWVzYggs$NyJXxC3S572rfm6pY8ZMO.
+    plaintext-password ““
+ }
+ level admin
+}

(3) 要显示版本 0 的整个配置文件,使用 show system commit file 命令。

ubnt@RTR:~$ show system commit file 0

(4) 要将备注添加到 commit,使用 comment 命令。

ubnt@RTR# set system login user joe level operator
[edit]
ubnt@RTR# commit comment “change joe from admin to op”
[edit]
ubnt@RTR# save; exit
Saving configuration to ‘/config/config.boot’...
Done
exit

(5) 现在你可以在使用 show system commit 时看到备注信息了。

ubnt@RTR:~$ show system commit
0 2012-08-17 18:44:41 by ubnt via cli change joe from admin to op
1 2012-08-17 18:34:01 by ubnt via cli commit
2 2012-08-17 18:32:13 by ubnt via cli commit
3 2012-08-17 18:31:52 by ubnt via cli commit
4 2012-08-17 18:31:51 by root via init commit

5.当你在一个远程路由器上工作时,某些更改(例如防火墙或者 NAT 规则)可能会导致用户失去远程访问路由器的权限并且只能通过物理访问路由器来重启。要避免这个问题,在应用有风险的更改时,先使用 commit-confirm 命令。然后使用 confirm 命令来保存你的更改。

ubnt@RTR:~$ configure
[edit]
ubnt@RTR# set firewall name WAN_IN rule 50 action drop
[edit]
ubnt@RTR# set firewall name WAN_IN rule 50 destination address 172.16.0.0/16
[edit]
ubnt@RTR# commit-confirm
commit confirm will be automatically reboot in 10 minutes unless confirmed
Proceed? [confirm][y]
[edit]

6.在你确认更改应该被保存后,使用 confirm 命令。

ubnt@RTR# confirm
[edit]

7.你还可以指定一个等待的分钟数,但你必须记得还要使用 confirm 命令。否则,如果你忘记 confirm,你会发现 EdgeRouter 重启后仍然是之前的配置。

ubnt@RTR# commit-confirm 1
commit confirm will be automatically reboot in 1 minutes unless confirmed
Proceed? [confirm][y]
[edit]
ubnt@RTR#
Broadcast message from root@RTR (Mon Aug 20 14:00:06 2012):
The system is going down for reboot NOW!
INIT: Switching to runlevel: 6
INIT: Stopping routing services...zebra...done.
Removing all Quagga Routes.
[SNIP]

8.要回滚到一个之前的 commit,使用 show system commit 以及 rollback 命令。

ubnt@RTR:~$ show system commit
0 2012-08-21 14:46:41 by admin_5 via cli fix bgp policy maps
1 2012-08-21 14:45:59 by admin_5 via cli commit
2 2012-08-21 14:45:33 by admin_5 via cli fix port forwarding
3 2012-08-21 14:45:15 by admin_5 via cli fix firewall
4 2012-08-21 14:44:29 by ubnt via cli commit
5 2012-08-21 14:21:15 by ubnt via cli add port forward for port 2222 to build-server
6 2012-08-21 14:20:24 by ubnt via cli add dmz interface to eth2
7 2012-08-21 14:19:53 by ubnt via cli add ipsec tunnel to office_exchange
8 2012-08-21 14:07:18 by ubnt via cli add firewall for WAN_IN
9 2012-08-21 14:06:37 by ubnt via cli add user first_last
10   2012-08-21 14:04:47 by ubnt via cli commit
11   2012-08-21 14:04:46 by root via init commit

9.在查看系统 commit 历史之后,你决定放弃最后4个 admin_5做的 commit。回滚系统配置到 commit 4:

ubnt@RTR# rollback 4
Proceed with reboot? [confirm] [y]
Broadcast message from root@RTR (ttyS0) (Mon Aug 21 15:09:12 2012):
The system is going down for reboot NOW!