SDN之NETCONF Call Home

article/2025/11/10 4:44:15

本文主要内容都来自于今年二月发布的RFC8071 - NETCONF Call Home and RESTCONF Call Home,该RFC从2015年4月提出到最终发布一共修改了17个版本,其间修改内容可以点击查看详细内容。

介绍

NETCONF Call Home支持两种安全传输网络配置协议分别是Secure Shell(SSH)和传输层安全(TLS)

NETCONF协议​​的绑定到SSH在RFC6242中定义。
NETCONF协议​​的绑定到TLS在RFC7589中定义。
SSH协议在RFC4253中定义,TLS协议是在RFC5246中定义。SSHTLS协议都是TCP协议之上的协议。

动机

call home对于网络设备的初始化部署和持续管理都是非常有帮助的。那网络设备为什么使用call home这种方式?

  • 网络设备在第一次启动后可以主动call home,以便在其管理系统上注册。

  • 网络设备可以以一种动态分配IP地址的方式访问网络,但是不会将其分配的IP地址注册到映射服务(例如,动态DNS)。

  • 网络设备可以部署在实现所有内部网络IP地址的网络地址转换(NAT)的防火墙后面。

  • 网络设备元件可以部署在不允许任何管理访问内部网络的防火墙之后。

  • 网络设备可以配置为“隐身模式”,因此没有任何的端口可以提供给管理系统打开连接。

  • 运营商可能倾向于让网络设备发起管理连接,认为在数据中心中保护一个开放端口比在网络中的每个网络设备上具有开放端口更容易。

解决方案概述

下图说明了协议分层的call home

消息层流程PlantUML请查看netconf-messages-layer-flow.puml

这张图有以下几点:

  1. NETCONF服务器首先启动一个TCP连接到NETCONF客户端。
  2. 使用这个TCP连接,NETCONF客户端启动到NETCONF服务器的SSH/TLS会话。
  3. 使用此SSH/TLS会话,NETCONF客户端启动一个到NETCONF服务器的NETCONF会话。

NETCONF客户端

术语“客户端”在RFC6241第1.1节中定义。 在网络管理的情况下,NETCONF客户端可能是一个网络管理系统。

客户端协议操作事项

  • C1 NETCONF客户端侦听来自NETCONF服务器的TCP连接请求。 客户端必须支持在第6节中定义的IANA分配的端口上接受TCP连接,但可以配置为侦听不同的端口。
  • C2 NETCONF客户端接受传入的TCP连接请求,并建立TCP连接。
  • C3 使用此TCP连接,NETCONF客户端启动SSH客户端RFC4253或TLS客户端RFC5246协议。 例如,假定使用IANA分配的端口,则在端口4334接受连接时启动SSH客户端协议,并且在端口4335或端口4336上接受连接时启动TLS客户端协议。
  • C4 当使用TLS时,NETCONF客户端必须告知"peer_allowed_to_send",如RFC6520所定义。 这是必需的,以便NETCONF服务器知道在call home连接时需要发送心跳包,保持长连接。
  • C5 作为建立SSHTLS连接的一部分,NETCONF客户端必须验证服务器提供的主机密钥或证书。 该验证可以通过证书路径验证或通过将主机密钥或证书与先前信任的或“固定的”值进行比较来完成。 如果证书被提交并且包含撤销检查信息,NETCONF客户端应该检查证书的撤销状态。 如果确定证书已被吊销,客户端必须马上关闭连接。
  • C6 如果使用证书路径验证,则NETCONF客户端必须确保提供的证书具有对预先配置的颁发者证书的有效信任链,并且所呈现的证书对客户端之前知道的“标识符”RFC6125进行编码 连接尝试。 如何在证书中编码标识符可以由与证书颁发者相关的策略来确定。 例如,可以知道给定的颁发者只在X.509证书的“CommonName”字段中签署具有唯一标识符(例如,序列号)的IDevID证书Std-802.1AR-2009。
  • C7 服务器的主机密钥或证书经过验证后,客户端将以SSHTLS协议进行建立SSHTLS连接。 在使用NETCONF 服务器执行客户端认证时,NETCONF客户端必须仅使用先前为NETCONF服务器提供的主机密钥或服务器证书关联的凭证。
  • C8 一旦SSHTLS连接建立,NETCONF客户端启动NETCONF客户端RFC6241或RESTCONF客户端RFC8040协议。 假设使用IANA分配的端口,当在端口4334或端口4335上接受连接时启动NETCONF客户端协议,并且当在端口4336上接受连接时启动RESTCONF客户端协议。

客户端配置数据模型

如何配置NETCONFRESTCONF客户端超出了本文的范围。

例如,可以使用什么样的配置来启用对call home的监听,配置可信证书颁发者,或者为预期的连接配置标识符。 也就是说,在NETCONF-MODELS和RESTCONF-MODELS中提供了用于配置NETCONFRESTCONF客户端的YANG RFC7950数据模块,包括call home

NETCONF服务器

术语“服务器”在RFC6241第1.1节中定义。 在网络管理的情况下,NETCONF服务器可能是网络元件或设备。

服务器协议操作

  • S1 NETCONF服务器向NETCONF客户端发起TCP连接请求。 源端口可以根据本地策略或由操作系统随机分配。 服务器必须支持连接到第6节中定义的一个IANA分配的端口,但可以配置为连接到不同的端口。 使用IANA分配的端口,服务器通过SSH连接到NETCONF的端口4334,通过TLS连接到NETCONF的端口4335和通过TLSRESTCONF的端口4336
  • S2 TCP连接请求被接受,TCP连接被建立。
  • S3 使用此TCP连接,NETCONF服务器将启动SSH服务器RFC4253或TLS服务器RFC5246协议,具体取决于它如何配置。 例如,假定使用IANA分配的端口,则在连接到远程端口4334之后使用SSH服务器协议,并且在连接到远程端口4335或远程端口4336之后使用TLS服务器协议。
  • S4 作为建立SSHTLS连接的一部分,NETCONF服务器会将其主机密钥或证书发送给客户端。 如果发送了一个证书,服务器还必须发送所有中间证书到一个知名和可信赖的发行者。 如何发送证书列表在RFC6187第2.1节中为SSH定义,在RFC5246第7.4.2节中为TLS定义。
  • S5 建立SSHTLS会话需要在所有情况下对客户端证书进行服务器身份验证,但RESTCONF除外,其中一些客户端身份验证方案在安全传输连接(TLS)建立后发生。 如果需要传输级(SSHTLS)客户端身份验证,并且客户端无法在本地策略定义的时间内成功向服务器进行身份验证,则服务器必须关闭连接。
  • S6 一旦建立了SSHTLS连接,NETCONF/RESTCONF服务器将启动NETCONF服务器RFC6241或RESTCONF服务器RFC8040协议,具体取决于如何配置。 假设使用IANA分配的端口,则在连接到远程端口4334或远程端口4335之后使用NETCONF服务器协议,并且在连接到远程端口4336之后使用RESTCONF服务器协议。
  • S7 如果需要长连接,作为连接发起者的NETCONF/RESTCONF服务器应该使用keep-alive机制主动测试连接的活跃性。 对于基于TLS的连接,NETCONF/RESTCONF服务器应该发送RFC6520定义的HeartbeatRequest消息。 对于基于SSH的连接,根据RFC4254的第4节,服务器应该发送一个SSH_MSG_GLOBAL_REQUEST消息,其中包含一个特别不存在的"request name"值(例如keepalive@ietf.org)和"want reply"值设置为"1"

服务器配置数据模型

如何配置NETCONFRESTCONF服务器超出了本文的范围。

这包括可能用于指定主机名,IP地址,端口,算法或其他相关参数的配置。 也就是说,NETCONF-MODELS和RESTCONF-MODELS中提供了用于配置NETCONF和RESTCONF服务器的YANG RFC7950数据模块,包括call home

安全考虑

RFC6242和RFC7589以及扩展RFC4253,RFC5246 和RFC8040中描述的安全考虑也适用于此处。

这个RFCSSH/TLS服务器启动底层TCP连接的方式背离了标准的SSHTLS的使用。 这种逆转与RFC4253中的“客户端启动连接”和RFC6125不一致,它们表示“客户端必须构建可接受的引用标识符列表,并且必须独立于服务提供的标识符“ 。

与这些差异有关的风险主要集中在服务器认证上,客户无法将独立构建的引用标识符与服务器提供的引用标识符进行比较。为了减轻这些风险,要求NETCONF/RESTCONF客户端验证服务器的SSH主机密钥或证书,通过对预先配置的发行者证书进行证书路径验证,或者通过将主机密钥或证书与先前信任或“固定”值。此外,当使用证书时,要求客户端能够将在提供的证书中编码的标识符与客户端预先配置的标识符(例如,序列号)相匹配。

对于NETCONF/RESTCONF服务器提供X.509证书的情况,NETCONF/RESTCONF客户端应确保用于证书路径验证的"\"预配置颁发者证书对于服务器的制造商是唯一的。也就是说,证书不应该属于可能为多个制造商颁发证书的第三方认证机构。当使用将共享秘密(例如,密码)传递给服务器的客户机认证机制时,这是特别重要的。否则可能会导致客户端将共享密钥发送到恰好与客户端配置期望的服务器具有相同身份(例如,序列号)的另一个服务器的情况。

接下来会考虑与服务器身份验证无关的问题。

运行NETCONF Call HomeRESTCONF Call Home的面向Internet的主机将通过诸如”zmap“之类的扫描工具进行指纹识别。 SSHTLS都提供了许多方法可以在主机上进行指纹识别。 SSHTLS服务器相当成熟,能够抵御攻击,但是SSHTLS客户端可能不够强大。实施者和部署需要确保提供软件更新机制,以便及时修复漏洞。

攻击者可以在推断出攻击者没有拥有有效密钥之前,对NETCONF/RESTCONF客户端进行拒绝服务(DoS)攻击,执行计算量大的操作。 例如,在TLS1.3中,ClientHello消息包含成本很高的非对称密钥操作的密钥共享值。 推荐使用常见的减轻DoS攻击的预防措施,例如在一系列不成功的登录尝试后暂时将源地址列入黑名单。

当使用带有RESTCONF协议的call home时,在使用一些HTTP认证方案时,特别要注意传送共享密钥(例如密码)的Basic RFC7617和Digest RFC7616方案。 对于使用的任何HTTP客户机认证方案,实施者和部署都应确保查看RFC中的“安全注意事项”部分。

IANA考虑事项

IANA已经在“用户端口”范围内为服务名称“netconf-ch-ssh”,“netconf-ch-tls”和“restconf-ch-tls”分配了三个TCP端口号。 这些端口将是NETCONF Call HomeRESTCONF Call Home协议的默认端口。 以下是遵循RFC6335中的规则的注册模板。

Service Name:           netconf-ch-ssh
Port Number:            4334
Transport Protocol(s):  TCP
Description:            NETCONF Call Home (SSH)
Assignee:               IESG <iesg@ietf.org>
Contact:                IETF Chair <chair@ietf.org>
Reference:              RFC 8071Service Name:           netconf-ch-tls
Port Number:            4335
Transport Protocol(s):  TCP
Description:            NETCONF Call Home (TLS)
Assignee:               IESG <iesg@ietf.org>
Contact:                IETF Chair <chair@ietf.org>
Reference:              RFC 8071Service Name:           restconf-ch-tls
Port Number:            4336
Transport Protocol(s):  TCP
Description:            RESTCONF Call Home (TLS)
Assignee:               IESG <iesg@ietf.org>
Contact:                IETF Chair <chair@ietf.org>
Reference:              RFC 8071

参考实现

关于NETCONF Call Home的实现,可以参考Juniper在github上开源的netconf-call-home。

参考

  • RFC 8071 - NETCONF Call Home and RESTCONF Call Home
  • RFC6242 - Using the NETCONF Protocol over Secure Shell (SSH)
  • RFC7589 - Using the NETCONF Protocol over Transport Layer Security (TLS) with Mutual X.509 Authentication
  • RFC4253 - The Secure Shell (SSH) Transport Layer Protocol
  • RFC5246 - The Transport Layer Security (TLS) Protocol Version 1.2
  • RFC8040 - RESTCONF Protocol
  • Juniper netconf-call-home

# NETCONF # RFC # RFC8071

 


http://chatgpt.dhexx.cn/article/p6nbwsBF.shtml

相关文章

NETCONF原理

NETCONF简介 网络配置协议NETCONF&#xff08;Network Configuration Protocol&#xff09;提供一套管理网络设备的机制&#xff0c;用户可以使用这套机制增加、修改、删除网络设备的配置&#xff0c;获取网络设备的配置和状态信息。通过NETCONF协议&#xff0c;网络设备可以提…

NETCONF YANG原理

NETCONF YANG原理 网络管理技术背景NETCONF协议介绍YAGN建模语言介绍RESTCONF协议 网络管理技术背景 前言 对于设备的配置管理&#xff0c;工程师更习惯使用CLI命令行的方式与设备交互。该方式简单直接&#xff0c;便于理解。但是在网络自动化领域&#xff0c;CLI方式与设备交…

NetConf Brower使用

1.下载MG-SOFT NETCONF Browser Professional Edition 官方地址 2. 安装MG-SOFT NETCONF Browser 下一步下一步操作即可。 3.连接设备 打开的时候选择Continue即可&#xff0c;无须license。 点击File->Connect ,如下&#xff1a; 输入设备用户名称&#xff1a; 这…

Netconf协议学习笔记

Netconf简介 网络配置协议NETCONF&#xff08;Network Configuration Protocol&#xff09;提供一套管理网络设备的机制&#xff0c;用户可以使用这套机制增加、修改、删除网络设备的配置&#xff0c;获取网络设备的配置和状态信息。通过NETCONF协议&#xff0c;网络设备可以提…

NETCONF、RESTCONF和YANG

目录 一、NETCONF、RESTCONF和YANG是之间什么关系&#xff1f; 二、Netconf简介 2.1、一般使用工具&#xff1a;MG-Soft 简介 三、Netconf YANG 原理与实践 3.1、NETCONF协议 3.2、YANG建模语言 3.3、RESTCONF协议 网管协议&#xff1a; SNMP&#xff08;基于UDP&#…

NETCONF--从NETCONF/YANG看网络配置自动化

阅读冗长的NETCONF/YANG的RFC文档是相当乏味枯燥的&#xff0c;结合开发实践&#xff0c;本文试图删其繁&#xff0c;撮其要&#xff0c;给出NETCONF/YANG的轮廓和要点。 引子 NETCONF和YANG的目的是以可编程的方式实现网络配置的自动化&#xff0c;从而简化和加快网络设备和服…

Netconf

Netconf属于软件定义网络的管理和控制协议。 ETCONF协议&#xff0c;由RFC 6241定义&#xff0c;用以替代命令行界面(command line interface, CLI)、简单网络管理协议(Simple Network Management Protocol, SNMP)以及其它专有配置机制。管理软件可以使用NETCONF协议将配置数据…

NetConf简介之一篇文章读懂NetConf

一、背景 有的人早上不起床刷手机&#xff0c;有的人起床之后再卫生间刷手机&#xff0c;有的人在上班的地铁上刷手机&#xff0c;有的人在下班之后的班车上刷手机&#xff0c;有的人在晚上不睡觉刷手机。这其中有许多离不开技术&#xff0c;其中有一个技术就是网络。 网络互…

NETCONF协议详解

目录 目录概述NETCONF11协议详解 1 安全传输层2 消息层 21 hello 211 几种常用的能力 22 rpc和rpc-reply23 notification 3 操作层 31 get32 get-config33 edit-config34 copy-config35 delete-config36 lock37 unlock38 close-session39 kill-session 4 内容层 标准地图相关网…

netconf简介

简介 根据rfc6241 Network Configuration Protocol (NETCONF)介绍&#xff0c;netconf协议提供一种简单的机制&#xff0c;通过该机制网络设备进行管理。协议可以是设备对外提供一套完整并且规范的配置接口&#xff0c;管理者可以通过这些标准接口对设备进行配置操作。 netconf…

五、南向接口协议(四)——NetConf协议

文章目录 1 什么是NetConf协议2 NetConf协议的其他特点3 NETCONF协议框架3.1 NETCONF传输层3.2 NETCONF消息层&#xff08;采用RPC协议&#xff09;3.3 NETCONF操作层&#xff08;NETCONF核心&#xff09;3.4 NETCONF内容层 4 操作举例4.1 <get-config>4.2 <edit-conf…

Netconf网络配置协议讲解

目录 什么是Netconf 为什么要提出Netconf 数据的类别 传统网络配置协议 Netconf配置协议 Netconf协议架构 安全传输层 消息层 操作层 内容层 Netconf配置设备流程 通过Python进行Netconf配置 Restconf 什么是Netconf NETCONF&#xff08;Network Configuration Pr…

netconf协议

最近项目中要用到netconf协议也和设备之间进行连接&#xff0c;学习一下netconf协议并且记录下来 一&#xff1a;什么是netconf netconf协议也可以叫做网络配置协议&#xff0c;它提供了一套管理网络设备的机制&#xff0c;用户可以使用这套机制增加&#xff0c;修改&#xff0…

neq的问题

最近做一个项目&#xff0c;用的tp5&#xff0c;刚开始上手&#xff0c;就给我出现了一个莫名其妙的问题&#xff1b; 也不算是错误&#xff0c;看代码 我根据这个条件去用select查询数据库的数据&#xff0c;然后居然只给我返回一条数据&#xff0c;我以为是我的查询语句写错…

php条件判断结构一个嵌套,thinkphp:html中的if condition 嵌套写法、条件判断的各种情况(eq、neq、gt、lt、or、and) - 猫扑天空...

伪代码 术语符号 大于 gt 小于 lt 等于 eq 不等于 neq 或者 or 并且 and 变量start_time代表的含义是活动的开始时间,变量start_time代表的含义是活动的结束时间。两个变量都是时间戳的格式。下面就将显示状态一列的数据&#xff0c;各种情况下的判断条件列举出来。 等于 eq 进…

前端模板标签eq与neq的使用,以及管理系统模块权限控制

1&#xff09;方法一&#xff1a; 在超级管理员登录情况下显示 1.当前登录用户只能修改自己 2.超级管理员admin拥有查看普通用户和删除其他用户的权限&#xff0c;但删除不了自己 {volist name"userList" id"user" empty"$empty"}<tr><…

2022-03-11 工作记录--PHP-eq(表示等于)、 neq(表示不等于)

PHP-eq&#xff08;表示等于&#xff09;、 neq&#xff08;表示不等于&#xff09;

mysql neq什么意思_【知识科普】标准中的Eqv、Idt和Neq分别代表什么?

对于接触标准化的工作者&#xff0c;每日避免不了和各种各样类别的标准打交道。除了标准的分类&#xff0c;分级、层次等问题&#xff0c;一些特殊的英文字符&#xff0c;也许让很多标准化人员产生困惑&#xff0c;接下来&#xff0c;请允许小编花一些时间&#xff0c;跟您详细…

Flyway针对多数据源配置实战方案

Flyway针对多数据源配置实战方案 介绍 这篇文章主要介绍Flyway、Druid和多数据源结合起来如何配置和使用的方案。网上一些文章似乎都没有达到一开始我自己琢磨想要的程度&#xff0c;还是自己琢磨和调试出来了一套方案&#xff0c;欢迎大家斧正。 引入pom文件 首先引入对应…

Flyway学习和使用

1、什么是Flyway Flyway is an open-source database migration tool. It strongly favors simplicity and convention over configuration. It is based around just 7 basic commands: Migrate, Clean, Info, Validate, Undo, Baseline and Repair. Flyway是一款开源的数据…