IP 주소 및 포트
이 페이지에서는 Cloud NAT 게이트웨이가 IP 주소를 사용하는 방법과 게이트웨이를 사용하는 Compute Engine 가상 머신(VM) 인스턴스와 Google Kubernetes Engine(GKE) 노드에 소스 포트를 할당하는 방법을 설명합니다.
이 정보를 검토하기 전에 Cloud NAT 개요를 숙지하세요.
Public NAT IP 주소
Public NAT IP 주소는 인터넷에서 라우팅할 수 있는 리전별 외부 IP 주소입니다. Public NAT 게이트웨이에서 제공하는 서브네트워크(서브넷)에 외부 IP 주소가 없는 VM은 패킷을 인터넷의 대상으로 전송할 때 Public NAT IP 주소를 사용합니다.
네트워크 주소 변환(NAT) IP 주소를 Public NAT 게이트웨이에 할당하려면 다음 방법 중 하나를 사용합니다.
자동 NAT IP 주소 할당. 이 방법을 선택하거나 Google Cloud 기본값을 선택하면 Public NAT가 다음을 기준으로 게이트웨이에 리전별 외부 IP 주소를 자동으로 추가합니다.
- 선택한 네트워크 등급
- 게이트웨이를 사용하는 VM 수
- 각 VM에 예약된 포트 수
또한 해당 NAT IP 주소에 소스 포트가 더 이상 필요하지 않으면 Public NAT에서 자동으로 NAT IP 주소를 제거합니다.
다음은 자동 NAT IP 주소 할당의 특성입니다.
Public NAT 게이트웨이가 NAT IP 주소를 추가하면 게이트웨이를 구성할 때 선택한 네트워크 등급에 고정(예약) 리전 외부 IP 주소를 만듭니다. 예를 들어 프리미엄 등급을 선택한 경우 Public NAT 게이트웨이가 해당 등급에 IP 주소를 만듭니다. 지원되는 네트워크 등급은 프리미엄 등급(기본 옵션)과 표준 등급입니다.
고정 외부 IP 주소 목록에서 자동으로 추가된 NAT IP 주소를 볼 수 있습니다. 이러한 주소는 프로젝트별 할당량으로 계산되지 않습니다.
- Public NAT 게이트웨이의 네트워크 등급을 변경하면 해당 게이트웨이의 기존 IP 주소가 해제되고 선택한 등급의 새 IP 주소 집합이 할당됩니다.
- 자동 할당을 사용하면 다음으로 할당되는 IP 주소를 예측할 수 없습니다. 가능한 NAT IP 주소 집합을 미리 알고 있어야 하는 경우(예: 허용 목록 만들기) 수동 NAT IP 주소 할당을 대신 사용해야 합니다.
자동으로 추가된 NAT IP 주소가 더 이상 사용되지 않으면 삭제됩니다. 그러나 Public NAT는 주소에 할당된 마지막 VM이 더 이상 포트를 사용하지 않을 때만 주소를 할당 취소합니다. 따라서 Public NAT를 사용하는 VM 수가 줄어들면 IP가 줄어들지 않을 수 있습니다 . 재할당 시 설정된 연결이 중단되므로 Cloud NAT가 한 IP 주소에서 다른 IP로 VM을 동적으로 다시 할당하지 않기 때문입니다. 하나 이상의 VM에서 IP 주소를 사용하는 경우 IP 주소가 활성 상태로 유지되며 새 VM에 IP 주소를 할당할 수 있습니다.
IP 주소 사용을 최소화하기 위해 한 IP 주소에서 다른 IP로 VM을 수동으로 다시 할당할 수 있도록 하려면 수동 NAT IP 주소 할당을 사용합니다. 수동 NAT IP 주소 할당은 Public NAT IP 주소의 드레이닝을 허용합니다.
나중에 수동 NAT IP 주소 할당으로 전환하면 자동으로 예약된 지역 외부 IP 주소가 삭제됩니다. 자세한 내용은 할당 방법 전환을 참조하세요.
수동 NAT IP 주소 할당. 이 옵션을 선택하면 리전별 고정(예약) 외부 IP 주소를 만들고 Public NAT 게이트웨이에 수동으로 할당합니다. 조건에 따라 프리미엄 등급, 표준 등급 또는 둘 다에서 IP 주소를 수동으로 할당할 수 있습니다.
- Cloud NAT 게이트웨이를 편집하여 수동으로 할당된 NAT IP 주소의 수를 늘리거나 줄일 수 있습니다.
- 수동 NAT IP 주소 할당을 사용하는 경우 Public NAT 게이트웨이에 필요한 리전별 외부 IP 주소의 수를 계산해야 합니다. 게이트웨이에서 NAT IP 주소를 모두 소모하면 Public NAT가 패킷을 삭제합니다. Cloud NAT 로깅을 사용하여 오류 로깅을 사용 설정하면 삭제된 패킷이 로깅됩니다.
- 계산 예시는 포트 예약 예시를 참조하세요.
자동으로 또는 수동으로 할당된 NAT IP 주소의 최대 개수는 Cloud NAT 한도를 참조하세요.
프리미엄 등급 및 표준 등급 IP 주소를 조합하여 수동으로 할당
수동 NAT IP 주소 할당 방법으로 Public NAT 게이트웨이를 만들 때 다른 네트워크 등급의 IP 주소가 동일한 규칙(기본 규칙 포함)에 속하지 않는 경우 프리미엄 등급 및 표준 등급 IP 주소의 조합을 할당할 수 있습니다.
규칙(기본 규칙 포함) 내에서 활성 범위에 할당된 모든 IP 주소가 동일한 네트워크 등급이어야 합니다. 동일한 규칙의 일부로 서로 다른 등급의 IP 주소를 사용하려고 하면 Google Cloud에서 구성을 거부합니다.
할당 방법 전환
Public NAT 게이트웨이를 자동 NAT IP 주소 할당에서 수동 NAT IP 주소 할당으로 전환할 수 있습니다. 단, NAT IP 주소는 보존할 수 없습니다. 자동으로 할당 된 NAT IP 주소는 고정이지만 수동 NAT IP 주소 할당으로 이동할 수없습니다 . 예를 들어 예를 들어 자동으로 할당된 NAT IP 주소로 Public NAT 게이트웨이를 사용하면 나중에 NAT 게이트웨이를 수동으로 할당하기 위해 전환할 때는 같은 주소를 사용할 수 없습니다.
Public NAT가 자동 NAT IP 주소 할당에 사용하는 리전 외부 IP 주소 조합은 수동으로 선택할 수 있는 리전 외부 IP 주소 조합과 다릅니다.
Public NAT IP 주소 드레이닝
수동 NAT IP 주소 할당으로 Public NAT 게이트웨이를 구성하는 경우 게이트웨이에서 사용하는 NAT IP 주소의 수를 줄여야 할 때 어떻게 할 지 정할 수 있습니다.
수동으로 할당된 NAT IP 주소를 제거하면 설정된 NAT 연결이 즉시 중단됩니다.
대신 수동으로 할당된 NAT IP 주소를 드레이닝할 수 있습니다. 드레이닝은 Public NAT 게이트웨이에 새 연결에 대한 NAT IP 주소 사용을 중지하되 이미 수립된 연결에는 계속 사용하도록 지시합니다. 수립된 연결은 갑자기 종료하는 대신 정상적으로 종료할 수 있습니다. NAT 규칙을 사용하지 않는 Public NAT 게이트웨이와 연결된 IP 주소를 드레이닝하려면 NAT와 연결된 외부 IP 주소 드레이닝을 참조하세요. NAT 규칙을 사용하는 NAT 게이트웨이와 연결된 IP 주소를 드레이닝하려면 NAT 규칙 업데이트를 참조하세요.
Private NAT IP 주소
Private NAT 주소는 Private NAT 게이트웨이와 동일한 리전과 VPC 네트워크에 있는 비공개 NAT 서브넷의 기본 IPv4 주소 범위에서 가져오는 리전별 내부 IPv4 주소입니다. Private NAT IP 주소는 인터넷에서 라우팅할 수 없습니다. Private NAT 서브넷의 기본 IPv4 주소 범위의 IP 주소는 Private NAT 게이트웨이에서만 사용할 수 있습니다. Private NAT 서브넷을 만들려면 Google Cloud CLI 및 --purpose=PRIVATE_NAT
플래그를 사용하여 IPv4 전용 서브넷을 추가합니다.
VPC 네트워크의 서브넷에 NAT 서비스를 제공하도록 Private NAT 게이트웨이를 구성하고 나면 해당 서브넷에 네트워크 인터페이스가 있는 VM에서 Private NAT 게이트웨이를 호스팅하는 네트워크와 동일한 Network Connectivity Center 허브에 연결된 VPC 네트워크 또는 Cloud Interconnect 또는 Cloud VPN을 통해 Google Cloud에 연결된 Google Cloud 외부의 네트워크와 같은 다른 네트워크에 위치한 리소스에 패킷을 전송할 수 있습니다. 이그레스 시 Google Cloud는 소스 IP 주소를 게이트웨이와 연결된 Private NAT 서브넷의 IP 주소로 변경합니다.
다음은 Private NAT IP 주소의 특성입니다.
- Private NAT IP 주소를 Private NAT 게이트웨이에 자동으로 할당할 수 없습니다. 대신 Private NAT 게이트웨이에서 규칙을 만들 때 Private NAT 서브넷을 수동으로 지정합니다. Private NAT 서브넷은 게이트웨이와 동일한 VPC 네트워크 및 리전에 있어야 합니다. 게이트웨이는 Private NAT 서브넷의 기본 IPv4 주소 범위의 IP 주소만 사용합니다.
- 각 Private NAT 서브넷이 제공할 수 있는 NAT IP 주소 수를 확인하려면
2(32 - PREFIX_LENGTH) - 4
공식을 사용합니다. 여기서PREFIX_LENGTH
는 Private NAT 서브넷의 기본 IPv4 주소 범위의 서브넷 마스크 길이입니다. 모든 서브넷의 기본 IPv4 주소 범위에서 4개의 IP 주소를 사용할 수 없습니다.
포트
Cloud NAT 게이트웨이(Public NAT 및 Private NAT 모두)의 각 NAT IP 주소는 TCP 소스 포트 64,512개와 UDP 소스 포트 64,512개를 제공합니다. TCP 및 UDP는 각 IP 주소 당 65,536개의 포트를 지원하지만, Cloud NAT는 첫 1,024개의 잘 알려진(권한이 있는) 포트를 사용하지 않습니다.
Cloud NAT 게이트웨이가 VM에서 전송된 패킷에 소스 네트워크 주소 변환(SNAT)을 수행할 때 Cloud NAT 게이트웨이는 패킷의 NAT 소스 IP 주소와 소스 포트를 변경합니다.
Cloud NAT 게이트웨이를 만들 때 정적 포트 할당 또는 동적 포트 할당을 사용할지 여부를 선택합니다. 포트 할당 모드를 변경하면 공개 NAT 게이트웨이를 사용하는 모든 기존 연결이 닫히며 재설정이 필요합니다.
여러 고정(예약) 리전 외부 IP 주소를 Public NAT 게이트웨이에 수동으로 할당한 경우 게이트웨이를 사용하는 단일 VM이 할당된 모든 NAT IP 주소에서 필요한 포트를 가져올 수 있으며 동시에 여러 NAT IP 주소에서도 가져올 수 있습니다.
정적 포트 할당
정적 포트 할당을 구성할 때는 VM 인스턴스당 최소 포트 수를 지정합니다. VM당 최소 포트 수를 지정하지 않으면 Google Cloud에서 기본값을 사용합니다.
정적 포트 할당은 Public NAT에 기본적으로 사용 설정됩니다. 반면에 Private NAT에서는 기본적으로 동적 포트 할당을 사용합니다.
모든 VM에 동일한 포트 수가 할당되기 때문에 정적 포트 할당은 모든 VM의 이그레스 사용량이 비슷한 경우에 효율적입니다. 일부 VM이 다른 것보다 포트를 더 많이 사용하면 Cloud NAT 게이트웨이에서 포트 사용률이 낮아질 수 있습니다. 이그레스 사용량에 변동이 있으면 동적 포트 할당을 구성하는 것이 좋습니다.
Public NAT 게이트웨이에서 엔드포인트 독립 매핑을 구성하려면 정적 포트 할당을 사용해야 합니다. 엔드포인트 독립 매핑은 Private NAT 게이트웨이에 사용할 수 없습니다.
동적 포트 할당
동적 포트 할당을 구성할 때는 VM 인스턴스당 최소 포트 수와 VM 인스턴스당 최대 포트 수를 지정합니다.
동적 포트 할당은 기본적으로 Private NAT에 사용 설정됩니다. Public NAT의 경우 수동으로 동적 포트 할당을 구성해야 합니다.
동적 포트 할당을 구성하면 동일한 Cloud NAT 게이트웨이가 VM 사용량을 기준으로 VM별로 다른 포트 수를 할당할 수 있습니다. 처음에 VM에는 VM 인스턴스별로 최소 포트 수가 할당되어 있습니다. VM에 할당된 모든 포트가 거의 소진되면 VM에 할당되는 포트 수가 두 배로 증가합니다. VM은 VM 인스턴스당 최대 포트 수까지 추가 포트를 반복적으로 요청할 수 있습니다. 포트 사용량이 크게 감소하면 포트가 할당 취소되고 동일한 NAT 게이트웨이를 사용하는 다른 VM에 할당할 수 있는 상태가 됩니다.
동적 포트 할당에는 다음과 같은 이점이 있습니다.
할당되었지만 사용되지 않는 포트 수가 줄어듭니다.
NAT 게이트웨이는 각 VM의 포트 사용량을 모니터링하고 필요에 따라 각 VM에 할당된 포트 수를 수정합니다. 포트 사용량을 모니터링하거나 NAT 게이트웨이 구성을 조정할 필요가 없습니다.
동적 포트 할당을 사용하기 전 다음을 고려하세요.
엔드포인트 독립 매핑이 Cloud NAT 게이트웨이에 사용 설정된 경우 동적 포트 할당을 구성할 수 없습니다. 엔드포인트 독립 매핑이 필요한 경우 정적 포트 할당을 사용합니다.
VM에 추가 포트가 할당되는 동안 연결 시간 초과 또는 지연 시간이 발생할 수 있습니다. 연결 손실을 방지하기 위한 전략은 동적 포트 할당 사용 시 연결 손실 감소를 참조하세요.
포트 할당 방법 전환
지정된 Cloud NAT 게이트웨이에 대해 정적 포트 할당과 동적 포트 할당 간에 전환할 수 있습니다.
동적 포트 할당 방법으로 전환하면 다음 조건 중 하나가 충족될 경우에만 기존 NAT 연결이 해제됩니다.
VM당 최대 포트 수를 이전 NAT 구성에 지정된 VM당 최소 포트 수보다 작은 값으로 설정합니다(정적 포트 할당 사용).
이전 구성에서 VM당 최소 포트 수가
1024
보다 큰 값으로 설정되었고 새 구성에서1024
를 VM당 최대 포트 수로 지정한 경우 첫 번째 연결이 우선 적용되기 때문에 기존 연결이 해제됩니다.VM당 최대 포트 수를
1024
보다 작은 값으로 설정합니다.
앞의 조건 중 하나가 충족되지 않는 한 동적 포트 할당으로 전환해도 기존 NAT 연결이 해제되지 않습니다.
동적 포트 할당을 사용 중지하고 정적 포트 할당으로 전환하면 모든 활성 NAT 연결이 해제됩니다.
포트 예약 절차
Cloud NAT는 다음 절차에 따라 Cloud NAT(Public NAT 및 Private NAT) 게이트웨이가 제공하는 각 VM에 대해 NAT 소스 IP 주소와 소스 포트 튜플을 프로비저닝합니다.
Cloud NAT가 NAT를 수행해야 하는 VM 내부 IP 주소를 확인합니다. VM 내부 IP 주소는 게이트웨이가 제공하도록 구성된 서브넷 IP 주소 범위를 통해 확인됩니다.
Public NAT 게이트웨이가 VM 네트워크 인터페이스에서 사용하는 서브넷의 기본 IP 주소 범위에 대해 NAT를 수행하도록 구성된 경우, 게이트웨이는 VM의 기본 내부 IP 주소 및 서브넷의 기본 IP 주소 범위에 속하는 해당 VM의 별칭 IP 범위 모두에 대해 NAT를 수행합니다.
Public NAT 게이트웨이가 VM의 네트워크 인터페이스에서 사용하는 서브넷의 보조 IP 주소 범위에 대해 NAT를 수행하도록 구성된 경우 게이트웨이는 해당 서브넷의 보조 IP 주소 범위에서 별칭 IP 범위에 대해 NAT를 수행합니다.
Private NAT 게이트웨이는 VM의 네트워크 인터페이스에서 사용하는 서브넷의 모든 IP 주소 범위에 대해 NAT를 수행하도록 구성되어 있으므로 게이트웨이는 해당 서브넷의 모든 IP 범위에 대해 NAT를 수행합니다.
Cloud NAT가 필요한 경우 VM 인스턴스당 최소 포트를 조정합니다. 정적 포트 할당이 구성되었고 게이트웨이가 2개 이상의 주소(
/32
보다 작은 넷마스크)를 포함하는 별칭 IP 범위에 대해 NAT를 수행하는 경우 Cloud NAT는 VM당 최소 포트를 이러한 두 값의 최대값으로 조정합니다.지정한 VM 인스턴스당 최소 포트 수
숫자 1,024
동적 포트 할당이 구성된 경우를 포함한 다른 모든 상황에서 Cloud NAT 게이트웨이는 VM 인스턴스별로 지정된 최소 포트를 입력으로 사용하여 다음 단계를 진행합니다. VM 인스턴스별 최소 포트를 지정하지 않으면 정적 포트 할당의 경우에
64
, 동적 포트 할당의 경우에는32
의 기본값이 사용됩니다.Cloud NAT는 각 VM에 대해 NAT 소스 IP 주소 및 소스 포트 튜플을 예약합니다. Cloud NAT 게이트웨이는 이전 단계에서 VM 인스턴스당 지정되거나 조정된 최소 포트를 사용하여 VM에 할당할 NAT 소스 IP 주소 및 소스 포트 튜플 수를 계산합니다.
Public NAT는 NAT 소스 IP 주소 및 소스 포트 튜플 수가 사용자가 지정한 VM 인스턴스당 최소 포트 수보다 크거나 같도록 2의 거듭제곱을 사용하여 NAT 소스 IP 주소와 소스 포트 튜플을 할당합니다.
Private NAT의 경우 Google Cloud는 안정성을 위해 VM당 필요한 최소 포트 수의 두 배를 할당합니다. Private NAT에서 IP 주소와 포트를 할당하는 서브넷의 크기가 적절한지 확인합니다.
Cloud NAT 게이트웨이가 두 개 이상의 NAT IP 주소를 사용하는 경우 NAT 소스 IP 주소와 소스 포트 튜플이 두 개 이상의 NAT IP 주소에 걸쳐 있을 수 있습니다. 단일 NAT IP 주소에는 VM에 필요한 NAT 소스 IP 주소 및 소스 포트 튜플의 수를 수용할 수 있는 소스 포트가 충분하지 않을 수 있습니다.
Cloud NAT 게이트웨이는 각 VM에 소스 IP 주소 및 소스 포트 튜플을 할당합니다.
정적 포트 할당을 구성한 경우 소스 IP 주소 및 소스 포트 튜플 수가 고정됩니다. 각 VM은 트래픽 버스트가 발생하더라도 할당된 소스 IP 주소와 소스 포트 튜플보다 더 많은 수를 사용할 수 있습니다.
동적 포트 할당을 구성한 경우 소스 포트 IP 주소 및 소스 포트 튜플을 필요에 따라 변경할 수 있습니다. VM이 현재 포트 할당을 거의 소진한 경우 지정된 VM 인스턴스당 최대 포트 값까지 Cloud NAT가 추가 포트를 할당합니다. VM의 포트 사용량이 임곗값 아래로 낮아진 후에는 포트가 해제되고 다른 VM에 할당될 수 있습니다.
VM당 포트 늘리기
정적 포트 할당을 사용하여 Cloud NAT 게이트웨이를 구성한 경우 게이트웨이에서 VM당 최소 포트를 늘려도 트래픽이 중단되지 않습니다.
동적 포트 할당으로 Cloud NAT 게이트웨이를 구성한 경우에는 VM당 최소 또는 최대 포트 수 또는 두 값을 모두 늘리더라도 기존 NAT 연결을 해제하거나 NAT 게이트웨이를 통한 트래픽을 중단하지 않습니다.
VM당 포트 수를 늘릴 때는 다음을 고려하세요.
수동 NAT IP 주소 할당과 함께 Public NAT를 사용할 경우 필요한 NAT 소스 IP 주소의 수를 계산해야 합니다. VM당 최소 포트를 늘리기 전에 Public NAT 게이트웨이에 최소한 그 이상의 NAT IP 주소를 할당합니다.
자동 NAT IP 주소 할당과 함께 Public NAT를 사용하는 경우 VM당 최소 포트 수를 늘리면 Public NAT 게이트웨이가 더 많은 지역 외부 IP 주소를 자동으로 획득하고 할당합니다.
Private NAT를 사용할 때는 게이트웨이가 IP 주소를 할당하는 서브넷에 적절한 수의 IP 주소가 있는지 확인합니다.
VM당 포트 줄이기
정적 포트 할당을 사용하여 Cloud NAT 게이트웨이를 구성한 경우 게이트웨이에서 VM당 최소 포트를 줄여도 연결 드레이닝이 없습니다. 설정된 NAT 연결이 즉시 중단되며 클라이언트는 새 TCP 연결을 설정해야 합니다.
동적 포트 할당으로 Cloud NAT 게이트웨이를 구성한 경우 다음 조건이 적용됩니다.
- VM당 최소 포트 수를 줄여도 기존 NAT 연결을 해제하거나 NAT 게이트웨이를 통해 이동하는 트래픽을 중단하지 않습니다.
- VM당 최대 포트 수를 줄이면 기존 NAT 연결을 즉시 해제하고 모든 VM에 대해 할당된 포트 수가 VM당 최소 포트 수로 지정된 값으로 일시적으로 재설정됩니다.
포트 및 연결
Cloud NAT 게이트웨이가 VM에 대해 예약한 NAT 소스 IP 주소와 소스 포트 튜플의 수는 VM이 고유 대상에 만들 수 있는 연결 수를 제한합니다.
고유 대상이란 대상 IP 주소, 대상 포트, IP 프로토콜(TCP 또는 UDP 등)으로 구성된 고유한 3-튜플을 의미합니다.
연결이란 NAT 소스 IP 주소 및 소스 포트 튜플과 고유한 대상 3-튜플이 결합되어 구성된 고유한 5-튜플을 의미합니다. UDP 프로토콜은 비 연결형이기 때문에 고유한 UDP 데이터그램과 연결된 5-튜플로 연결 개념이 축소됩니다.
Cloud NAT 게이트웨이가 다음의 포트 예약 절차에 따라 VM의 고정 포트 수에 1,024를 계산한다고 가정해 보겠습니다. Cloud NAT 게이트웨이는 VM에 대해 NAT 소스 IP 주소와 소스 포트 튜플의 고유한 조합 1,024개를 예약합니다. Cloud NAT 게이트웨이는 각 고유한 대상 3-튜플에 대한 1,024개의 동시 연결을 처리할 수 있습니다. 하지만 Cloud NAT는 연결이 닫힌 후에도 120초 동안 종료된 연결을 사용할 수 없는 것으로 간주하여 한 번에 사용 중인 연결 수에 영향을 줄 수 있습니다.
예:
게이트웨이는 TCP 프로토콜을 사용하여 포트
80
에서 대상 IP 주소203.0.113.99
에 대한 1,024개의 동시 연결을 지원합니다.게이트웨이는 또한 TCP 프로토콜을 사용하여 포트
443
에서 동일한 대상 IP 주소에 대한 다른 1,024개의 동시 연결을 지원합니다.게이트웨이는 또한 TCP 프로토콜을 사용하여 포트
80
에서 다른 대상 IP 주소에 대한 다른 1,024개의 동시 연결을 지원합니다.
동시 포트 재사용 및 엔드포인트 독립 매핑
대상 3-튜플(대상 IP 주소, 대상 포트, 프로토콜)에서 최소 하나의 정보라도 변경된 경우 동일한 NAT 소스 IP 주소와 소스 포트 튜플을 동시에 다른 연결에 대해 사용할 수 있습니다.
Public NAT는 RFC 5128의 섹션 2.3에 정의된 대로 엔드포인트 독립 매핑을 사용합니다. 따라서 Public NAT가 2개 이상의 내부 IP 주소와 클라이언트 VM의 임시 소스 포트에 동일한 NAT 소스 IP 주소 및 소스 포트 튜플을 할당하면 클라이언트 VM에서 고유한 대상 3-튜플에 동시에 연결할 수 있는 수가 줄어들 수 있습니다. 클라이언트 VM에 내부 소스 IP 주소가 많고 동일한 대상 3-튜플에 다수의 연결이 발생한 경우 이러한 문제가 발생할 가능성이 높습니다. 클라이언트 VM이 처음으로 내부 IP 주소와 임시 소스 포트에서 패킷을 전송하면 Public NAT는 다음 사이에 다대일 엔드포인트 독립 매핑을 만듭니다.
- 내부 IP 주소 및 임시 소스 포트 튜플
- 고유한 NAT 소스 IP 주소 및 소스 포트 튜플
예를 들어 클라이언트 VM이 임시 소스 포트 10001
을 사용하여 내부 IP 주소 10.0.0.2
에서 패킷을 전송하면 Public NAT는 10.0.0.2:10001
을 할당합니다. 이 NAT 소스 IP 주소와 소스 포트 튜플은 이후 10.0.0.2:10001
에서 대상 3-튜플으로의 모든 후속 연결에 사용됩니다.
동일한 VM이 다른 임시 소스 포트를 사용하여 패킷을 전송하면(예: 10.0.0.2:20002
) Public NAT는 또한 10.0.0.2:20002
에서 대상 3-튜플으로의 모든 후속 연결에 NAT 소스 IP 주소와 소스 포트를 할당합니다. Public NAT가 이러한 내부 IP 주소와 임시 소스 포트 튜플 모두에 동일한 NAT 소스 IP 주소 및 소스 포트 튜플을 할당할 수 있으며 이러한 경우 상황에 따라 엔드포인트 독립 충돌이 발생합니다.
자세한 예시는 엔드포인트 독립 매핑 충돌 예시를 참조하세요.
엔드포인트 독립 충돌 감소
구성 변경을 수행하여 엔드포인트 독립 충돌을 줄일 수 있습니다. 자세한 내용은 엔드포인트 독립 충돌로 인해 패킷이 삭제됨을 참조하세요.
TCP 소스 포트 재사용 지연
Cloud NAT 게이트웨이가 TCP 연결을 닫은 후에 Google Cloud에서는 게이트웨이가 동일한 대상(대상 IP 주소, 대상 포트, 프로토콜)과 함께 동일한 NAT 소스 IP 주소 및 소스 포트 튜플을 재사용할 수 있도록 지연을 적용합니다. 지연 시간은 TCP TIME_WAIT 제한 시간 설정에 의해 제어됩니다.
필요한 경우 TCP TIME_WAIT 제한 시간의 기본값을 수정하여 이 지연을 줄일 수 있습니다. NAT 제한 시간을 수정하는 방법에 대한 자세한 내용은 NAT 제한 시간 변경을 참조하세요. 또는 다음 중 하나를 변경할 수 있습니다.
포트 예약 절차로 VM에 더 많은 NAT 소스 IP 주소와 소스 포트 튜플을 할당할 수 있도록 VM 인스턴스당 최소 포트 수를 늘립니다.
VM이 동일한 프로토콜을 사용하여 동일한 대상 IP 주소 및 대상 포트에 대한 TCP 연결을 빠르게 열고 닫아야 하는 경우 Cloud NAT 대신 VM에 외부 IP 주소를 할당하고 방화벽 규칙을 사용하여 원치 않는 인그레스 연결을 제한합니다.
소스 포트 및 보안
보안 수단으로 소스 포트 무작위 순서 지정을 사용한다면 다음 사항을 고려해야 합니다.
포트 예약 절차로 VM에 더 많은 NAT 소스 IP 주소와 소스 포트 튜플을 할당할 수 있도록 VM 인스턴스당 최소 포트 수를 늘립니다. VM 인스턴스당 최소 포트 수를 늘리면 각 VM에 포트 범위가 무작위로 할당됩니다. 하지만 해당 범위에서 선택되는 소스 포트는 순차적입니다.
Public NAT를 사용하는 대신 VM에 외부 IP 주소를 할당합니다.
예시
다음 예시는 Cloud NAT가 VM에 대해 NAT 소스 IP 주소와 소스 포트를 예약하는 방식과 인터넷에 전송된 패킷에 대해 NAT를 수행하는 방식을 설명합니다.
포트 예약
다음 예시에서는 포트 예약 절차의 적용을 설명합니다.
서브넷의 기본 IP 주소 범위에 NAT를 제공하도록 Public NAT 게이트웨이를 구성하고 해당 서브넷을 사용하는 VM에 서브넷의 기본 IP 주소 범위에 있는 별칭 IP 범위가 없다고 가정해 보겠습니다. 모든 나눗셈 연산의 결과를 가장 가까운 정수로 내림합니다. ⌊⌋는 플로어(가장 큰 정수) 함수이며 이는 나눗셈의 분수 결과를 삭제합니다.
수동 할당을 사용하여 Public NAT 게이트웨이를 단일 NAT IP 주소로 구성하고 VM 인스턴스당 최소 포트 수를 64개로 설정한다면 게이트웨이는 최대 1,008개의 VM에 NAT 서비스를 제공할 수 있습니다.
⌊(1개 NAT IP 주소) × (주소당 64,512개 포트) / (VM당 64개 포트)⌋ = 1,008개 VM
1,008개가 넘는 VM을 지원해야 하는 경우 Cloud NAT 게이트웨이에 두 번째 NAT IP 주소를 할당할 수 있습니다. NAT IP 주소 2개를 사용하여 VM당 최소 포트 수를 64개로 유지하면 2,016개의 VM을 지원할 수 있습니다.
⌊(2개의 NAT IP 주소) × (주소당 64,512개의 포트) / (VM당 64개의 포트)⌋ = 2,016개의 VM
VM당 최소 포트 수를 4,096개로 설정한 경우 각 NAT IP 주소는 15개의 VM을 지원할 수 있습니다. 이 계산은 가장 가까운 정수로 내립니다.
⌊(1개의 NAT IP 주소) × (주소당 64,512개의 포트) / (VM당 4,096개의 포트)⌋ = 15개의 VM
서브넷의 모든 IP 주소에 대해 NAT를 제공하도록 Private NAT 게이트웨이를 구성한다고 가정해 보겠습니다.
만들 수 있는 최소 서브넷 크기는
/29
의 서브넷 마스크인 IPv4 주소 8개입니다. 최소 크기의 NAT 서브넷으로 Private NAT 게이트웨이를 구성하고 VM 인스턴스당 최소 포트 수를 64개로 설정하면 게이트웨이에서 최대 2,016개의 VM에 NAT 서비스를 제공할 수 있습니다.⌊(2(32-29) - 4) NAT IP 주소 × (주소당 64,512개의 포트) / (VM당 64개의 포트 × 2)⌋ = 2,016개의 VM
이전 예시에서 VM 인스턴스당 최소 포트 수를 1,024개로 설정하면 게이트웨이는 최대 126개의 VM에 NAT 서비스를 제공할 수 있습니다.
⌊(2(32-29) - 4) NAT IP 주소 × (주소당 64,512개의 포트) / (VM당 1,024개의 포트 × 2)⌋ = 126개의 VM
NAT 서브넷 마스크가
/28
인 Private NAT 게이트웨이를 구성하고 VM 인스턴스당 최소 포트 수를 64개로 설정하면 게이트웨이에서 최대 6,048개의 VM에 NAT 서비스를 제공할 수 있습니다.⌊(2(32-28) - 4) NAT IP 주소 × (주소당 64,512개의 포트) / (VM당 64개의 포트 × 2)⌋ = 6,048개의 VM
엔드포인트 독립 매핑 충돌
다음 예시는 클라이언트 VM에 사용할 수 있는 무료 NAT 소스 IP 주소와 소스 포트 튜플이 충분히 많더라도 엔드포인트 독립 매핑이 클라이언트 VM에서 사용할 수 있는 동시 연결 수를 동일한 대상 3-튜플로 줄이는 방법을 보여줍니다.
Public NAT 게이트웨이가 서브넷의 기본 IP 주소 범위에 대해 NAT를 제공하도록 구성했다고 가정해 보겠습니다. 기본 내부 IP 주소가 해당 서브넷의 10.0.0.2
인 네트워크 인터페이스가 하나 있는 클라이언트 VM을 만들었습니다. 예시 VM에는 네트워크 인터페이스에 할당된 외부 IP 주소가 없습니다.
VM은 다음 특성을 가진 연결을 엽니다.
- 소스 내부 IP 주소 및 포트:
10.0.0.2:10001
- 대상 3-튜플: TCP를 사용하는
203.0.113.1:80
- Public NAT가 사용하는 NAT 소스 IP 주소 및 소스 포트 튜플:
192.0.2.10:30009
- 소스 내부 IP 주소 및 포트:
VM은 다음 특성으로 두 번째 연결을 엽니다.
- 소스 내부 IP 주소 및 포트:
10.0.0.2:10002
- 대상 3-튜플: TCP를 사용하는
203.0.113.2:80
- Public NAT는 이 연결에 동일한 NAT 소스 IP 주소와 소스 포트 튜플인
192.0.2.10:30009
를 사용할 수도 있습니다. 다른 클라이언트 IP 주소 및 임시 소스 포트에 동일한 NAT 소스 IP 주소와 소스 포트 튜플을 사용할 수 있습니다.
- 소스 내부 IP 주소 및 포트:
첫 번째 연결과 두 번째 연결이 모두 활성 상태이지만 Public NAT는 다음 특성을 사용하여 세 번째 TCP 연결을 열 수 없습니다.
- 첫 번째 연결과 동일한 소스 내부 IP 주소 및 포트:
10.0.0.2:10001
- 두 번째 연결과 동일한 대상 3-튜플:
203.0.113.2:80
(TCP 사용)
첫 번째 연결에서 설정된 엔드포인트 독립 매핑에서는
10.0.0.2:10001
의 모든 연결이 동일한 NAT 소스 IP 주소와 소스 포트 튜플192.0.2.10:30009
를 사용해야 합니다. 하지만192.0.2.10:30009
는203.0.113.2:80
에 대한 두 번째 TCP 연결에서 이미 사용되고 있기 때문에 이 세 번째 연결 시도는 엔드포인트 독립 충돌 오류와 함께 중단됩니다.- 첫 번째 연결과 동일한 소스 내부 IP 주소 및 포트:
모호성을 없애기 위해 다음 중 하나가 참이면 이 예시에서 후속 연결 시도가 성공합니다.
- 첫 번째 TCP 연결이 종료되었습니다. 연결이 종료되면
10.0.0.2:10001
및192.0.2.10:30009
간의 엔드포인트 독립 매핑이 삭제되므로 세 번째 연결을 다른 NAT 소스 IP 주소 및 소스 포트 튜플에 매핑하여 TCP를 통해203.0.113.2:80
과 통신할 수 있습니다. - 두 번째 TCP 연결이 종료되었습니다. 연결이 종료되면
10.0.0.2:10001
이 확보되어 NAT 소스 IP 주소 및 소스 포트192.0.2.10:30009
를 사용하여 TCP를 통해203.0.113.2:80
과 통신할 수 있습니다. - 세 번째 연결 시도가 다른 임시(내부) 소스 포트를 선택합니다. 이 예시에서 엔드포인트 독립 매핑은 내부 NAT 소스 IP 주소 및 소스 포트
10.0.0.2:10001
및10.0.0.2:10002
에 대해 다대일 매핑을 설정하여 TCP를 통해203.0.113.2:80
과 통신할 때192.0.2.10:30009
를 사용합니다. 세 번째 연결 시도가10001
및10002
모두와 다른 임시 소스 포트를 사용하는 경우 TCP를 사용하여203.0.113.2:80
과 통신하는 데 다른 NAT 소스 IP 주소와 소스 포트가 사용될 수 있습니다. - 엔드포인트 독립을 해제합니다. 해제하면
10.0.0.2:10001
의 새로운 연결이192.0.2.10:30009
를 사용할 필요가 없으므로 다른 NAT 소스 IP 주소 및 포트를 사용할 수 있습니다.
- 첫 번째 TCP 연결이 종료되었습니다. 연결이 종료되면
충돌을 방지하는 데 사용할 수 있는 기법은 엔드포인트 독립 충돌 감소를 참조하세요.
다음 단계
- Public NAT 게이트웨이 설정
- Private NAT 게이트웨이 설정
- Compute Engine 설정 예시 만들기
- GKE 설정 예시 만들기
- 일반적인 문제 해결하기