아웃바운드 HTTPS를 통한 NETCONF 세션
요약 클라이언트 애플리케이션은 Junos OS 릴리스 20.2를 실행하는 지원되는 디바이스에서 아웃바운드 HTTPS를 사용하여 NETCONF(Network Configuration Protocol) 세션을 설정할 수 있습니다.
이 주제는 Junos OS 릴리스 20.2를 실행하는 디바이스에서 아웃바운드 HTTPS를 사용하여 NETCONF 세션을 설정하는 방법에 대해 설명합니다. 향상된 아웃바운드 HTTPS를 사용하여 NETCONF 및 셸 세션을 설정하는 방법에 대한 자세한 내용은 향상된 아웃바운드 HTTPS를 통한 NETCONF 및 셸 세션을 참조하십시오.
아웃바운드 HTTPS를 통한 NETCONF 세션 이해
아웃바운드 HTTPS를 통한 NETCONF 세션의 이점
-
NETCONF 클라이언트 애플리케이션을 활성화하여 다른 프로토콜을 통해 액세스할 수 없는 디바이스를 관리할 수 있습니다.
-
아웃바운드 HTTPS 클라이언트에 대해 인증서 기반 인증을 사용하여 디바이스의 원격 관리를 사용하도록 설정합니다.
아웃바운드 HTTPS를 통한 NETCONF 세션 개요
지원되는 Junos 디바이스와 네트워크 관리 시스템 간에 아웃바운드 HTTPS를 통해 NETCONF 세션을 설정할 수 있습니다. 아웃바운드 HTTPS를 통한 NETCONF 세션을 사용하면 SSH와 같은 다른 프로토콜을 통해 액세스할 수 없는 디바이스를 원격으로 관리할 수 있습니다. 예를 들어 디바이스가 방화벽 뒤에 있고 방화벽 또는 다른 보안 도구가 해당 프로토콜을 차단하는 경우 이러한 일이 발생할 수 있습니다. 반면 HTTPS는 대부분의 환경에서 일반적으로 아웃바운드가 허용되는 표준 포트를 사용합니다.
지원되는 디바이스에서 Junos OS는 아웃바운드 HTTPS를 사용하여 NETCONF 세션 설정을 지원하는 JET(Juniper Extension Toolkit) 애플리케이션을 포함합니다. JET 애플리케이션은 gRPC 프레임워크를 사용하여 네트워크 관리 시스템에서 실행되는 gRPC 서버로 구성된 아웃바운드 HTTPS 클라이언트에 연결합니다. gRPC는 언어에 구애받지 않는 오픈 소스 RPC(원격 프로시저 호출) 프레임워크입니다. 그림 1 에서는 가장 간단한 형태의 아웃바운드 HTTPS 설정을 보여 줍니다.
를 통한 NETCONF 세션
이 시나리오에서 gRPC 서버는 NETCONF 클라이언트 역할을 하며 JET 애플리케이션은 gRPC 클라이언트 및 NETCONF 서버입니다. gRPC 서버는 지정된 포트에서 연결 요청을 수신 대기하며, 기본값은 포트 443입니다. 확장 서비스로 JET 응용 프로그램을 구성합니다. 관련 연결 및 인증 정보가 스크립트에 전달됩니다. 스크립트가 실행되는 동안 구성된 호스트 및 포트의 gRPC 서버에 자동으로 연결을 시도합니다.
JET 애플리케이션 및 gRPC 서버는 TLS 암호화 gRPC 세션을 통해 영구 HTTPS 연결을 설정합니다. JET 애플리케이션은 X.509 디지털 인증서를 사용하여 gRPC 서버를 인증하고, 인증에 성공하면 요청된 NETCONF 세션이 이 연결을 통해 설정됩니다. NETCONF 작업은 확장 서비스 애플리케이션에 대해 구성된 사용자의 계정 권한에 따라 실행됩니다.
아웃바운드 HTTPS 연결은 X.509 디지털 인증서를 사용하여 gRPC 서버를 인증합니다. 디지털 인증서는 인증 기관 또는 CA(인증 기관)라고 하는 신뢰할 수 있는 제3자를 통해 사용자의 신원을 확인하기 위한 전자적 수단입니다. 인증 기관은 인증서 유효성 검사를 통해 두 엔드포인트 간에 보안 연결을 설정하는 데 사용할 수 있는 디지털 인증서를 발급합니다. X.509 표준은 인증서의 형식을 정의합니다. 지원되는 Junos 디바이스에서 아웃바운드 HTTPS를 통해 NETCONF 세션을 설정하려면 gRPC 서버에 유효한 X.509 인증서가 있어야 합니다.
기본 아웃바운드 HTTPS 기능은 단일 아웃바운드 HTTPS 클라이언트에 연결하고 해당 클라이언트에 대해 하나의 gRPC 서버를 구성하기 위한 지원을 제공합니다. 서버 인증은 자체 서명된 X.509 인증서를 사용해야 합니다. 연결을 통해 단일 NETCONF 세션을 설정할 수 있습니다.
아웃바운드 HTTPS를 통한 세션에 대한 연결 워크플로
아웃바운드 HTTPS를 통한 NETCONF 세션에서 네트워크 관리 시스템에서 실행되는 gRPC 서버는 NETCONF 클라이언트 역할을 하며, Junos 디바이스의 JET 애플리케이션은 gRPC 클라이언트 및 NETCONF 서버입니다.
gRPC 클라이언트 및 서버는 아웃바운드 HTTPS를 통해 NETCONF 세션을 설정하기 위해 다음 작업을 수행합니다.
-
gRPC 서버는 지정된 포트 또는 포트가 지정되지 않은 경우 기본 포트 443에서 들어오는 연결을 수신 대기합니다.
-
gRPC 클라이언트는 구성된 gRPC 서버 및 포트를 사용하여 TCP/IP 연결을 시작합니다.
-
gRPC 클라이언트는 TLS
ClientHello메시지를 보내 TLS 핸드셰이크를 시작합니다. -
gRPC 서버는 메시지와 해당 인증서를 보냅니다
ServerHello. -
gRPC 클라이언트는 gRPC 서버의 ID를 확인합니다.
-
NETCONF 세션이 설정됩니다.
-
서버와 클라이언트는 NETCONF
<hello>메시지를 교환합니다. -
NETCONF 클라이언트 애플리케이션은 필요에 따라 작업을 수행합니다.
아웃바운드 HTTPS를 통해 NETCONF 세션을 설정하는 방법
Junos 소프트웨어 이미지의 일부로 포함된 JET 애플리케이션을 사용하여 네트워크 관리 시스템(NMS)과 지원되는 Junos 디바이스 간에 아웃바운드 HTTPS를 통한 NETCONF 세션을 설정할 수 있습니다. 확장 서비스로 구성된 JET 애플리케이션은 NMS에서 실행되는 gRPC 서버에 대한 연결을 시작하고 TLS 암호화 gRPC 세션을 통해 영구 HTTPS 연결을 설정합니다. NETCONF 세션은 이 HTTPS 연결을 통해 실행됩니다. 이 시나리오에서 gRPC 서버는 NETCONF 클라이언트이고 JET 애플리케이션은 gRPC 클라이언트 및 NETCONF 서버입니다.
아웃바운드 HTTPS를 통해 NETCONF 세션을 설정하는 데 필요한 하드웨어 및 소프트웨어는 다음과 같습니다.
-
Python 3.5 이상을 실행하는 네트워크 관리 시스템
-
JET 애플리케이션 실행도 지원하는 업그레이드된 FreeBSD 릴리스 20.2로 Junos OS를 실행하는 디바이스
참고:지원되는 디바이스는 아웃바운드 HTTPS를 통한 기능 탐색기 NETCONF 세션을 참조하세요.
그림 2 는 다음 작업에서 참조되는 설정을 보여 줍니다.
를 통한 NETCONF
클라이언트와 서버가 아웃바운드 HTTPS를 통해 NETCONF 세션을 설정하려면 먼저 다음 섹션에서 설명하는 요구 사항을 충족해야 합니다.
- gRPC 서버에 대한 X.509 인증서 가져오기
- gRPC 서버 설정
- NETCONF 사용자를 위한 사용자 계정 구성
- 아웃바운드 HTTPS 클라이언트 구성
- Junos 디바이스에서 아웃바운드 HTTPS 확장 서비스 구성
- NETCONF 세션 시작
gRPC 서버에 대한 X.509 인증서 가져오기
아웃바운드 HTTPS 연결은 X.509 공개 키 인증서를 사용하여 네트워크 관리 시스템에서 실행되는 gRPC 서버의 ID를 인증합니다. gRPC 스택은 X.509 v3 인증서 형식을 지원합니다.
gRPC 서버의 인증서에 대한 요구 사항은 다음과 같습니다.
-
인증서는 자체 서명되어야 합니다.
-
인증서는 CN(일반 이름) 필드에서 gRPC 서버의 호스트 이름을 정의하거나 SAN(SubjectAltName) IP 주소 필드에서 gRPC 서버의 IP 주소를 정의해야 합니다. Junos 디바이스는 서버에 대한 연결을 설정하기 위해 동일한 값을 사용해야 합니다. 인증서가 SubjectAltName IP 주소 필드를 정의하는 경우 디바이스는 인증 중에 일반 이름 필드를 무시합니다.
-
인증서는 PEM으로 인코딩되어야 하며 .crt 확장자를 사용해야 합니다.
-
인증서와 해당 키의 이름은 각각 server.crt 및 server.key여야 합니다.
OpenSSL을 사용하여 인증서를 얻으려면 다음을 수행합니다.
gRPC 서버 설정
네트워크 관리 시스템에는 다음 소프트웨어가 필요합니다.
-
Python 3.5 이상
Junos 디바이스의 네트워크 관리 시스템 및 JET 애플리케이션은 gRPC 프레임워크를 사용하여 TLS 암호화 gRPC 세션을 통해 영구 HTTPS 연결을 설정합니다. 네트워크 관리 시스템에는 gRPC 스택이 설치되어 있어야 하며 연결 요청에 대해 지정된 포트에서 수신 대기하는 gRPC 서버를 실행해야 합니다. 주니퍼 네트웍스는 GitHub의 주니퍼 네트웍스 netconf-https-outbound 리포지토리에 필요한 프로토 정의 파일과 샘플 gRPC 서버 애플리케이션 파일을 제공합니다.
이 섹션에서는 Ubuntu 18.04를 실행하는 네트워크 관리 시스템에서 gRPC 서버를 설정합니다. 다른 운영 체제를 실행 중인 경우 OS에 적합한 명령을 사용합니다.
Ubuntu 18.04를 실행하는 네트워크 관리 시스템에서 gRPC 서버를 설정하려면 다음을 수행합니다.
gRPC 서버는 들어오는 연결에 대해 지정된 포트에서 무기한 수신 대기합니다. gRPC 서버에 연결하도록 Junos 디바이스를 구성하고 연결 및 세션이 설정된 후에는 NETCONF 작업을 적절하게 수행할 수 있습니다.
NETCONF 사용자를 위한 사용자 계정 구성
아웃바운드 HTTPS를 통해 NETCONF 세션을 설정하려면 Junos 디바이스에서 로컬로 사용자 계정을 생성해야 합니다. 이 계정을 사용하여 해당 세션의 디바이스에서 NETCONF 작업을 수행할 수 있습니다. JET 응용 프로그램은 이 계정에 대해 구성된 사용 권한을 사용하여 실행됩니다.
Junos 디바이스에서 사용자 계정을 생성하려면 다음을 수행합니다.
아웃바운드 HTTPS 클라이언트 구성
JET 응용 프로그램은 하나의 아웃바운드 HTTPS 클라이언트에만 연결할 수 있습니다. 클라이언트에 대한 연결 및 인증 정보를 JET 스크립트에 대한 명령줄 인수로 구성합니다. 표 1 에서는 인수를 간략하게 설명합니다.
| 인수 |
값 |
|---|---|
|
|
JET 애플리케이션이 연결하는 gRPC 서버의 호스트 이름 또는 IPv4 주소입니다. 인수 값은 CN(일반 이름) 필드의 호스트 이름 또는 gRPC 서버 인증서의 SubjectAltName IP 주소 필드에 있는 IP 주소와 일치해야 합니다. |
|
|
(선택 사항) JET 애플리케이션이 gRPC 서버에 연결을 시도하는 포트입니다. 기본 포트 443을 사용하려면 이 인수를 생략합니다. |
|
|
(선택 사항) 및 대신 인증서를 디바이스의 /var/db/scripts/jet 디렉터리에 복사하는 경우 이 인수를 생략할 수 있습니다. 키 크기가 4096비트보다 큰 경우 인증서를 디바이스에 복사해야 합니다. |
시작하기 전에 다음을 포함하여 스크립트 인수에 대한 값이 필요합니다.
-
gRPC 서버가 연결을 수신 대기하는 포트입니다.
-
SubjectAltName IP 주소 필드의 내용 또는 해당 필드가 없는 경우 gRPC 서버 인증서의 CN(일반 이름) 필드 내용입니다.
-
과
-----END CERTIFICATE-----사이에-----BEGIN CERTIFICATE-----있는 gRPC 서버 인증서의 내용으로, 줄 바꿈을 생략합니다. 이 정보는 Junos OS를 실행하는 디바이스에 인증서를 복사하는 대신 인증서 내용을 스크립트 인수로 구성하는 경우에만 필요합니다.
아웃바운드 HTTPS 클라이언트를 구성하려면 다음을 수행합니다.
Junos 디바이스에서 아웃바운드 HTTPS 확장 서비스 구성
아웃바운드 HTTPS를 통해 NETCONF 세션을 지원하는 Junos 릴리스에는 소프트웨어 이미지에 JET 애플리케이션과 지원 파일이 포함되어 있습니다. 표 2 는 디바이스의 /var/db/scripts/jet 디렉토리에 있는 파일을 간략하게 설명합니다.
| 파일 |
설명 |
|---|---|
| nc_grpc_app.py |
gRPC 프레임워크를 사용하여 네트워크 관리 시스템에서 실행되는 gRPC 서버와의 영구 HTTPS 연결을 설정하는 JET 애플리케이션입니다. |
| nc_grpc_pb2.py nc_grpc_pb2_grpc.py |
필수 라이브러리 |
아웃바운드 HTTPS를 통한 세션에 대해 Junos 디바이스를 구성하려면 다음을 수행합니다.
응용 프로그램이 성공적으로 시작되면 outbound_https.log 파일에 메시지를 기록합니다.
구성을 커밋한 후 응용 프로그램이 자동으로 시작되지 않으면 이 응용 프로그램과 관련된 로그 메시지를 검토하여 문제를 해결하십시오. Junos OS에서 명령을 실행합니다 show log jet.log .
NETCONF 세션 시작
네트워크 관리 시스템에서 실행되는 gRPC 서버는 NETCONF 클라이언트 역할을 하며, Junos 디바이스의 JET 애플리케이션은 gRPC 클라이언트 및 NETCONF 서버 역할을 합니다. gRPC 서버 및 JET 응용 프로그램을 시작한 후 JET 응용 프로그램은 지정된 포트의 gRPC 서버에 연결을 시도합니다. 연결에 성공하면 gRPC 클라이언트가 gRPC 서버를 인증합니다. 서버 인증에 성공하면 NETCONF 세션이 자동으로 시작됩니다.
아웃바운드 HTTPS를 통해 NETCONF 세션을 설정하려면 다음을 수행합니다.