网络自动化运维 Help

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略有不同:

  1. 镜像比较大,eNSP没有自带,需要先导入再使用。各厂商设备镜像可以从网上寻找,这里由老师提供。

  2. system-view进入配置后是推出时提交才生效。 system-view immediately输入一句生效一句跟之前S5700一样。默认不会输出info-center日志。

  3. CE12800的第一个GE口为1/0/0,需要手动开启。S5700的第一个GE口为0/0/1,连线后自动开启。接口编号可通过display interface brief可确认。

  4. CE12800设备对资源消耗较大,8G内存的电脑中不建议开2个以上CE12800设备,设备开机时间较长约1分钟耐心等待。

一、导入镜像

  1. 从交换机系列拖出CE12800设备,鼠标右键/启动。

    6 1

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

    6 1 ce12800
    6 1 ce12800 2

  3. 再次启动设备,无弹窗。鼠标右键/CLI打开设备终端,启动时间较长约2分钟。

二、配置IP和与物理机互通

仍然是2-1节的基本操作。

  1. 配置Cloud,略。

  2. 配置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不通,因为物理口需要手动开启。
  3. 连线CE12800和Cloud。

  4. 开启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

  5. 物理机终端WindowsPowerShell最终可ping通192.168.56.100。

三、开启net-conf服务

  1. 进入用户管理模式aaa,创建用户zhangsan ,密码Huawei@123

  2. 用户的级别分为16个级别,级别标识为0~15,标识越高则级别越高。具体来说:

    • 0级(参观级):可配置网络诊断工具命令(如Ping、tracert)以及从本设备出发访问外部的命令(如Telnet客户端等)。

    • 1级(监控级):主要用于系统维护,包括部分display等命令。但需要注意的是,并不是所有的display命令都是监控级,如display current-configuration和display saved-configuration的命令是三级管理级。

    • 2级(配置级):业务配置命令,包括路由等各个网络层次的命令,向用户提供直接的网络服务。

    • 3~15级(管理级):用于系统基本运行的命令,对业务提供支撑作用。这些命令包括文件系统操作、FTP/TFTP下载、用户管理命令、命令级别设置命令以及用于业务故障诊断的debugging命令等。

  3. netconf协议用ssh/tls/SOAP来承载命令传输,期中SSH最为流行,需要先进行SSH配置,详见3-1节。

  4. 创建本地用户zhangsanHuawei@123 。开启SSH服务。添加本地用户到ssh连接授权名单里。登录模式为密码鉴权。

  5. 允许用户使用netconf协议管理设备。

  6. 开启netconf协议。进入netconf配置,修改依赖的SSH协议端口号22->830,这是netconf协议约定俗成上的习惯,与单纯的SSH协议的22端口区分开。

# 创建本地用户。 [HUAWEI]aaa [HUAWEI-aaa]local-user zhangsan password irreversible-cipher Huawei@123 # 回显 Info: A new user is added. [HUAWEI-aaa]local-user zhangsan service-type ssh [HUAWEI-aaa]local-user zhangsan level 3 # [HUAWEI-aaa]q [HUAWEI] # 开启SSH(华为设备里叫stelnet)服务,添加本地用户zhangsan到ssh连接授权名单里。 [HUAWEI]stelnet server enable # 回显Info: Succeeded in starting the STelnet server. [HUAWEI]ssh user zhangsan authentication-type password # 回显Info: Succeeded in adding a new SSH user. [HUAWEI]ssh user zhangsan service-type snetconf # 验证ssh服务 # [HUAWEI]display ssh server status # 回显信息中查看ipv4 stelnet是否为enable # [HUAWEI]display ssh user-information zhangsan # 能看到zhangsan相关信息 # 开启NetConf协议 [HUAWEI]snetconf server enable # 回显Info: Succeeded in starting the SNETCONF server on SSH port 22. [HUAWEI]netconf [HUAWEI-netconf]protocol inbound ssh port 830 # 回显Info: Succeeded in starting the ssh port 830 service. [HUAWEI-netconf]q [HUAWEI]

ncclient库

  1. 安装ncclient库

    pip install ncclient==0.6.19
    pip install ncclient -i https://mirrors.cloud.tencent.com/pypi/simple --trusted-host mirrors.cloud.tencent.com

  2. Python代码

    # 安装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是否与服务端命令一致。
    6 1ncclient

参考

ncclient document
华为CE系列交换机Netconf初探--ncclient
华为ENSP用户权限深度解析:构建安全高效的网络管理

08 四月 2025