이 문서에서는 Azure에서 고가용성을 위해 NVA(네트워크 가상 어플라이언스) 집합을 배포하는 일반적인 방법을 설명합니다. NVA는 일반적으로 보안 수준이 다른 네트워크 세그먼트 간의 트래픽 흐름을 제어합니다. 예를 들어 경계 네트워크 가상 네트워크와 공용 인터넷 간에 NVA를 사용하거나 VPN(가상 사설망) 또는 소프트웨어 정의 WAN(SD-WAN) 어플라이언스를 통해 외부 위치를 Azure에 연결할 수 있습니다.
이 문서에서는 Azure 네트워킹, Azure 부하 분산 장치, 가상 네트워크 트래픽 라우팅 및 UDR(사용자 정의 경로)에 대한 기본적인 이해가 있다고 가정합니다.
많은 디자인 패턴은 NVA를 사용하여 서로 다른 보안 영역 간의 트래픽을 검사합니다. 이러한 패턴은 다음과 같은 용도로 NVA를 사용할 수 있습니다.
가상 머신에서 인터넷으로의 송신 트래픽을 검사하고 데이터 반출을 방지합니다.
인터넷에서 가상 머신으로의 수신 트래픽을 검사하고 공격을 방지합니다.
손상된 시스템의 횡적 이동을 방지하기 위해 Azure에서 가상 머신 간의 트래픽을 필터링합니다.
특히 서로 다른 보안 수준에 속하는 경우 온-프레미스 시스템과 Azure 가상 머신 간의 트래픽을 필터링합니다. 예를 들어 Azure는 경계 네트워크를 호스트하고 온-프레미스 환경은 내부 애플리케이션을 호스트합니다.
외부 위치(예: 온-프레미스 네트워크 또는 기타 퍼블릭 클라우드)에서 VPN 또는 SD-WAN 터널을 종료합니다.
이 문서의 패턴을 사용하여 Azure 디자인에 다음 NVA를 추가할 수 있습니다.
- 네트워크 방화벽
- 계층 4 역방향 프록시
- IPsec(인터넷 프로토콜 보안) VPN 엔드포인트
- SD-WAN 가전제품
- 웹 애플리케이션 방화벽 기능이 있는 웹 기반 역방향 프록시
- Azure에서 액세스할 수 있는 인터넷 페이지를 제한하는 인터넷 프록시
- 계층 7 부하 분산 장치
Azure Firewall 및 AzureApplication Gateway와 같은 Azure 네이티브 NVA는 이 문서의 뒷부분에 설명된 디자인을 사용합니다. 이러한 옵션은 디자인 관점에서 그리고 네트워크 문제 해결을 위해 이해해야 합니다.
NVA는 네트워크 세그먼트 간의 통신을 제어하기 때문에 고가용성이 필요한 경우가 많습니다. NVA를 사용할 수 없게 되면 네트워크 트래픽이 흐르지 않으며 애플리케이션의 작동이 중지됩니다. 예약된 중단 및 예약되지 않은 중단은 Azure 또는 다른 클라우드의 다른 가상 머신과 유사하게 NVA 인스턴스를 종료하는 경우가 있습니다. Azure에서 단일 인스턴스 서비스 수준 계약을 제공하는 Azure Premium SSD로 구성하더라도 NVA 인스턴스가 종료될 수 있습니다. 고가용성 애플리케이션은 연결을 보장하기 위해 두 개 이상의 NVA가 필요합니다.
NVA를 Azure 가상 네트워크에 배포하는 가장 좋은 옵션을 선택하는 경우 가장 중요한 측면은 NVA 공급업체가 설계를 평가하고 유효성을 검사했는지 여부입니다. 또한 공급업체는 NVA를 Azure에 통합하는 데 필요한 NVA 구성을 제공해야 합니다. NVA 공급업체가 지원되는 여러 디자인 옵션을 제공하는 경우 다음 요소를 고려하여 결정을 내릴 수 있습니다.
수렴 시간: 실패한 NVA 인스턴스에서 트래픽을 다시 라우팅하기 위해 각 디자인에 걸리는 시간
토폴로지 지원: 중복성을 위한 추가 단위가 있는 활성/활성/대기 또는 스케일 아웃 NVA 클러스터와 같이 각 디자인 옵션이 지원하는 NVA 구성
트래픽 대칭: 특정 디자인에서 NVA가 비대칭 라우팅을 방지하기 위해 패킷에서 SNAT(원본 네트워크 주소 변환)를 강제로 수행하도록 할지, 아니면 디자인에서 다른 수단으로 트래픽 대칭을 적용하는지 여부
비고
이 문서에서는 허브 및 스포크 디자인에 중점을 둡니다. 이 문서에서는 Virtual Wan 허브가 특정 NVA를 지원하는지 여부에 따라 NVA를 배포하기 위한 보다 규범적인 지침이 있으므로 Azure Virtual WAN 을 다루지 않습니다. 자세한 내용은 Virtual WAN 허브의 NVA를 참조하세요.
다음 섹션에서는 NVA를 허브 및 스포크 네트워크에 통합하는 데 사용할 수 있는 일반적인 아키텍처에 대해 설명합니다.
고가용성 아키텍처 개요
해결 방법 | 혜택 | 고려 사항 |
---|---|---|
Azure Load Balancer | 이 솔루션은 활성/활성 및 활성/대기 구성을 지원하고, 수렴 시간이 좋은 NVA를 스케일 아웃합니다. | NVA는 특히 활성/대기 배포의 경우 상태 프로브에 대한 포트를 제공해야 합니다. 트래픽 대칭이 필요한 방화벽과 같은 상태 저장 어플라이언스의 경우 인터넷으로 들어오고 가는 흐름에는 SNAT가 필요합니다. |
Azure Route Server | NVA는 BGP(Border Gateway Protocol)를 지원해야 합니다. 이 솔루션은 활성/활성, 활성/대기 및 스케일 아웃 방식의 NVA를 지원합니다. | 트래픽 대칭을 사용하려면 이 솔루션에서 SNAT가 필요합니다. |
Azure Gateway Load Balancer | 트래픽 대칭은 SNAT 없이 보장됩니다. NVA는 테넌트 간에 공유할 수 있습니다. 이 솔루션은 수렴 시간이 빠르고, 활성/활성, 활성/대기, 스케일 아웃 NVA를 지원합니다. | 이 솔루션은 인터넷을 오가는 흐름을 지원하며 East-West 흐름을 지원하지 않습니다. |
동적 개인 IP 주소 및 UDR | NVA에는 특별한 기능이 필요하지 않습니다. 이 솔루션은 대칭 트래픽을 보장합니다. | 이 솔루션은 활성/수동 디자인에만 사용됩니다. 1~2분의 높은 수렴 시간이 있습니다. |
부하 분산기
Load Balancer 디자인은 두 개의 Azure 부하 분산 장치를 사용하여 NVA 클러스터를 네트워크의 나머지 부분에 노출합니다. 이 방법은 상태 저장 및 상태 비저장 NVA 모두에 적합합니다.
내부 부하 분산 장치는 내부 트래픽을 Azure 및 온-프레미스에서 NVA로 리디렉션합니다. 이 내부 부하 분산 장치는 모든 TCP(Transmission Control Protocol) 및 UDP(사용자 데이터그램 프로토콜) 포트가 NVA 인스턴스로 리디렉션되도록 고가용성 포트 규칙 으로 구성됩니다.
공용 부하 분산 장치는 NVA를 인터넷에 노출합니다. 고가용성 포트는 인바운드 트래픽을 위한 것이므로 각 TCP/UDP 포트는 전용 부하 분산 규칙에서 열어야 합니다.
다음 다이어그램은 패킷이 인터넷에서 스포크 가상 네트워크의 애플리케이션 서버로 가져가는 홉 시퀀스를 보여 줍니다. 이러한 패킷은 방화벽 NVA를 트래버스하여North-South 트래픽이라고도 하는 공용 인터넷의 트래픽을 제어합니다.
이 아키텍처의 Visio 파일을 다운로드합니다.
스포크에서 NVA를 통해 공용 인터넷으로 트래픽을 보내기 위해, 이 설계에서는 UDR for 0.0.0.0/0
를 사용합니다. 다음 홉은 내부 부하 분산 장치의 IP 주소입니다.
Azure와 공용 인터넷 간의 트래픽의 경우 트래픽 흐름의 각 방향이 다른 Azure 부하 분산 장치를 교차합니다. 이 프로세스는 수신 패킷이 공용 Azure 부하 분산 장치를 통과하고 송신 패킷이 내부 Azure 부하 분산 장치를 통과하기 때문에 방화벽 NVA에 공용 및 내부 네트워크 모두에 대한 단일 NIC(네트워크 인터페이스 카드)가 있는 경우에도 발생합니다. 흐름의 양방향은 서로 다른 부하 분산 장치를 통과합니다. 따라서 트래픽 대칭이 필요한 경우 NVA 인스턴스는 반환 트래픽을 유치하고 트래픽 대칭을 보장하기 위해 SNAT를 수행해야 합니다. 대부분의 방화벽에는 트래픽 대칭이 필요합니다.
다음 다이어그램에서는 동일한 부하 분산 장치 디자인을 사용하여 Azure와 온-프레미스 네트워크 간의 트래픽 또는 내부 부하 분산 장치만 포함하는 East-West 트래픽을 검사하는 방법을 보여 줍니다. 이 메서드를 사용하여 NVA를 통해 스포크 간에 트래픽을 보낼 수도 있습니다.
이전 다이어그램에서 spoke1은 스포크2의 범위에 대해 알지 못합니다. 따라서 UDR은 0.0.0.0/0
스포크2용 트래픽을 NVA의 내부 Azure 부하 분산 장치에 보냅니다.
온-프레미스 네트워크와 Azure 간 또는 Azure 가상 머신 간의 트래픽의 경우 트래픽 대칭은 내부 Azure 부하 분산 장치에 의해 단일 NIC NVA에서 보장됩니다. 트래픽 흐름의 양방향이 동일한 Azure 부하 분산 장치를 트래버스하는 경우 부하 분산 장치는 양방향에 대해 동일한 NVA 인스턴스를 선택합니다. 이중 NIC NVA 디자인에 각 통신 방향에 대한 내부 부하 분산 장치가 있는 경우 SNAT는 트래픽 대칭을 보장합니다. 이전 North-South 다이어그램은 이 디자인의 예를 제공합니다.
이 디자인에서 이중 NIC NVA는 부하 분산 장치의 상태 검사에 회신을 보낼 위치를 결정해야 합니다. Load Balancer는 항상 상태 검사 168.63.129.16
원본과 동일한 IP 주소를 사용합니다. NVA는 수신된 동일한 인터페이스를 통해 이러한 상태 검사 응답을 다시 보내야 합니다. 대상 기반 라우팅은 동일한 NIC를 통해 회신을 보내기 때문에 일반적으로 이 프로세스에는 운영 체제에서 여러 라우팅 테이블이 필요합니다.
Azure 부하 분산 장치는 개별 NVA 중단에서 적절한 수렴 시간을 제공합니다. 5초마다 상태 프로브를 보낼 수 있으며 백 엔드 인스턴스를 서비스 중단으로 선언하려면 세 개의 실패한 프로브가 필요합니다. 따라서 Azure 부하 분산 장치가 트래픽을 다른 NVA 인스턴스로 수렴하는 데 일반적으로 10~15초가 걸립니다.
이 설정은 활성/활성 및 활성/대기 구성을 모두 지원합니다. 활성/대기 구성의 경우 NVA 인스턴스는 현재 활성 역할에 있는 인스턴스에 대한 부하 분산 장치 상태 프로브에만 응답하는 TCP 또는 UDP 포트 또는 HTTP 엔드포인트를 제공해야 합니다.
계층 7 부하 분산 장치
보안 어플라이언스에 대한 특정 디자인은 Azure 공용 부하 분산 장치를 NVA 자체로 간주할 수 있는 Azure Application Gateway와 같은 계층 7 부하 분산 장치로 대체합니다.
이 시나리오에서 NVA는 워크로드 시스템의 트래픽에 대한 내부 부하 분산 장치만 필요합니다. Dual-NIC 디바이스는 때때로 이 방법을 사용하여 Azure 부하 분산 장치의 상태 검사에 대한 라우팅 문제를 방지합니다. 이 디자인은 계층 7 부하 분산 장치가 지원하는 계층 7 프로토콜(일반적으로 HTTP 및 HTTPS)만 지원합니다.
NVA는 계층 7 부하 분산 장치가 지원하지 않는 프로토콜에 대한 인바운드 트래픽을 처리해야 합니다. NVA는 출구 트래픽을 처리할 가능성이 있습니다. 자세한 내용은 가상 네트워크에 대한 방화벽 및 Application Gateway를 참조하세요.
라우트 서버
Route Server 는 NVA가 BGP를 통해 Azure 소프트웨어 정의 네트워킹과 상호 작용할 수 있도록 하는 서비스입니다. NVA는 Azure 가상 네트워크에 존재하는 IP 주소 접두사를 알아봅니다. Azure에서 가상 머신의 유효 경로 테이블에 경로를 삽입할 수도 있습니다.
이전 다이어그램에서 각 NVA 인스턴스는 BGP를 통해 Route Server에 연결합니다. Route Server는 NVA가 보급하는 경로를 프로그래밍하므로 이 디자인에서는 스포크 서브넷에 경로 테이블이 필요하지 않습니다. Azure 가상 머신에서 둘 이상의 경로가 프로그래밍된 경우 동일한 비용의 다중 경로 라우팅을 사용하여 모든 트래픽 흐름에 대해 NVA 인스턴스 중 하나를 선택합니다. 따라서 트래픽 대칭이 필요한 경우 이 디자인에 SNAT를 포함해야 합니다.
이 삽입 메서드는 활성/활성 및 활성/대기 구성을 모두 지원합니다. 활성/활성 구성에서 모든 NVA는 경로 서버에 동일한 경로를 알립니다. 활성/대기 구성에서 한 NVA는 다른 경로보다 짧은 자치 시스템(AS) 경로를 광고합니다. Route Server는 최대 8개의 BGP 인접성을 지원합니다. 따라서 활성 NVA의 스케일 아웃 클러스터를 사용하는 경우 이 디자인은 최대 8개의 NVA 인스턴스를 지원합니다.
이 설정에는 빠른 수렴 시간이 있습니다. BGP 인접 관계의 Keepalive 및 홀드타임 타이머는 수렴 시간에 영향을 미칩니다. 경로 서버에는 기본 유지 타이머가 60초로 설정되고 홀드타임 타이머는 180초로 설정됩니다. 그러나 NVA는 BGP 인접 설정 과정에서 타이머를 더 낮게 협상할 수 있습니다. 이러한 타이머를 너무 낮게 설정하면 BGP가 불안정해질 수 있습니다.
이 디자인은 Azure 라우팅과 상호 작용해야 하는 NVA에 적합합니다. 예를 들어 일반적으로 좋은 BGP 지원을 제공하는 SD-WAN 또는 IPsec NVA가 있습니다. 이러한 NVA는 Azure 가상 네트워크에 구성된 접두사를 알아보거나 ExpressRoute 프라이빗 피어링을 통해 특정 경로를 보급해야 합니다. 이러한 유형의 어플라이언스는 일반적으로 무상태이므로 트래픽 대칭은 문제가 없고 SNAT는 필요하지 않습니다.
게이트웨이 부하 분산 장치
게이트웨이 Load Balancer 는 UDR을 사용하여 트래픽을 라우팅할 필요 없이 데이터 경로에 NVA를 삽입하는 방법을 제공합니다. Azure 부하 분산 장치 또는 공용 IP 주소를 통해 워크로드를 노출하는 가상 머신의 경우 인바운드 및 아웃바운드 트래픽을 다른 가상 네트워크에 있는 NVA 클러스터로 투명하게 리디렉션할 수 있습니다. 다음 다이어그램에서는 워크로드가 Azure 부하 분산 장치를 통해 애플리케이션을 노출하는 경우 공용 인터넷의 인바운드 트래픽에 대해 패킷이 따르는 경로를 보여 줍니다.
이 NVA 삽입 방법은 다음과 같은 이점을 제공합니다.
이 메서드는 트래픽 대칭을 보장하기 위해 SNAT가 필요하지 않습니다.
동일한 NVA를 사용하여 NVA 관점에서 다중 테넌트 기능을 제공하는 서로 다른 가상 네트워크 간 트래픽을 검사할 수 있습니다.
NVA 가상 네트워크와 워크로드 가상 네트워크 간에는 가상 네트워크 피어링이 필요하지 않으므로 구성이 간소화됩니다.
워크로드 가상 네트워크에서는 UDR이 필요하지 않으므로 구성도 간소화됩니다.
게이트웨이 Load Balancer를 통해 Azure 공용 부하 분산 장치에 대한 인바운드 트래픽, 반환 트래픽 및 Azure의 아웃바운드 트래픽에 서비스 주입을 사용할 수 있습니다. Azure 가상 머신 간의 East-West 트래픽은 NVA 주입에 게이트웨이 Load Balancer를 사용할 수 없습니다.
NVA 클러스터에서 Azure 부하 분산 장치 상태 검사 프로브는 10~15초의 빠른 수렴 시간을 제공하는 개별 NVA 인스턴스에서 오류를 검색합니다.
동적 공용 IP 주소 및 UDR 관리
이 디자인의 목표는 NVA 중복 없이 작동하며 NVA에서 가동 중지 시간이 발생하는 경우 수정할 수 있는 설정을 설정하는 것입니다. 다음 다이어그램에서는 Azure 공용 IP 주소가 활성 NVA(다이어그램의 NVA1)와 연결하는 방법을 보여 줍니다. 스포크의 UDR은 활성 NVA의 IP 주소(10.0.0.37
)를 다음 홉으로 사용합니다.
활성 NVA를 사용할 수 없게 되면 대기 NVA는 Azure API를 호출하여 공용 IP 주소와 스포크 UDR을 자체에 다시 매핑하거나 개인 IP 주소를 인수합니다. 이러한 API 호출을 적용하는 데 몇 분 정도 걸릴 수 있습니다. 이 디자인은 이 문서의 옵션 중 최악의 수렴 시간을 제공합니다.
이 디자인은 활성/대기 구성만 지원하므로 확장성 문제가 발생할 수 있습니다. NVA에서 지원하는 대역폭을 늘려야 하는 경우 두 인스턴스를 모두 확장해야 합니다.
이 디자인에서는 지정된 시간에 하나의 NVA만 활성화되므로 트래픽 대칭을 보장하기 위해 SNAT가 필요하지 않습니다.
기여자
Microsoft는 이 문서를 유지 관리합니다. 다음 기여자는 이 문서를 작성했습니다.
주요 작성자:
- 키스 메이어 | 주요 클라우드 솔루션 설계자
- Telmo Sampaio | 주 서비스 엔지니어링 관리자
- Jose Moreno | 수석 엔지니어
LinkedIn 비공개 프로필을 보려면, LinkedIn에 로그인하세요.