Sessões de NETCONF sobre HTTPS de saída
RESUMO Os aplicativos do cliente podem estabelecer sessões de protocolo de configuração de rede (NETCONF) usando HTTPS de saída em dispositivos suportados que executam o Junos OS Release 20.2.
Este tópico discute como estabelecer sessões netconf usando HTTPS de saída em dispositivos que executam o Junos OS Release 20.2. Para obter informações sobre o estabelecimento de sessões netconf e shell usando HTTPS de saída aprimorado, consulte NETCONF e Shell Sessions em HTTPS de saída aprimorado.
Entendendo as sessões do NETCONF em HTTPS de saída
- Benefícios das sessões da NETCONF em HTTPS de saída
- Visão geral do NETCONF Sessions overbound HTTPS
- Fluxo de trabalho de conexão para sessões em HTTPS de saída
Benefícios das sessões da NETCONF em HTTPS de saída
-
Habilite os aplicativos de clientes netconf para gerenciar dispositivos que não são acessíveis por meio de outros protocolos.
-
Habilite o gerenciamento remoto de dispositivos usando autenticação baseada em certificados para o cliente HTTPS de saída.
Visão geral do NETCONF Sessions overbound HTTPS
Você pode estabelecer sessões netconf em HTTPS de saída entre dispositivos Junos suportados e um sistema de gerenciamento de rede. Uma sessão de NETCONF sobre HTTPS de saída permite que você gerencie dispositivos que podem não estar acessíveis remotamente por meio de outros protocolos, como o SSH. Isso pode acontecer, por exemplo, se o dispositivo estiver por trás de um firewall, e o firewall ou outra ferramenta de segurança bloquear esses protocolos. O HTTPS, por outro lado, usa uma porta padrão, que normalmente é permitida a saída na maioria dos ambientes.
Em dispositivos com suporte, o Junos OS inclui um aplicativo Juniper Extension Toolkit (JET) que oferece suporte para estabelecer uma sessão NETCONF usando HTTPS de saída. O aplicativo JET usa a estrutura gRPC para se conectar ao cliente HTTPS de saída, que consiste em um servidor gRPC em execução no sistema de gerenciamento de rede. gRPC é uma estrutura de chamada de procedimento remoto (RPC) agnóstica e de código aberto. A Figura 1 ilustra a configuração DE HTTPS de saída em sua forma mais simples.

Nesse cenário, o servidor gRPC atua como o cliente NETCONF, e o aplicativo JET é o cliente gRPC e servidor NETCONF. O servidor gRPC ouve as solicitações de conexão na porta especificada, que é padrão para a porta 443. Você configura o aplicativo JET como um serviço de extensão. As informações relevantes de conexão e autenticação são passadas para o script. Enquanto o script é executado, ele tenta automaticamente se conectar ao servidor gRPC no host e porta configurados.
O aplicativo JET e o servidor gRPC estabelecem uma conexão HTTPS persistente em uma sessão de gRPC criptografada por TLS. O aplicativo JET autentica o servidor gRPC usando um certificado digital X.509 e, se a autenticação for bem sucedida, a sessão NETCONF solicitada é estabelecida sobre essa conexão. As operações do NETCONF são executadas sob os privilégios de conta do usuário configurado para o aplicativo de serviço de extensão.
A conexão HTTPS de saída usa um certificado digital X.509 para autenticar o servidor gRPC. Um certificado digital é um meio eletrônico para verificar sua identidade por meio de um terceiro confiável, conhecido como autoridade de certificado ou autoridade de certificação (CA). Uma autoridade de certificado emite certificados digitais, que podem ser usados para estabelecer uma conexão segura entre dois endpoints por validação de certificados. O padrão X.509 define o formato do certificado. Para estabelecer uma sessão netconf sobre HTTPS de saída em dispositivos Junos suportados, o servidor gRPC deve ter um certificado X.509 válido.
O recurso HTTPS de saída básico oferece suporte para se conectar a um único cliente HTTPS de saída e configurar um servidor gRPC para esse cliente. A autenticação do servidor deve usar um certificado X.509 auto-assinado. Você pode estabelecer uma única sessão NETCONF sobre a conexão.
Fluxo de trabalho de conexão para sessões em HTTPS de saída
Em uma sessão netconf sobre HTTPS de saída, o servidor gRPC em execução no sistema de gerenciamento de rede atua como o cliente NETCONF, e o aplicativo JET no dispositivo Junos é o cliente gRPC e servidor NETCONF.
O cliente e o servidor gRPC executam as seguintes ações para estabelecer uma sessão NETCONF sobre HTTPS de saída:
-
O servidor gRPC ouve as conexões de entrada na porta especificada, ou se nenhuma porta for especificada, na porta padrão 443.
-
O cliente gRPC inicia uma conexão TCP/IP com o servidor e a porta gRPC configurados.
-
O cliente gRPC envia uma mensagem de TLS
ClientHello
para iniciar o processo de aperto de mão do TLS. -
O servidor gRPC envia uma
ServerHello
mensagem e seu certificado. -
O cliente gRPC verifica a identidade do servidor gRPC.
-
A sessão netconf está estabelecida.
-
O servidor e o cliente trocam mensagens NETCONF
<hello>
. -
O aplicativo cliente NETCONF realiza as operações conforme necessário.
Como estabelecer uma sessão netconf sobre HTTPS de saída
Você pode usar o aplicativo JET que está incluído como parte da imagem do software Junos para estabelecer uma sessão NETCONF sobre HTTPS de saída entre um sistema de gerenciamento de rede (NMS) e dispositivos Junos suportados. O aplicativo JET, configurado como um serviço de extensão, inicia uma conexão a um servidor gRPC em execução em um NMS e estabelece uma conexão HTTPS persistente em uma sessão gRPC criptografada por TLS. A sessão netconf é executado por essa conexão HTTPS. Nesse cenário, o servidor gRPC é o cliente NETCONF, e o aplicativo JET é o cliente gRPC e o servidor NETCONF.
O hardware e o software a seguir são necessários para estabelecer uma sessão NETCONF sobre HTTPS de saída:
-
Sistema de gerenciamento de rede que executa Python 3.5 ou posterior
-
Dispositivo que executa o Junos OS com versão FreeBSD 20.2 atualizada que também oferece suporte à execução de aplicativos JET
Nota:Para dispositivos suportados, veja sessões do Feature Explorer NETCONF em HTTPS de saída.
A Figura 2 ilustra a configuração mencionada nas tarefas a seguir.

Antes que o cliente e o servidor possam estabelecer uma sessão netconf sobre HTTPS de saída, você deve satisfazer os requisitos discutidos nas seguintes seções:
- Obtenha um certificado X.509 para o servidor gRPC
- Configure o servidor gRPC
- Configure a conta do usuário para o usuário netconf
- Configure o cliente HTTPS de saída
- Configure o serviço de extensão HTTPS de saída em dispositivos Junos
- Inicie a sessão netconf
Obtenha um certificado X.509 para o servidor gRPC
A conexão HTTPS de saída usa um certificado de chave pública X.509 para autenticar a identidade do servidor gRPC em execução no sistema de gerenciamento de rede. A pilha de gRPC oferece suporte ao formato de certificado x.509 v3.
Os requisitos para o certificado do servidor gRPC são:
-
O certificado deve ser auto-assinado.
-
O certificado deve definir o nome de host do servidor gRPC no campo nome comum (CN), ou deve definir o endereço IP do servidor gRPC no campo endereço IP SubjectAltName (SAN). O dispositivo Junos deve usar o mesmo valor para estabelecer a conexão com o servidor. Se o certificado definir o campo endereço IP SubjectAltName, o dispositivo ignorará o campo Nome Comum durante a autenticação.
-
O certificado deve ser codificado por PEM e usar uma extensão .crt .
-
O certificado e sua chave devem ser nomeados servidor.crt e server.key, respectivamente.
Usar o OpenSSL para obter um certificado:
Configure o servidor gRPC
O sistema de gerenciamento de rede requer o seguinte software:
-
Python 3.5 ou posterior
O sistema de gerenciamento de rede e o aplicativo JET no dispositivo Junos usam a estrutura gRPC para estabelecer uma conexão HTTPS persistente em uma sessão de gRPC criptografada por TLS. O sistema de gerenciamento de rede deve ter a pilha gRPC instalada e executar um servidor gRPC que ouça a porta especificada para a solicitação de conexão. A Juniper Networks fornece os arquivos protode definição necessários e arquivos de aplicativo de servidor gRPC de amostra no repositório da Juniper Networks netconf-https-outbound
no GitHub.
Esta seção configura o servidor gRPC em um sistema de gerenciamento de rede que executa o Ubuntu 18.04. Se você estiver executando um sistema operacional diferente, use os comandos apropriados para o seu SO.
Para configurar o servidor gRPC em um sistema de gerenciamento de rede que executa o Ubuntu 18.04:
O servidor gRPC ouve indefinidamente a porta especificada para conexões de entrada. Depois de configurar o dispositivo Junos para se conectar ao servidor gRPC e uma conexão e sessão forem estabelecidas, você pode realizar as operações da NETCONF conforme apropriado.
Configure a conta do usuário para o usuário netconf
Para estabelecer uma sessão netconf sobre HTTPS de saída, você deve criar uma conta de usuário localmente no dispositivo Junos. Você usa essa conta para realizar as operações netconf no dispositivo para essa sessão. O aplicativo JET é executado usando as permissões configuradas para esta conta.
Para criar uma conta de usuário em um dispositivo Junos:
Configure o cliente HTTPS de saída
O aplicativo JET pode se conectar a apenas um cliente HTTPS de saída. Você configura as informações de conexão e autenticação para o cliente como argumentos de linha de comando para o script JET. A Tabela 1 descreve os argumentos.
Argumento |
Valor |
---|---|
|
O nome de host ou endereço IPv4 do servidor gRPC ao qual o aplicativo JET se conecta. O valor do argumento deve corresponder ao nome de host no campo nome comum (CN) ou ao endereço IP no campo de endereço IP SubjectAltName no certificado do servidor gRPC. |
|
(Opcional) Porta na qual o aplicativo JET tenta se conectar ao servidor gRPC. Omite esse argumento para usar a porta padrão 443. |
|
(Opcional) O conteúdo do certificado do servidor gRPC entre as Você pode omitir esse argumento se, em vez disso, copiar o certificado para o /var/db/scripts/jet directory no dispositivo. Você deve copiar o certificado no dispositivo para ter tamanhos de chave superiores a 4096 bits. |
Antes de começar, você precisará dos valores para os argumentos de script, incluindo:
-
A porta em que o servidor gRPC está ouvindo as conexões.
-
O conteúdo do campo endereço IP SubjectAltName ou se não houver tal campo, o conteúdo do campo nome comum (CN) no certificado do servidor gRPC.
-
O conteúdo do certificado do servidor gRPC entre
-----BEGIN CERTIFICATE-----
e-----END CERTIFICATE-----
, omitindo qualquer nova linha. Essas informações só são necessárias quando você configura o conteúdo do certificado como um argumento de script em vez de copiar o certificado para o dispositivo que executa o Junos OS.
Para configurar o cliente HTTPS de saída:
Configure o serviço de extensão HTTPS de saída em dispositivos Junos
Os lançamentos do Junos que oferecem suporte a sessões netconf sobre HTTPS de saída incluem um aplicativo JET e arquivos de suporte na imagem do software. A Tabela 2 descreve os arquivos, que estão localizados no /var/db/scripts/jet directory no dispositivo.
Arquivos |
Descrição |
---|---|
nc_grpc_app.py |
Aplicativo JET que usa a estrutura gRPC para estabelecer uma conexão HTTPS persistente com um servidor gRPC em execução no sistema de gerenciamento de rede. |
nc_grpc_pb2.py nc_grpc_pb2_grpc.py |
Bibliotecas necessárias |
Para configurar o dispositivo Junos para sessões em HTTPS de saída:
Após o início do aplicativo com sucesso, ele registra mensagens no arquivo outbound_https.log .
Se o aplicativo não começar automaticamente após confirmar a configuração, analise as mensagens de log relacionadas a este aplicativo para solucionar problemas. No Junos OS, emita o show log jet.log
comando.
Inicie a sessão netconf
O servidor gRPC em execução no sistema de gerenciamento de rede atua como o cliente NETCONF, e o aplicativo JET no dispositivo Junos atua como o cliente gRPC e servidor NETCONF. Depois de iniciar o servidor gRPC e o aplicativo JET, o aplicativo JET tenta se conectar ao servidor gRPC na porta especificada. Se a conexão for bem sucedida, o cliente gRPC autentica o servidor gRPC. Se a autenticação do servidor for bem sucedida, a sessão netconf começa automaticamente.
Para estabelecer uma sessão netconf em HTTPS de saída: