6-1 CE12800配置netconf服务端和ncclient库客户端
netconf协议介绍
2002年,因特网架构委员会(Internet Architecture Board, IAB)提出SNMP在配置、管理上有不少劣势,从而导致了NETCONF协议的诞生。
NETCONF(网络配置协议)是由IETF开发和标准化的网络管理协议。于2006年12月发布为RFC4741,后于2011年6月修订并发布为RFC6241。 NETCONF提供了安装、操作和删除网络设备配置的机制。它的操作基于简单的远程过程调用RPC层实现。对配置数据和协议消息都使用基于可扩展标记语言XML的数据编码。协议消息通过安全传输协议SSH进行交换。
NETCONF 协议已在一些主要设备供应商的网络设备如路由器和交换机中实现。
NETCONF 协议在概念上可以分为四层:
内容层 (Content Layer): 包含配置数据和通知数据。模型语言前期用XML定义,也可以JSON,后来发明了YANG定义。
操作层 (Operations Layer): 定义了一组基本协议操作,用于检索和编辑配置数据。
消息层 (Messages Layer): 提供了一种用于编码远程过程调用RPC (Remote Procedure Call远程过程调用)和通知的机制。
安全传输层 (Secure Transport Layer): 提供客户端和服务器之间安全可靠的消息传输。
YANG和RPC在后面章节中再具体说。
与SNMP协议对比:
特性 | SNMP | NETCONF |
|---|---|---|
发明时间 | v3 1998年 | 修订版2011年 |
设计目标 | 网络监控 | 网络配置 |
数据模型 | Mib | XML |
操作 | 简单 | 复杂,事务性 |
安全性 | SNMPv3较好 | 高 |
适用场景 | 网络监控 | 网络配置,自动化 |
CE12800配置netconf服务
CE12800介绍
交换机CE12800,定位比S5700更高,园区核心数据交换机。注意与之前的S5700略有不同:
镜像比较大,eNSP没有自带,需要先导入再使用。各厂商设备镜像可以从网上寻找,这里由老师提供。
system-view进入配置后是推出时提交才生效。system-view immediately输入一句生效一句跟之前S5700一样。默认不会输出info-center日志。CE12800的第一个GE口为1/0/0,需要手动开启。S5700的第一个GE口为0/0/1,连线后自动开启。接口编号可通过
display interface brief可确认。CE12800设备对资源消耗较大,8G内存的电脑中不建议开2个以上CE12800设备,设备开机时间较长约1分钟耐心等待。
一、导入镜像
从交换机系列拖出CE12800设备,鼠标右键/启动。

弹窗需要导入镜像,选择.img后缀的镜像包路径,导入。
镜像由老师提供,已下发至学生机的下载目录C:\Users\Administrator\Downloads\CE12800-base.img (文件路径和文件名可能有变化,1.2Gb左右大小,导入时间约1分钟)。

再次启动设备,无弹窗。鼠标右键/CLI打开设备终端,启动时间较长约2分钟。
二、配置IP和与物理机互通
仍然是2-1节的基本操作。
配置Cloud,略。
配置IP
# ⚠️进入到配置模式。之前S5700配置模式是输入一句生效一句并打印系统日志。CE12800配置模式默认情况下最后提交commit才会生效,所有添加immediately参数。 <HUAWEI>system-view immediately # 命令缩写为sy im [HUAWEI] # 配置模式(立即生效模式),非立即生效模式标志为[~HUAWEI]。 [HUAWEI]interface vlanif1 # vlanif跟编号中间可以加空格也可以不加 # undo portswitch # 二层设备变三层设备,这句可省略,配完ip就自动转换了。 [HUAWEI-Vlanif1]ip address 192.168.56.100 24 [HUAWEI-Vlanif1]q # [HUAWEI]display ip interface brief # 能看到vlanif1上配的ip # [HUAWEI]ping 192.168.56.1 # 此时ping不通,因为物理口需要手动开启。连线CE12800和Cloud。
开启GE1/0/0
CE12800与S5700连线后自动开启GE0/0/1口不同,需要手动开启。[HUAWEI]display interface brief # 查看所有物理接口,第一个接口编号为GE1/0/0 [HUAWEI]int GE1/0/0 # 可以使用GigabitEthernet的缩写,S5700不能用缩写,一处小不同。 [HUAWEI-GE1/0/0]undo shutdown # 撤销关闭,即启动 [HUAWEI-GE1/0/0]q [HUAWEI]display interface brief # 回显信息中能看到GE1/0/0口PHY物理状态为UP启动。 [HUAWEI]display ip interface brief # 回显信息中能看到vlanif1口PHY物理状态为UP启动。 [HUAWEI]ping 192.168.56.1 # 此时能ping通[HUAWEI]display interface brief PHY: Physical *down: administratively down ^down: standby (l): loopback (s): spoofing (b): BFD down (e): ETHOAM down (d): Dampening Suppressed (p): port alarm down (dl): DLDP down (c): CFM down InUti/OutUti: input utility rate/output utility rate Interface PHY Protocol InUti OutUti inErrors outErrors GE1/0/0 up up 0% 0% 0 0 GE1/0/1 *down down 0% 0% 0 0 GE1/0/2 *down down 0% 0% 0 0物理机终端WindowsPowerShell最终可ping通192.168.56.100。
三、开启net-conf服务
进入用户管理模式aaa,创建用户zhangsan ,密码Huawei@123。
用户的级别分为16个级别,级别标识为0~15,标识越高则级别越高。具体来说:
0级(参观级):可配置网络诊断工具命令(如Ping、tracert)以及从本设备出发访问外部的命令(如Telnet客户端等)。
1级(监控级):主要用于系统维护,包括部分display等命令。但需要注意的是,并不是所有的display命令都是监控级,如display current-configuration和display saved-configuration的命令是三级管理级。
2级(配置级):业务配置命令,包括路由等各个网络层次的命令,向用户提供直接的网络服务。
3~15级(管理级):用于系统基本运行的命令,对业务提供支撑作用。这些命令包括文件系统操作、FTP/TFTP下载、用户管理命令、命令级别设置命令以及用于业务故障诊断的debugging命令等。
netconf协议用ssh/tls/SOAP来承载命令传输,期中SSH最为流行,需要先进行SSH配置,详见3-1节。
创建本地用户zhangsan, Huawei@123 。开启SSH服务。添加本地用户到ssh连接授权名单里。登录模式为密码鉴权。
允许用户使用netconf协议管理设备。
开启netconf协议。进入netconf配置,修改依赖的SSH协议端口号22->830,这是netconf协议约定俗成上的习惯,与单纯的SSH协议的22端口区分开。
ncclient库
安装ncclient库
pip install ncclient==0.6.19pip install ncclient -i https://mirrors.cloud.tencent.com/pypi/simple --trusted-host mirrors.cloud.tencent.comPython代码
# 安装ncclient库,Windows终端下: pip install ncclient==0.6.19 # 文档一般不太全 https://ncclient.readthedocs.io/en/latest/ # (个人笔记ncclient 0.6.16导入有bug https://github.com/ncclient/ncclient/issues/603) from ncclient import manager with manager.connect( host='192.168.56.100', # 与服务端IP port=830, # 与服务端命令配置内容保持一致 username='zhangsan', # 与服务端命令配置内容保持一致 password='Huawei@123', # 与服务端命令配置内容保持一致 hostkey_verify=False, device_params={'name':'huawei'} # 参数 厂商和配置文件格式xml(另一种配置格式是yang),见官方文档 ) as m: # source参数值:startup开机配置;backup备份配置;running当前配置。 resp_xml: str = m.get_config(source='running').data_xml with open("./CE1conf.xml", mode='w') as f: f.write(resp_xml) print('已保存信息到当前文件夹下CE1conf.xml') # 如果想在控制台直接输出 # 安装三方库xmltodict负责xml格式转dict结构,引入pprint内置库格式化输出。 # import pprint # import xmltodict # pprint.pprint(xmltodict.parse(resp_xml)) # 后续步骤 # 解析 CE1conf.xml 文件(书p68页为基础用法),可以用内置库xml(不太好用)或第三方库lxml(推荐)。 # 传输配置 xml模板加jinja2渲染。 # YANG模板配置语言,取代xml。 # 几种报错分析: # 1. 超时timeout。检查物理机能否ping通服务器192.168.56.100 # 2. connection socket closed from 192.168.56.100:830。如果能ping通ip,服务端重新运行设置830端口的那两行命令。 # 3. authentication error,检查客户端代码中的username password是否与服务端命令一致。
参考
ncclient document
华为CE系列交换机Netconf初探--ncclient
华为ENSP用户权限深度解析:构建安全高效的网络管理