Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
 

使用 gRPC 拨出进行安全遥测收集

了解 gRPC 拨出

从 Junos OS 20.2R1 版开始,JTI 在 ACX 系列路由器、MX 系列路由器、PTX 系列路由器和 QFX 系列交换机上支持远程 gRPC 拨出支持。使用 gRPC 拨号,目标设备(服务器)会与收集器(客户端)发起 gRPC 会话。建立会话后,目标将传感器组订阅指定的遥测数据流式传输到收集器。这与 gRPC 网络管理接口 (gNMI) 拨号方法形成鲜明对比,gRPC 网络管理接口 (gNMI) 拨号方法由收集器发起与目标设备的连接。

gRPC 拨出简化了流遥测统计信息。将目标设备配置为流式传输统计信息并将其导出到收集器 IP 地址,可消除对收集器(客户端)进行访问的负担。(请参阅 图 1)。

图 1:gRPC 拨出,使用 gRPC Dial-Out with

与 gRPC 拨号相比,gRPC 拨出具有多个优势:

  • 减少目标设备暴露在拓扑结构之外的威胁。

  • 简化对目标设备的访问。gRPC 拨号方法需要收集器克服一系列复杂的防火墙配置,才能访问目标设备。gRPC 拨出没有。

  • 收集器可以是无状态的;无需启动会话,只需侦听、订阅和存储收集的数据

  • 支持相互加密以提高安全性。

要启用统计信息导出,请将 export-profilesensor 语句包含在 [edit services analytics] 层次结构级别。导出配置文件必须包括报告速率、传输服务(例如 gRPC)和格式(例如 gbp-gnmi)。传感器配置应包括收集器的名称(服务器名称)、导出配置文件的名称和资源路径。资源路径的一个示例是 /interfaces/interfaces[name='fxp0'

从 Junos OS 演化版 20.2R1 开始,PTX 系列路由器支持 gRPC 拨出。

gRPC 隧道概述

gRPC 隧道充当客户端-服务器协议,通过默认路由实例将会话从目标拨出至 TCP 客户端。

有关 gRPC 隧道的更多信息,请参阅 https://github.com/openconfig/grpctunnel

gRPC 隧道有三个主要实体:

  • 目标 — 表示网络设备。目标是 gRPC 客户端。

  • 隧道服务器 — 一种软件实体,是管理订阅和目标注册的异机应用程序。隧道服务器是 gRPC 服务器。

  • 隧道客户端 — 执行客户端任务的软件实体。隧道客户端可以在隧道服务器内独立运行。隧道客户端也是 gRPC 客户端。

使用 gRPC 隧道会话的优势:

  • 克服一系列复杂的防火墙配置,因为从服务器端建立连接。

  • 无需任何操作要求即可访问各种 TCP 服务器应用程序,如 gNMI-gNOI、SSH 或 NETCONF-SSH。

gRPC 隧道架构

gRPC 隧道是用于基于 TCP 的应用程序的通用基础架构,可在 gRPC 消息中进行通信。

通常,TCP 客户端会启动与 TCP 服务器或目标的连接。Junos 设备充当运行 TCP 服务器应用程序(如 gNMI-gNOI、SSH 和 NETCONF-SSH)的目标。如果客户端无法访问服务器,常见原因包括:

  • 服务器可以进入复杂的防火墙配置,防火墙会阻止入站连接。

  • 服务器在实施网络地址转换 (NAT) 的路由器中运行。

  • 服务器需要满足任何其他操作要求,从而阻止外部连接。

当 TCP 客户端无法访问目标时,您可以配置 gRPC 隧道会话,在 TCP 客户端和目标之间建立连接。gRPC 隧道会话会建立相反方向的连接,其中目标拨出到 TCP 客户端。

要使用 gRPC 隧道会话,需要将隧道客户端添加到运行 grpc 隧道进程并执行所有 gRPC 隧道相关配置的目标端。在 TCP 客户端,添加了一个隧道服务器。

您必须在 grpc-tunnel [edit system services] 层次结构中包含配置语句,才能配置 gRPC 隧道会话。

gRPC 隧道安全

gRPC 隧道是一种拨出模型,设备根据配置启动连接。gRPC 隧道位于使用 TLS 证书的安全 gRPC 通道上。

示例:配置 gRPC 隧道

概述

本节介绍配置此示例目标所需的步骤。重点是目标,因为这是配置 gRPC 隧道的 Junos 设备。

要求

此示例使用以下软件和硬件组件:

  • 适用于路由和交换设备的 Junos OS 或 Junos Evolved 22.4 或更高版本

  • 一台运行 Junos 的目标设备

  • 一个主机设备作为隧道客户端

  • 一个主机设备作为隧道服务器

拓扑

图 1 显示了此示例中使用的拓扑。

图 2:gRPC 隧道设置 gRPC tunnel setup

根据目标设备的 Junos 配置,它会将 grpc 隧道拨出到隧道服务器。目标设备通过注册流 RPC 向隧道服务器注册自身。

当客户端从特定目标请求 TCP 会话时,隧道服务器充当中介,并通过同一 Register 流 RPC 从目标请求新的数据会话。

如果目标支持所请求的目标类型,设备将拨出一条称为隧道流 RPC 的新隧道。这将通过隧道服务器在客户端和目标之间建立一个 gRPC 隧道。隧道客户端现在可以访问目标上预期的 TCP 应用程序。

注意:

隧道服务器和网络设备之间只能有一个 Register 流,但同一对隧道设备只能有多个隧道流。

配置 gRPC 隧道

CLI 快速配置

要快速配置此示例,请复制以下命令,将其粘贴到文本文件中,删除所有换行符,更改详细信息,以便与网络配置匹配,然后将命令复制并粘贴到 [edit] 层次结构级别的 CLI 中。

逐步过程

按照以下步骤在目标设备中配置 gRPC 隧道。

  1. 在 gRPC 隧道下配置服务器。

    1. 配置隧道服务器的 IPv4 或 IPv6 地址或主机名。

    2. 配置隧道服务器侦听的端口号。

    3. 使用 tls 语句配置凭据。

    4. 指定要访问的目标应用程序。可用的选项包括 sshnetconf-ssh gnmi-gnoi

  2. (可选)设置 重试间隔 (以秒为单位)。如果隧道服务器无法访问,则目标设备在重试间隔后重试以连接。

  3. (可选)在 grpc 隧道下配置目标字符串选项

    1. 使用 模式 语句创建受支持选项的有序列表。

    2. 使用 自定义字符串 语句定义当语句 模式 包含 custom 为选项之一时发送的自定义字符串。

    3. 在模式中选择多个选项时,请使用 分隔符 语句。默认情况下,使用 | (管道符号)。

注意:

最多可配置 10 个隧道服务器。

结果

显示目标设备上的配置结果。输出仅反映此示例中添加的功能配置。

版本历史记录表
释放
描述
20.2R1
从 Junos OS 20.2R1 版开始,JTI 在 ACX 系列路由器、MX 系列路由器、PTX 系列路由器和 QFX 系列交换机上支持远程 gRPC 拨出支持。
20.2R1
从 Junos OS 演化版 20.2R1 开始,PTX 系列路由器支持 gRPC 拨出。