아웃바운드 연결에 SNAT(Source Network Address Translation) 사용

특정 시나리오에는 인터넷에 대한 아웃바운드 연결을 위한 가상 머신 또는 컴퓨팅 인스턴스가 필요합니다. 공용 부하 분산 장치의 프런트 엔드 IP를 사용하여 백 엔드 인스턴스에 대한 인터넷에 아웃바운드 연결을 제공할 수 있습니다. 이 구성은 SNAT(Source Network Address Translation)를 사용하여 가상 머신의 개인 IP를 부하 분산 장치의 공용 IP 주소로 변환합니다. SNAT는 백 엔드의 IP 주소를 부하 분산 프로그램의 공용 IP 주소에 매핑합니다. SNAT는 외부 원본이 백 엔드 인스턴스에 대해 직접적인 주소를 가질 수 없습니다.

Azure의 아웃바운드 연결 방법

다음 방법은 아웃바운드 연결을 사용하도록 설정하기 위해 Azure에서 가장 일반적으로 사용되는 방법입니다.

# 메서드 포트 할당 유형 프로덕션 등급 등급
1 아웃바운드 규칙을 통해 아웃바운드에 대한 부하 분산 장치의 프런트 엔드 IP 주소 사용 고정적, 명시적 예, 하지만 대규모는 아님 확인
2 NAT 게이트웨이를 서브넷에 연결 동적, 명시적 가장 좋음
3 가상 머신에 공용 IP 할당 고정적, 명시적 확인
4 기본 아웃바운드 액세스 암시적 아니요 최악

Azure 아웃바운드 옵션의 다이어그램

1. 아웃바운드 규칙을 통한 아웃바운드에 대한 부하 분산 장치의 프런트 엔드 IP 주소 사용

아웃바운드 규칙이 있는 공용 부하 분산 장치의 다이어그램

아웃바운드 규칙을 사용하면 표준 SKU 공용 부하 분산 장치에 대한 SNAT(Source Network Address Translation)를 명시적으로 정의할 수 있습니다. 이 구성을 통해 백 엔드 인스턴스의 아웃바운드 연결에 공용 IP 또는 부하 분산 장치의 IP를 사용할 수 있습니다.

이 구성을 사용하면 다음을 수행할 수 있습니다.

  • IP 위장

  • 허용 목록 단순화

  • 배포할 공용 IP 리소스 수 줄이기

아웃바운드 규칙을 사용하여 아웃바운드 인터넷 연결을 완전하게 제어할 수 있습니다. 아웃바운드 규칙을 사용하면 수동 포트 할당을 통해 특정 요구에 맞게 이 기능을 확장하고 조정할 수 있습니다. 백 엔드 풀 크기 및 frontendIPConfigurations 수에 따라 SNAT 포트를 수동으로 할당하면 SNAT 소모를 방지할 수 있습니다.

"인스턴스당 포트" 또는 "백 엔드 인스턴스의 최대 수"로 SNAT 포트를 수동으로 할당할 수 있습니다. 백 엔드에 가상 머신이 있는 경우 최대 SNAT 포트 사용량을 얻기 위해 "인스턴스당 포트"로 포트를 할당하는 것이 좋습니다.

다음과 같이 인스턴스당 포트 수를 계산합니다.

프런트 엔드 IP 수 * 64K/백 엔드 인스턴스 수

백 엔드에 Virtual Machine Scale Sets가 있는 경우 포트를 "백 엔드 인스턴스의 최대 수"로 할당하는 것이 좋습니다. 허용되는 나머지 SNAT 포트보다 더 많은 VM이 백 엔드에 추가되는 경우 Virtual Machine Scale Sets의 스케일 아웃이 차단될 수 있거나 새 VM이 충분한 SNAT 포트를 수신하지 못합니다.

아웃바운드 규칙에 대한 자세한 내용은 아웃바운드 규칙을 참조하세요.

2. NAT 게이트웨이를 서브넷에 연결

NAT 게이트웨이 및 공용 부하 분산 장치의 다이어그램

Azure NAT Gateway는 가상 네트워크에 대한 아웃바운드 전용 인터넷 연결을 단순화합니다. 서브넷에 구성되는 경우 모든 아웃바운드 연결에서 지정된 고정 공용 IP 주소를 사용합니다. 가상 머신에 직접 연결되는 부하 분산 장치 또는 공용 IP 주소가 없으면 아웃바운드 연결이 가능합니다. NAT Gateway는 완전 관리형이며 복원력이 높습니다.

아웃바운드 연결을 위한 가장 좋은 방법은 NAT 게이트웨이를 사용하는 것입니다. NAT 게이트웨이는 확장성이 뛰어나고 안정적이며 SNAT 포트 고갈과 동일한 문제를 해결하지는 않습니다.

NAT 게이트웨이는 부하 분산 장치, 인스턴스 수준 공용 IP 주소, Azure Firewall을 비롯한 다른 아웃바운드 연결 방법보다 우선합니다.

Azure NAT Gateway에 대한 자세한 내용은 Azure NAT Gateway를 참조하세요.

3. 가상 머신에 공용 IP 할당

인스턴스 수준 공용 IP 주소가 있는 가상 머신의 다이어그램

연결 메서드 IP 프로토콜
VM NIC의 공용 IP SNAT(Source Network Address Translation)
는 사용되지 않습니다.
TCP(Transmission Control Protocol)
UDP(User Datagram Protocol)
ICMP(Internet Control Message Protocol)
ESP(Encapsulating Security Payload)

트래픽은 가상 머신의 공용 IP 주소(인스턴스 수준 IP)에서 요청하는 클라이언트에 반환됩니다.

Azure는 모든 아웃바운드 흐름에 대해 인스턴스 NIC의 IP 구성에 할당된 공용 IP를 사용합니다. 인스턴스에 있는 모든 삭제 포트를 사용할 수 있습니다. VM이 부하 분산되었는지는 중요하지 않습니다. 이 시나리오는 NAT Gateway를 제외하고 다른 시나리오보다 우선합니다.

VM에 할당된 공용 IP는 1:다가 아닌 1:1 관계이며 상태 비저장 1:1 NAT로 구현됩니다.

4. 기본 아웃바운드 액세스

기본 아웃바운드 액세스의 다이어그램

Azure에서 명시적인 아웃 바운드 연결을 사용 하지 않고 가상 네트워크에서 생성 된 가상 컴퓨터에는 기본 아웃 바운드 공용 IP 주소가 할당 됩니다. 이 IP 주소는 리소스에서 인터넷으로의 아웃 바운드 연결을 사용하도록 설정합니다. 이 액세스를 기본 아웃 바운드 액세스라고 합니다. 이 액세스 메서드는 안전하지 않으며 IP 주소가 변경될 수 있으므로 권장되지 않습니다.

Important

2025년 9월 30일에 새 배포에 대한 기본 아웃바운드 액세스가 사용 중지됩니다. 자세한 내용은 공식 공지를 참조하세요. 위의 옵션 1-3에 표시된 것처럼 설명된 형태의 연결을 사용하는 것이 좋습니다.

SNAT 포트란?

포트는 고유한 흐름을 유지하는 데 사용되는 고유 식별자 생성에 사용됩니다. 인터넷은 5개의 튜플을 사용하여 해당 고유성을 제공합니다.

인바운드 연결에 포트를 사용하는 경우 해당 포트의 인바운드 연결 요청에 대한 수신기가 존재합니다. 아웃바운드 연결에는 해당 포트를 사용할 수 없습니다. 아웃바운드 연결을 설정하려면 고유한 트래픽 흐름을 전달하고 유지할 수 있는 포트를 대상에 제공하는 임시 포트가 사용됩니다. 임시 포트가 SNAT에 사용되는 경우 이를 SNAT 포트라고 합니다.

정의에 따르면 모든 IP 주소에는 65,535개의 포트가 있습니다. 각 포트는 TCP(Transmission Control Protocol) 및 UDP(User Datagram Protocol)의 인바운드 또는 아웃바운드 연결에 사용할 수 있습니다. 공용 IP 주소를 부하 분산 장치에 프런트 엔드 IP로 추가하면 64,000개의 포트가 SNAT에 적합합니다.

부하 분산 또는 인바운드 NAT 규칙에 사용되는 각 포트는 사용 가능한 64,000개의 SNAT 포트에서 8개의 포트 범위를 사용합니다. 이렇게 하면 아웃바운드 연결에 동일한 프런트 엔드 IP가 사용되는 경우 SNAT에 적합한 포트 수가 줄어듭니다. 부하 분산 또는 인바운드 NAT 규칙에 사용되는 포트가 다른 규칙에서 사용하는 것과 동일한 8개 포트 블록에 있는 경우 규칙에는 추가 포트가 필요하지 않습니다.

참고 항목

Azure Virtual Network를 Azure Storage, Azure SQL, Azure Cosmos DB와 같은 지원되는 Azure PaaS 서비스에 연결해야 하는 경우 Azure Private Link를 사용하여 SNAT를 완전히 방지할 수 있습니다. Azure Private Link는 인터넷 대신 Azure 백본 네트워크를 통해 트래픽을 가상 네트워크에서 Azure 서비스로 보냅니다.

Private Link는 Azure 호스팅 서비스에 대한 프라이빗 액세스를 위해 서비스 엔드포인트를 대신하여 권장되는 옵션입니다. Private Link와 서비스 엔드포인트의 차이점에 대한 자세한 내용은 프라이빗 엔드포인트와 서비스 엔드포인트 비교를 참조하세요.

기본 SNAT는 어떻게 작동하나요?

VM이 아웃바운드 흐름을 만든 경우 Azure에서는 원본 IP 주소를 임시 IP 주소로 변환합니다. 이 변환은 SNAT를 통해 수행됩니다.

퍼블릭 부하 분산 장치를 통해 아웃바운드 규칙 없이 SNAT를 사용하는 경우 다음 기본 SNAT 포트 할당 테이블에 설명된 대로 SNAT 포트가 미리 할당됩니다.

기본 포트 할당 테이블

기본 포트 할당을 사용하도록 부하 분산 규칙을 선택하거나 아웃바운드 규칙이 “기본 아웃바운드 포트 수 사용”으로 구성된 경우 SNAT 포트는 기본적으로 백 엔드 풀 크기에 따라 할당됩니다. 백 엔드는 프런트 엔드 IP당 테이블에 정의된 포트 수(최대 1024개의 포트)를 받습니다.

예를 들어 백 엔드 풀에 100개의 VM과 하나의 프런트 엔드 IP만 있다면 각 VM은 512개의 포트를 받습니다. 두 번째 프런트 엔드 IP가 추가되면 각 VM은 추가로 512개의 포트를 받게 됩니다. 즉, 각 VM에 총 1024개의 포트가 할당됩니다. 따라서 세 번째 프런트 엔드 IP를 추가해도 할당된 SNAT 포트 수가 1024개 포트를 초과하지 않습니다.

일반적으로 기본 포트 할당을 활용할 때 제공되는 SNAT 포트 수는 다음과 같이 계산할 수 있습니다. MIN(풀 크기에 따라 제공되는 기본 SNAT 포트의 수 * 풀과 연결된 프런트 엔드 IP 수, 1024)

다음 표에서는 백 엔드 풀 크기에 따라 단일 프런트 엔드 IP에 대한 SNAT 포트 사전 할당을 보여 줍니다.

풀 크기(VM 인스턴스) 기본 SNAT 포트
1-50 1,024
51-100 512
101-200 256
201-400 128
401-800 64
801-1,000 32

포트 소모

동일한 대상 IP 및 대상 포트에 대한 모든 연결에서 SNAT 포트를 사용합니다. 이 연결은 백 엔드 인스턴스 또는 클라이언트 에서 서버로의 고유한 트래픽 흐름을 유지합니다. 해당 프로세스는 트래픽을 처리할 고유 포트를 서버에 제공합니다. 해당 프로세스가 없으면 클라이언트 머신은 패킷이 어떤 흐름에 속해 있는지 인식하지 못합니다.

다수의 브라우저가 https://www.microsoft.com으로 이동한다고 가정해 보세요. 구성은 다음과 같습니다.

  • 대상 IP = 23.53.254.142

  • 대상 포트 = 443

  • 프로토콜 = TCP

반환 트래픽을 위한 SNAT 포트가 없으면 클라이언트가 쿼리 결과를 구분할 수 없습니다.

아웃바운드 연결이 폭주할 수 있습니다. 백 엔드 인스턴스에 충분한 포트가 할당되지 못할 수 있습니다. 응용 프로그램 내에서 연결 재사용 기능을 사용 합니다. 연결 재사용 기능이 없으면 SNAT 포트 고갈이 발생할 위험이 증가합니다.

Azure App Service와의 연결 풀링에 대한 자세한 내용은 Azure App Service에서 일시적인 아웃바운드 연결 오류 문제 해결을 참조하세요.

포트 고갈이 발생하면 대상 IP에 대한 새 아웃바운드 연결에 실패합니다. 포트가 사용 가능하게 되면 연결에 성공합니다. 고갈은 IP 주소에 있는 64,000개의 포트가 다수의 백 엔드 인스턴스에 퍼져 있을 때 발생합니다. SNAT 포트 고갈을 완화하는 방법에 대한 지침은 문제 해결 가이드를 참조하세요.

TCP 연결의 경우 부하 분산 장치는 모든 대상 IP 및 포트에 대해 단일 SNAT 포트를 사용합니다. 이렇게 다용도로 사용하면 동일한 SNAT 포트를 사용하여 동일한 대상 IP에 다수의 연결이 사용 설정됩니다. 연결이 서로 다른 대상 포트에 연결되지 않은 경우 다용도 사용이 제한됩니다.

UDP 연결의 경우 부하 분산 장치는 대상 포트에 관계 없이 대상 IP당 하나의 SNAT 포트를 사용하는 포트 제한 원뿔형 NAT 알고리즘을 사용합니다.

포트는 연결에 무제한으로 재사용되지만 대상 IP 또는 포트가 서로 다른 경우에만 재사용됩니다.

제약 조건

  • 새 패킷의 전송 없이 연결이 유휴 상태인 경우 포트는 4~120분 후에 해제됩니다.

  • 이 임계값은 아웃바운드 규칙을 통해 구성할 수 있습니다.

  • 각 IP 주소는 SNAT에 사용할 수 있는 64,000개의 포트를 제공합니다.

  • 각 포트는 대상 IP 주소에 대한 TCP 및 UDP 연결 모두에 사용할 수 있습니다.

  • UDP SNAT 포트는 대상 포트가 고유한지와 관계없이 필요합니다. 하나의 대상 IP에 대한 모든 UDP 연결의 경우 하나의 UDP SNAT 포트만이 사용됩니다.

  • 대상 포트가 서로 다른 경우 동일한 대상 IP에 대한 다수의 연결에 TCP SNAT 포트를 사용할 수 있습니다.

  • 지정된 SNAT 포트에 백 엔드 인스턴스가 부족하면 SNAT 고갈이 발생합니다. 부하 분산 장치는 사용되지 않는 SNAT 포트를 계속 사용할 수 있습니다. 백 엔드 인스턴스가 사용하는 SNAT 포트가 지정된 SNAT 포트 개수를 초과할 경우 새 아웃바운드 연결을 설정할 수 없습니다.

  • 아웃바운드가 VM의 NIC에서 인스턴스 수준 공용 IP를 통하지 않는 한 조각화된 패킷이 삭제됩니다.

  • 네트워크 인터페이스의 보조 IP 구성은 부하 분산 장치를 통해 아웃바운드 통신(공용 IP가 연결되지 않는 한)을 제공하지 않습니다.

다음 단계