网络设备配置管理与版本控制

http://netkiller.github.io/journal/network.ios.html

Mr. Neo Chen (陈景峯), netkiller, BG7NYT


中国广东省深圳市龙华新区民治街道溪山美地
518131
+86 13113668890


版权声明

转载请与作者联系,转载时请务必标明文章原始出处和作者信息及本声明。

文档出处:
http://netkiller.github.io
http://netkiller.sourceforge.net

微信扫描二维码进入 Netkiller 微信订阅号

QQ群:128659835 请注明“读者”

2017-06-16

摘要

2014-12-25


目录

1. 背景

我们经常会频繁的配置网络设备,但有时候做了某些操作出现了异常,我们不清楚问题出在哪里,还原配置也不起作用,甚至你根本记得你改动了什么。

另外我们希望能够监控网络设备的配置变化,一个公司可能有很多网络工程师,他们都有权限操作路由交换或防火墙设备,我们要知道网络设备配置什么时候发生了变化,并通知其他几位同事。同时我们要对修改操作记录归档,方便日后查阅。

2. 怎样实现网络设备配置管理

我们每隔一段时间便将网络设备的配置导出存档,然后通过版本控制工具进行版本化管理,远离非常简单。

有了版本控制我们可能很方便的回撤操作。下面我来详细讲解怎样安装于配置该软件

$ git clone https://github.com/netkiller/logging.git
$ cd logging
$ python3 setup.py sdist
$ python3 setup.py install

$ sudo apt-get install expect
$ sudo chmod +x /usr/local/libexec/*		
		

配置网络设备地址

打开 /usr/local/bin/cisco 文件,修改BACKUP_DIR,改为你的备份目录

$ vim /usr/local/bin/cisco

CFGFILE=$BASEDIR/etc/cisco.conf
BACKUP_DIR=~/.backup

$ cat /usr/local/etc/cisco.conf 
192.168.50.1 mgmt EBopQ1X2vMkrl M8YJxvDiddG6QK
192.168.50.2 mgmt EBopQ1X2vMkrl M8YJxvDiddG6QK
192.168.50.3 mgmt EBopQ1X2vMkrl M8YJxvDiddG6QK
192.168.50.4 mgmt EBopQ1X2vMkrl M8YJxvDiddG6QK

$ sudo chmod 600 /usr/local/etc/cisco.conf		
		

编辑/usr/local/etc/cisco.conf文件,格式如下:

host | username | password | enable password
		

初始化版本仓库

# Initialized empty Git repository in local.
$ cisco init

# Initialized empty Git repository from remote.
$ cisco init http://xxx.xxx.xxx.xxx/project/xxxx.git
$ cisco init user@host:/project/xxxx.git		
		

启动,停止等操作

$ cisco
Usage: /usr/local/bin/cisco {init|start|stop|status|restart}

# cisco start
# cisco stop 		
		

查看网络设备配置变化

查看当前与上一个版本的变化

$ cd your_backup_dir
$ git diff HEAD HEAD~ route.running-config		
		

查看当前与前面第三个版本的变化

$ cd your_backup_dir
$ git diff HEAD HEAD~3 route.running-config		
		

3. 总结

该程序主要是备份网络设备的配置文件,当然也能起到监控做用,但备份间隔时间需要根据你的情况设定,如果太频繁也不太好,间隔太长可能起不到很好的监控作用。

关于监控与报警,你可以通过git diff 命令对比与上次配置文件的变化,通常是没有变化的,一旦发生变化便通过电子邮件与短信发出警报。至于怎么实现,不再本文讨论范围,有兴趣可以参考笔者的其他技术手札。

关于版本控制软件更多细节,延伸阅读《Netkiller Version 手札》