Utilisation de la numérotation sortante gRPC pour la collecte sécurisée de la télémétrie
Comprendre la numérotation sortante gRPC
À partir de Junos OS version 22.4R1, JTI prend en charge la prise en charge de la numérotation sortante gRPC à distance sur les routeurs ACX Series, les routeurs MX Series, les routeurs PTX Series et les commutateurs QFX Series. Avec la numérotation gRPC, l’équipement cible (serveur) initie une session gRPC avec le collecteur (client). Lorsque la session est établie, la cible transmet au collecteur les données de télémétrie spécifiées par l’abonnement du groupe de capteurs. Cette méthode contraste avec la méthode d’appel à distance de l’interface de gestion de réseau gRPC (gNMI), dans laquelle le collecteur établit une connexion à l’équipement cible.
La numérotation sortante gRPC simplifie les statistiques de télémétrie en continu. La configuration de l’équipement cible pour qu’il diffuse les statistiques et les exporte vers une adresse IP de collecteur supprime la charge d’accès imposée au collecteur (client). (voir Figure 1).

La numérotation sortante gRPC offre plusieurs avantages par rapport à la numérotation entrante gRPC :
Réduit l’exposition de l’équipement cible aux menaces en dehors de sa topologie.
Simplifie l’accès à un équipement cible. La méthode d’appel entrant gRPC nécessite qu’un collecteur surmonte une série de configurations complexes de pare-feu pour accéder à l’équipement cible. Ce n’est pas le cas de la numérotation sortante gRPC.
Les collecteurs peuvent être sans état ; Sans avoir besoin de lancer une session, il leur suffit d’écouter, de s’abonner et de stocker les données collectées.
Prise en charge du chiffrement mutuel pour une sécurité renforcée.
Pour activer l’exportation des statistiques, incluez les export-profile
instructions et sensor
au niveau de la hiérarchie [edit services analytics
]. Le profil d’exportation doit inclure le taux de rapport, le service de transport (par exemple, gRPC) et le format (par exemple, gbp-gnmi). La configuration du capteur doit inclure le nom du collecteur (nom du serveur), le nom du profil d’exportation et le chemin d’accès à la ressource. Un exemple de chemin d'accès aux ressources est /interfaces/interface[name='fxp0'.
Configuration d’une adresse IP source pour les connexions sortantes gRPC héritées
À partir de Junos OS Evolved version 24.2R1, JTI prend en charge la configuration d’une adresse IP source pour les connexions sortantes du service gRPC héritées sur les routeurs ACX Series, les routeurs PTX Series et les commutateurs QFX Series. Dans les versions antérieures qui prennent en charge la numérotation sortante gRPC héritée, l’adresse IP de l’interface sortante est utilisée comme adresse source sans possibilité de configuration d’une adresse IP source. Cette fonctionnalité prend en charge les déploiements FLEX, offrant la possibilité d'envoyer un appel sortant à partir de l'adresse IP ou de l'adresse d'interface spécifiée par le routeur (telle qu'une adresse loopback0).
Si vous ne configurez pas d’adresse locale, c’est l’adresse locale par défaut qui est utilisée.
Pour configurer une adresse locale :
Voir aussi
Configurer une instance de routage pour les connexions sortantes gRPC héritées
À partir de Junos OS Evolved version 24.2R1, JTI prend en charge la configuration d’une instance de routage pour les connexions sortantes du service gRPC héritées sur les routeurs ACX Series, les routeurs PTX Series et les commutateurs QFX Series.
Si vous ne configurez pas d’instance de routage, c’est l’instance de routage par défaut qui est utilisée.
Pour configurer une instance de routage :
Voir aussi
Présentation des tunnels gRPC
Un tunnel gRPC agit comme un protocole client-serveur qui compose une session de la cible au client TCP via l’instance de routage par défaut ou l’instance de routage configurée. Si vous ne choisissez pas de configurer une instance de routage, le tunnel gRPC utilise l’instance de routage par défaut.
Vous pouvez configurer l’adresse source de chaque session de tunnel gRPC afin d’établir une connexion au serveur de tunnel. Si vous ne configurez pas l’adresse source, le noyau choisit l’adresse source qui peut atteindre le serveur de tunnel.
Pour plus d’informations sur les tunnels gRPC, reportez-vous à https://github.com/openconfig/grpctunnel.
Un tunnel gRPC comporte trois entités principales :
-
Cible : représente le périphérique réseau. La cible est un client gRPC.
-
Serveur de tunnel : entité logicielle qui est une application hors boîtier qui gère l’abonnement et les inscriptions cibles. Le serveur de tunnel est un serveur gRPC.
-
Client de tunnel : entité logicielle qui exécute les tâches client. Le client de tunnel peut être autonome au sein du serveur de tunnel. Le client de tunnel est également un client gRPC.
Avantages de l’utilisation d’une session de tunnel gRPC :
-
Résout une série de configurations de pare-feu complexes lorsque la connexion est établie côté serveur.
-
Accédez à diverses applications serveur TCP telles que gNMI-gNOI, SSH ou NETCONF-SSH sans aucune configuration opérationnelle.
Architecture de tunnel gRPC
Un tunnel gRPC est une infrastructure générique permettant aux applications basées sur TCP de communiquer dans les messages gRPC.
En général, le client TCP établit une connexion au serveur ou à la cible TCP. Les équipements Junos agissent en tant que cible et exécutent des applications serveur TCP telles que gNMI-gNOI, SSH et NETCONF-SSH. Si un client ne parvient pas à atteindre le serveur, les raisons courantes peuvent être les suivantes :
-
Le serveur se heurte à des configurations de pare-feu complexes qui empêchent les connexions entrantes.
-
Le serveur se heurte à un routeur implémentant la traduction d’adresses réseau (NAT).
-
Le serveur répond à toutes les autres exigences opérationnelles, ce qui empêche les connexions extérieures.
Lorsqu’un client TCP n’est pas en mesure d’atteindre une cible, vous pouvez configurer une session de tunnel gRPC afin d’établir une connexion entre le client TCP et la cible. Une session de tunnel gRPC établit une connexion dans le sens inverse de l’appel d’une cible à un client TCP.
Pour utiliser une session de tunnel gRPC, un client de tunnel est ajouté au côté cible où le processus grpc-tunnel s’exécute et toutes les configurations liées au tunnel gRPC sont effectuées. Côté client TCP, un serveur de tunnel est ajouté.
Vous devez inclure l’instruction grpc-tunnel
de configuration dans la hiérarchie [edit system services
] pour configurer une session de tunnel gRPC.
Sécurité des tunnels gRPC
Le tunnel gRPC est un modèle d’appel sortant dans lequel un périphérique établit une connexion en fonction de la configuration. Le tunnel gRPC se trouve sur un canal gRPC sécurisé qui utilise des certificats TLS.
Voir aussi
Exemple : Configuration d’un tunnel gRPC
Aperçu
Cette section couvre les étapes nécessaires à la configuration de la cible pour cet exemple. L’accent est mis sur la cible, car il s’agit du périphérique Junos sur lequel le tunnel gRPC est configuré.
Exigences
Cet exemple utilise les composants logiciels et matériels suivants :
-
Junos OS ou Junos Evolved version 22.4 ou ultérieure pour les équipements de routage et de commutation
-
Un équipement hôte en tant que client de tunnel
-
Un équipement hôte en tant que serveur de tunnel
Topologie
La figure 1 illustre la topologie utilisée dans cet exemple.

En fonction de la configuration Junos de l’équipement cible, il compose un tunnel grpc vers le serveur de tunnel. L’équipement cible s’enregistre auprès du serveur de tunnel via le RPC de flux d’enregistrement.
Lorsqu’un client demande une session TCP à une cible spécifique, le serveur de tunnel agit en tant qu’intermédiaire et se connecte à la session cible enregistrée ci-dessus sur le serveur de tunnel.
Si la cible prend en charge le type de cible demandé, l’appareil compose un nouveau tunnel appelé RPC de flux de tunnel. Cela permet d’établir un tunnel gRPC entre le client et la cible via le serveur de tunnel. Le client de tunnel peut maintenant accéder aux applications TCP prévues sur la cible.
Il ne peut y avoir qu’un seul flux d’enregistrement entre un serveur de tunnel et le périphérique réseau, mais plusieurs flux de tunnel pour la même paire.
Configurer un tunnel gRPC
Configuration rapide de l’interface de ligne de commande
Pour configurer rapidement cet exemple, copiez les commandes suivantes, collez-les dans un fichier texte, supprimez les sauts de ligne, modifiez tous les détails nécessaires pour qu’ils correspondent à la configuration de votre réseau, puis copiez et collez les commandes dans l’interface de ligne de commande au niveau de la hiérarchie [modifier].
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
Procédure étape par étape
Procédez comme suit pour configurer le tunnel gRPC sur l’équipement cible.
-
Configurez les serveurs sous gRPC-tunnel.
-
Configurez l’adresse ou le nom d’hôte IPv4 ou IPv6 du serveur de tunnel.
[edit system services] user@host# set grpc-tunnel servers server server1 address 10.205.0.1
-
Configurez le numéro de port par lequel le serveur de tunnel écoute.
[edit system services] user@host# set grpc-tunnel servers server server1 port 50301
-
Configurez les informations d’identification à l’aide de l’instruction tls .
[edit system services] user@host# set grpc-tunnel servers server server1 credentials tls certificate-id client-cert1
-
Spécifiez les applications cibles auxquelles vous souhaitez accéder. Les options disponibles sont ssh, netconf-ssh et gnmi-gnoi.
[edit system services] user@host# set grpc-tunnel servers server server1 targets ssh
-
-
(Facultatif) Définissez l’intervalle de nouvelle tentative (en secondes). Si le serveur de tunnel est inaccessible, l’équipement cible tente à nouveau de se connecter après l’intervalle de nouvelle tentative.
[edit system services] user@host# set grpc-tunnel servers retry-interval 30
-
(Facultatif)
Définissez l’instance de routage. Si vous ne définissez pas l’instance de routage, le tunnel gRPC utilise l’instance de routage par défaut.[edit system services] user@host# set grpc-tunnel servers server ts1 routing-instance routing-instance
-
(Facultatif)
Définissez l’adresse source. Si vous ne définissez pas l’adresse source, le noyau choisit l’adresse source qui peut atteindre le serveur de tunnel.[edit system services] user@host# set grpc-tunnel servers server ts1 source-address 69.70.31.677
-
(Facultatif) Configurez l’option target-string-option sous grpc-tunnel.
-
Utilisez l’instruction pattern pour créer une liste ordonnée d’options prises en charge.
[edit system services] user@host# set grpc-tunnel target-string-option pattern hostname custom
-
Utilisez l’instruction custom-string pour définir une chaîne personnalisée qui est envoyée lorsque le modèle d’instruction contient custom comme l’une des options.
[edit system services] user@host# set grpc-tunnel target-string-option custom-string device1
-
Utilisez l’instruction de délimiteur lorsque plusieurs options sont sélectionnées dans le modèle. Par défaut, le (symbole de | la barre verticale) est utilisé.
[edit system services] user@host# set grpc-tunnel target-string-option delimiter |
-
Un maximum de 10 serveurs de tunnel peuvent être configurés.
Résultats
Affichez les résultats de la configuration sur l’équipement cible. La sortie reflète uniquement la configuration fonctionnelle ajoutée dans cet exemple.
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 |; } }
Tableau de l’historique des modifications
La prise en charge des fonctionnalités est déterminée par la plate-forme et la version que vous utilisez. Utilisez l’Explorateur de fonctionnalités pour déterminer si une fonctionnalité est prise en charge sur votre plateforme.