Verwenden der gRPC-Wählverbindung für die sichere Erfassung von Telemetriedaten
Grundlegendes zum gRPC-Dial-Out
Ab Junos OS Version 22.4R1 unterstützt JTI Remote-gRPC-Dial-Out-Unterstützung auf Routern der ACX-Serie, MX-Serie, PTX-Serie und Switches der QFX-Serie. Bei der gRPC-Auswahl initiiert das Zielgerät (Server) eine gRPC-Sitzung mit dem Collector (Client). Wenn die Sitzung eingerichtet ist, streamt das Ziel die Telemetriedaten, die durch das sensor-group-Abonnement angegeben sind, an den Collector. Dies steht im Gegensatz zur gRPC-Einwahlmethode (Network Management Interface, gNMI), bei der der Collector eine Verbindung zum Zielgerät aufbaut.
Die gRPC-Auswahl vereinfacht das Streaming von Telemetriestatistiken. Wenn Sie das Zielgerät so konfigurieren, dass Statistiken gestreamt und an eine Collector-IP-Adresse exportiert werden, entfällt die Last des Zugriffs auf den Collector (Client). (siehe Abbildung 1).

Die gRPC-Einwahl bietet mehrere Vorteile im Vergleich zur gRPC-Einwahl:
Verringert die Gefährdung von Zielgeräten mit Bedrohungen außerhalb ihrer Topologie.
Vereinfacht den Zugriff auf ein Zielgerät. Bei der gRPC-Einwahlmethode muss ein Collector eine Reihe komplexer Firewallkonfigurationen überwinden, um Zugriff auf das Zielgerät zu erhalten. Bei gRPC Dial-Out ist dies nicht der Fall.
Kollektoren können zustandslos sein. Ohne eine Sitzung einleiten zu müssen, hören sie einfach zu, abonnieren und speichern die gesammelten Daten.
Unterstützen Sie die gegenseitige Verschlüsselung für mehr Sicherheit.
Um den Export von Statistiken zu ermöglichen, fügen Sie die export-profile
sensor
und-Anweisungen auf der Hierarchieebene [edit services analytics
] ein. Das Exportprofil muss die Berichtsrate, den Transportdienst (z. B. gRPC) und das Format (z. B. gbp-gnmi) enthalten. Die Sensorkonfiguration sollte den Namen des Collectors (den Namen des Servers), den Namen des Exportprofils und den Ressourcenpfad enthalten. Ein Beispiel für einen Ressourcenpfad ist /interfaces/interface[name='fxp0'.
Konfigurieren einer IP-Quelladresse für ältere gRPC-Wählverbindungen
Ab Junos OS Evolved Version 24.2R1 unterstützt JTI die Konfiguration einer Quell-IP-Adresse für ältere gRPC-Service-Dial-Out-Verbindungen auf Routern der ACX-Serie, PTX-Serie und Switches der QFX-Serie. In früheren Versionen, die die Legacy-gRPC-Auswahl unterstützen, wird die IP-Adresse der ausgehenden Schnittstelle als Quelladresse verwendet, ohne dass eine Option zum Konfigurieren einer Quell-IP-Adresse besteht. Diese Funktion unterstützt FLEX-Bereitstellungen und bietet die Möglichkeit, eine Auswahl von der angegebenen IP-Adresse oder Schnittstellenadresse des Routers (z. B. einer Loopback0-Adresse) zu senden.
Wenn Sie keine lokale Adresse konfigurieren, wird die lokale Standardadresse verwendet.
So konfigurieren Sie eine lokale Adresse:
Siehe auch
Konfigurieren einer Routinginstanz für ältere gRPC-Wählverbindungen
Ab Junos OS Evolved Version 24.2R1 unterstützt JTI die Konfiguration einer Routing-Instanz für ältere gRPC-Service-Dial-Out-Verbindungen auf Routern der ACX-Serie, PTX-Serie und Switches der QFX-Serie.
Wenn Sie keine Routinginstanz konfigurieren, wird die Standardroutinginstanz verwendet.
So konfigurieren Sie eine Routing-Instanz:
Siehe auch
gRPC-Tunnel – Übersicht
Ein gRPC-Tunnel fungiert als Client-Server-Protokoll, das eine Sitzung vom Ziel über die Standardroutinginstanz oder die konfigurierte Routinginstanz vom Ziel zum TCP-Client wählt. Wenn Sie keine Routinginstanz konfigurieren möchten, verwendet der gRPC-Tunnel die Standardroutinginstanz.
Sie können die Queladresse für jede gRPC-Tunnelsitzung so konfigurieren, dass eine Verbindung zum Tunnelserver hergestellt wird. Wenn Sie die Quelladresse nicht konfigurieren, wählt der Kernel die Quelladresse aus, die den Tunnelserver erreichen kann.
Weitere Informationen zu gRPC-Tunneln finden Sie unter https://github.com/openconfig/grpctunnel.
Ein gRPC-Tunnel hat drei Hauptentitäten:
-
Ziel: Stellt das Netzwerkgerät dar. Das Ziel ist ein gRPC-Client.
-
Tunnelserver: Eine Softwareentität, bei der es sich um eine externe Anwendung handelt, die die Abonnement- und Zielregistrierungen verwaltet. Der Tunnelserver ist ein gRPC-Server.
-
Tunnel-Client: Eine Software-Entität, die Client-Aufgaben ausführt. Der Tunnelclient kann innerhalb des Tunnelservers eigenständig sein. Der Tunnelclient ist ebenfalls ein gRPC-Client.
Vorteile der Verwendung einer gRPC-Tunnelsitzung:
-
Überwindet eine Reihe komplexer Firewall-Konfigurationen, wenn die Verbindung von der Serverseite aus hergestellt wird.
-
Greifen Sie auf verschiedene TCP-Serveranwendungen wie gNMI-gNOI, SSH oder NETCONF-SSH zu, ohne dass betriebliche Anforderungen erforderlich sind.
gRPC-Tunnelarchitektur
Ein gRPC-Tunnel ist eine generische Infrastruktur für TCP-basierte Anwendungen zur Kommunikation innerhalb von gRPC-Nachrichten.
Im Allgemeinen initiiert der TCP-Client eine Verbindung zum TCP-Server oder -Ziel. Junos-Geräte fungieren als Ziel, auf dem TCP-Serveranwendungen wie gNMI-gNOI, SSH und NETCONF-SSH ausgeführt werden. Wenn ein Client den Server nicht erreichen kann, können häufige Gründe sein:
-
Der Server stößt auf komplexe Firewall-Konfigurationen, wobei Firewalls eingehende Verbindungen verhindern.
-
Der Server stößt auf einen Router, der Network Address Translation (NAT) implementiert.
-
Der Server stößt auf alle anderen betrieblichen Anforderungen, wodurch externe Verbindungen verhindert werden.
Wenn ein TCP-Client ein Ziel nicht erreichen kann, können Sie eine gRPC-Tunnelsitzung konfigurieren, um eine Verbindung zwischen dem TCP-Client und dem Ziel herzustellen. Eine gRPC-Tunnelsitzung stellt eine Verbindung in umgekehrter Richtung her, wobei sich ein Ziel in einen TCP-Client einwählt.
Um eine gRPC-Tunnelsitzung zu verwenden, wird der Zielseite ein Tunnelclient hinzugefügt, auf der der grpc-tunnel-Prozess ausgeführt wird und alle gRPC-Tunnel-bezogenen Konfigurationen ausgeführt werden. Auf der TCP-Client-Seite wird ein Tunnelserver hinzugefügt.
Sie müssen die grpc-tunnel
configuration-Anweisung in die [edit system services
]-Hierarchie einschließen, um eine gRPC-Tunnelsitzung zu konfigurieren.
gRPC-Tunnelsicherheit
Der gRPC-Tunnel ist ein Dial-Out-Modell, bei dem ein Gerät basierend auf der Konfiguration eine Verbindung initiiert. Der gRPC-Tunnel befindet sich auf einem sicheren gRPC-Kanal, der TLS-Zertifikate verwendet.
Siehe auch
Beispiel: Konfigurieren eines gRPC-Tunnels
Überblick
In diesem Abschnitt werden die Schritte beschrieben, die zum Konfigurieren des Ziels für dieses Beispiel erforderlich sind. Der Fokus liegt auf dem Ziel, da es sich dabei um das Junos-Gerät handelt, auf dem der gRPC-Tunnel konfiguriert ist.
Anforderungen
In diesem Beispiel werden die folgenden Software- und Hardwarekomponenten verwendet:
-
Junos OS oder Junos Evolved Version 22.4 oder höher für Routing- und Switching-Geräte
-
Ein Host-Gerät als Tunnel-Client
-
Ein Host-Gerät als Tunnel-Server
Topologie
Abbildung 1 zeigt die in diesem Beispiel verwendete Topologie.

Basierend auf der Junos-Konfiguration des Zielgeräts wählt es einen grpc-Tunnel zum Tunnelserver aus. Das Zielgerät registriert sich beim Tunnelserver über den Registerstream-RPC.
Wenn ein Client eine TCP-Sitzung an ein bestimmtes Ziel anfordert, fungiert der Tunnelserver als Vermittler und stellt eine Verbindung zu der oben registrierten Zielsitzung auf dem Tunnelserver her.
Wenn das Ziel den angeforderten Zieltyp unterstützt, wählt das Gerät einen neuen Tunnel aus, der als Tunnelstream-RPC bezeichnet wird. Dadurch wird ein gRPC-Tunnel zwischen dem Client und dem Ziel über den Tunnelserver eingerichtet. Der Tunnelclient kann nun auf die vorgesehenen TCP-Anwendungen auf dem Ziel zugreifen.
Es kann nur einen Register-Stream zwischen einem Tunnelserver und dem Netzwerkgerät geben, aber mehrere Tunnel-Streams für dasselbe Paar.
Konfigurieren eines gRPC-Tunnels
CLI-Schnellkonfiguration
Um dieses Beispiel schnell zu konfigurieren, kopieren Sie die folgenden Befehle, fügen Sie sie in eine Textdatei ein, entfernen Sie alle Zeilenumbrüche, ändern Sie alle Details, die für Ihre Netzwerkkonfiguration erforderlich sind, und kopieren Sie dann die Befehle und fügen Sie sie in die CLI auf der Hierarchieebene [edit] ein.
set system services grpc-tunnel servers server server1 address 10.205.0.1 set system services grpc-tunnel servers server server1 port 50301 set system services grpc-tunnel servers server server1 credentials tls certificate-id client-cert1 set system services grpc-tunnel servers server server1 targets ssh
Schritt-für-Schritt-Anleitung
Führen Sie die folgenden Schritte aus, um den gRPC-Tunnel auf dem Zielgerät zu konfigurieren.
-
Konfigurieren Sie die Server unter gRPC-tunnel.
-
Konfigurieren Sie die IPv4- oder IPv6-Adresse oder den Hostnamen des Tunnelservers.
[edit system services] user@host# set grpc-tunnel servers server server1 address 10.205.0.1
-
Konfigurieren Sie die Portnummer, über die der Tunnelserver lauscht.
[edit system services] user@host# set grpc-tunnel servers server server1 port 50301
-
Konfigurieren Sie die Anmeldeinformationen mit der tls-Anweisung .
[edit system services] user@host# set grpc-tunnel servers server server1 credentials tls certificate-id client-cert1
-
Geben Sie die Zielanwendungen an, auf die Sie zugreifen möchten. Die verfügbaren Optionen sind ssh, netconf-ssh und gnmi-gnoi.
[edit system services] user@host# set grpc-tunnel servers server server1 targets ssh
-
-
(Optional) Legen Sie das Wiederholungsintervall (in Sekunden) fest. Wenn der Tunnelserver nicht erreichbar ist, versucht das Zielgerät, nach Ablauf des Wiederholungsintervalls eine Verbindung herzustellen.
[edit system services] user@host# set grpc-tunnel servers retry-interval 30
-
(Optional)
Legen Sie die Routing-Instanz fest. Wenn Sie die Routinginstanz nicht festlegen, verwendet der gRPC-Tunnel die Standardroutinginstanz.[edit system services] user@host# set grpc-tunnel servers server ts1 routing-instance routing-instance
-
(Optional)
Legen Sie die Quelladresse fest. Wenn Sie die Quelladresse nicht festlegen, wählt der Kernel die Quelladresse aus, die den Tunnelserver erreichen kann.[edit system services] user@host# set grpc-tunnel servers server ts1 source-address 69.70.31.677
-
(Optional) Konfigurieren Sie die target-string-option unter grpc-tunnel.
-
Verwenden Sie die pattern-Anweisung, um eine geordnete Liste der unterstützten Optionen zu erstellen.
[edit system services] user@host# set grpc-tunnel target-string-option pattern hostname custom
-
Verwenden Sie die custom-string-Anweisung , um eine benutzerdefinierte Zeichenfolge zu definieren, die gesendet wird, wenn das Anweisungsmuster eine der Optionen enthält custom .
[edit system services] user@host# set grpc-tunnel target-string-option custom-string device1
-
Verwenden Sie die delimiter-Anweisung , wenn mehr als eine Option im Muster ausgewählt ist. Standardmäßig wird das | (Pipe-Symbol) verwendet.
[edit system services] user@host# set grpc-tunnel target-string-option delimiter |
-
Es können maximal 10 Tunnelserver konfiguriert werden.
Befund
Zeigen Sie die Ergebnisse der Konfiguration auf dem Zielgerät an. Die Ausgabe spiegelt nur die funktionale Konfiguration wider, die in diesem Beispiel hinzugefügt wurde.
user@host> show configuration system services
grpc-tunnel { servers { retry-interval 30; server server1 { address 10.205.0.01; port 50301; credentials { tls { certificate-id client-cert1; } } targets [ ssh ]; routing-instance routing-instance; source-address 69.70.31.677; } server server2 { address 10.205.0.02; port 50302; credentials { tls { ca-profiles [ serverRootCA1 serverRootCA2 ]; } } targets [ gnmi-gnoi netconf-ssh ]; routing-instance routing-instance; source-address 69.70.31.677; } } target-string-option { pattern [ hostname vendor model version custom ]; custom-string device1; delimiter |; } }
Tabelle "Änderungshistorie"
Die Funktionsunterstützung hängt von der Plattform und der Version ab, die Sie verwenden. Verwenden Sie den Feature-Explorer , um festzustellen, ob ein Feature auf Ihrer Plattform unterstützt wird.