Azure NAT Gateway를 사용한 SNAT(원본 네트워크 주소 변환)

SNAT(원본 네트워크 주소 변환)를 사용하면 프라이빗 가상 네트워크의 트래픽이 완전히 비공개인 상태에서 인터넷에 연결할 수 있습니다. SNAT는 원래 패킷의 원본 IP와 포트를 공용 IP와 포트 조합으로 다시 작성합니다. 포트는 서로 다른 연결을 구분하기 위한 고유 식별자로 사용됩니다. 인터넷은 5개 튜플 해시(프로토콜, 원본 IP/포트, 대상 IP/포트)를 사용하여 이러한 구분을 제공합니다.

또한 SNAT를 사용하면 가상 네트워크 내의 여러 프라이빗 인스턴스가 동일한 단일 공용 IP 주소 또는 IP 주소 집합(접두사)을 사용하여 인터넷에 연결할 수 있습니다.

NAT Gateway는 다대일 SNAT 기능을 지원합니다. 서브넷의 많은 프라이빗 인스턴스는 인터넷에 연결하기 위해 NAT Gateway에 연결된 공용 IP 주소로 SNAT를 수행할 수 있습니다. NAT Gateway가 동일한 대상 엔드포인트에 여러 연결을 만들면 각각의 새 연결은 서로 다른 SNAT 포트를 사용하므로 연결을 서로 구분할 수 있습니다.

SNAT 포트 고갈은 원본 엔드포인트에서 새 연결 간을 구분하기 위해 사용 가능한 SNAT 포트가 부족할 때 발생합니다. SNAT 포트 소진이 발생하면 연결이 실패합니다.

NAT Gateway에 대한 SNAT 크기 조정

NAT 게이트웨이 스케일링은 주로 사용 가능한 공유 SNAT 포트 인벤토리를 관리하는 기능입니다.

SNAT 포트 인벤토리는 NAT Gateway에 연결된 공용 IP 주소, 공용 IP 접두사 또는 둘 다를 통해 제공됩니다. SNAT 포트 인벤토리는 NAT Gateway에 연결된 서브넷 내의 모든 인스턴스에 대해 요청 시 제공됩니다. 서브넷의 프라이빗 인스턴스의 워크로드가 크기 조정됨에 따라 NAT Gateway는 필요에 따라 SNAT 포트를 할당합니다.

가상 네트워크 내의 여러 서브넷이 동일한 NAT Gateway 리소스에 연결되면 NAT Gateway에서 제공하는 SNAT 포트 인벤토리가 모든 서브넷에서 공유됩니다.

단일 NAT 게이트웨이는 최대 16개의 IP 주소로 스케일 업할 수 있습니다. 각 NAT Gateway 공용 IP 주소는 아웃바운드 연결을 위해 64,512개의 SNAT 포트를 제공합니다. NAT 게이트웨이는 100만 개가 넘는 SNAT 포트까지 스케일 업할 수 있습니다. TCP와 UDP는 별도의 SNAT 포트 인벤토리이며 NAT 게이트웨이와 관련이 없습니다.

NAT 게이트웨이는 SNAT 포트를 동적으로 할당합니다.

NAT Gateway는 가상 머신과 같은 서브넷의 프라이빗 리소스 전체에서 SNAT 포트를 동적으로 할당합니다. 사용 가능한 모든 SNAT 포트는 NAT Gateway로 구성된 서브넷의 모든 가상 머신에서 요청 시 사용됩니다.

SNAT 포트 할당 다이어그램

그림: SNAT 포트 할당

다른 SNAT 방법의 경우 SNAT 포트를 각 가상 머신에 미리 할당해야 합니다. 이러한 SNAT 포트 미리 할당으로 인해 일부 가상 머신에서 SNAT 포트가 소모될 수 있지만, 다른 가상 머신에서는 아웃바운드 연결에 사용 가능한 SNAT 포트가 여전히 있습니다.

NAT Gateway를 사용하면 SNAT 포트를 사전 할당할 필요가 없습니다. 즉, SNAT 포트가 적극적으로 필요하지 않은 가상 머신에서 사용되지 않은 상태로 남아 있지 않습니다.

SNAT 포트가 해제되면 NAT Gateway로 구성된 서브넷 내의 모든 가상 머신에서 사용할 수 있습니다. 주문형 할당을 통해 서브넷의 동적 및 분기 워크로드가 필요에 따라 SNAT 포트를 사용할 수 있습니다. SNAT 포트를 사용할 수 있는 한 SNAT 흐름은 성공합니다.

SNAT 포트 소진 다이어그램.

그림: SNAT 포트 소진

NAT Gateway SNAT 포트 선택 및 재사용

NAT Gateway는 사용 가능한 포트 인벤토리에서 임의로 SNAT 포트를 선택하여 새로운 포트 연결을 만듭니다. NAT Gateway가 사용 가능한 SNAT 포트를 찾지 못하면 SNAT 포트를 재사용합니다. 동일한 SNAT 포트를 사용하여 동시에 여러 다른 대상에 연결할 수 있습니다.

SNAT 포트를 재사용하여 동일한 대상 엔드포인트에 연결할 수 있습니다. 포트가 재사용되기 전에 NAT Gateway는 연결이 닫힌 후 포트의 쿨다운을 위해 SNAT 포트 재사용 타이머를 배치합니다.

SNAT 포트 재사용 타이머는 동일한 대상에 연결하기 위해 포트가 너무 빨리 선택되는 것을 방지하는 데 도움이 됩니다. 이 프로세스는 대상 엔드포인트에 원본 포트에 쿨다운 타이머를 배치하는 방화벽이나 기타 서비스가 구성되어 있는 경우에 유용합니다. SNAT 포트 재사용 타이머는 연결 흐름이 닫힌 방식에 따라 다릅니다. 자세한 내용은 포트 재사용 타이머를 참조하세요.

SNAT 포트 재사용 다이어그램.

그림: SNAT 포트 재사용

NAT 게이트웨이에 대한 예제 SNAT 흐름

NAT Gateway를 사용한 다대일 SNAT

NAT Gateway는 NAT Gateway 구성 서브넷 내의 여러 프라이빗 인스턴스가 동일한 공용 IP 주소를 사용하여 아웃바운드에 연결할 수 있는 다대일 구성을 제공합니다.

다음 표에서는 서로 다른 두 개의 가상 머신(10.0.0.1 및 10.2.0.1)에서 https://microsoft.com 대상 IP(23.53.254.142)에 연결합니다. NAT 게이트웨이가 65.52.1.1 공용 IP 주소로 구성된 경우 각 가상 머신의 원본 IP는 NAT 게이트웨이의 공용 IP 주소 및 SNAT 포트로 변환됩니다.

Flow 원본 튜플 SNAT 이후의 원본 튜플 대상 튜플
1 10.0.0.1:4283 65.52.1.1:1234 23.53.254.142:80
2 10.0.0.1:4284 65.52.1.1:1235 23.53.254.142:80
3 10.2.0.1:5768 65.52.1.1:1236 23.53.254.142:80

IP 위장 또는 포트 위장은 인터넷에 연결하기 전에 개인 IP와 포트를 공용 IP와 포트로 대체하는 동작입니다. 여러 프라이빗 리소스는 NAT 게이트웨이의 동일한 공용 IP 뒤에 가장될 수 있습니다.

NAT Gateway는 SNAT 포트를 재사용하여 새 대상에 연결합니다.

앞에서 언급한 것처럼 NAT Gateway는 동일한 SNAT 포트를 재사용하여 새 대상 엔드포인트에 동시에 연결할 수 있습니다. 다음 표에서 NAT Gateway는 흐름 4를 이미 다른 대상에 사용 중인 SNAT 포트로 변환합니다(이전 표의 흐름 1 참조).

Flow 원본 튜플 SNAT 이후의 원본 튜플 대상 튜플
4 10.0.0.1:4285 65.52.1.1:1234 26.108.254.155:80

동일한 대상에 재사용할 수 있도록 NAT Gateway SNAT 포트 쿨다운

NAT Gateway가 SNAT 포트를 재사용하여 동일한 대상 엔드포인트에 대한 새 연결을 만드는 시나리오에서 SNAT 포트는 먼저 쿨다운을 위해 SNAT 포트 재사용 단계에 배치됩니다. SNAT 포트 재사용 기간은 동일한 대상에 연결할 때 SNAT 포트가 너무 빨리 재사용되지 않도록 하는 데 도움이 됩니다. NAT Gateway의 쿨다운을 위한 이 SNAT 포트 재사용은 대상 엔드포인트에 쿨다운을 위한 자체 원본 포트 타이머가 있는 방화벽이 있는 시나리오에서 유용합니다.

이 SNAT 포트 재사용 쿨다운 동작을 시연하기 위해 이전 표의 흐름 4를 자세히 살펴보겠습니다. 흐름 4는 20초 원본 포트 쿨다운 타이머를 사용하여 방화벽 앞에 있는 대상 엔드포인트에 연결되었습니다.

Flow 원본 튜플 SNAT 이후의 원본 튜플 대상 튜플 패킷 형식 연결이 닫힙니다. 원본 포트의 쿨다운을 위한 대상 방화벽 타이머
4 10.0.0.1:4285 65.52.1.1:1234 26.108.254.155:80 TCP FIN 20초

연결 흐름 4는 TCP FIN 패킷으로 종료됩니다. TCP FIN 패킷으로 연결이 닫히므로 NAT Gateway는 SNAT 포트 1234를 재사용하기 전에 65초 동안 쿨다운 상태로 둡니다. 포트 1234는 방화벽 원본 포트 쿨다운 타이머 기간인 20초보다 오랫동안 쿨다운 상태에 있으므로 연결 흐름 5는 문제 없이 SNAT 포트 1234를 재사용하여 진행됩니다.

Flow 원본 튜플 SNAT 이후의 원본 튜플 대상 튜플
5 10.2.0.1:5769 65.52.1.1:1234 26.108.254.155:80

NAT Gateway는 이전 연결이 닫힌 방식에 따라 SNAT 포트를 다른 SNAT 포트 재사용 쿨다운 타이머 아래에 배치한다는 점을 유념해야 합니다. SNAT 포트 재사용 타이머에 대한 자세한 내용은 포트 재사용 타이머를 참조하세요.

원본 포트가 위 예제에서 할당된 특정 방식에 대한 종속성을 사용하지 않습니다. 앞의 내용은 기본 개념만을 예시한 것입니다.