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 주소는 같은 네트워크 등급이어야 합니다. 같은 규칙의 일부로 서로 다른 등급의 IP 주소를 사용하려고 하면 Google Cloud 에서 구성을 거부합니다.

할당 방법 전환

Public NAT 게이트웨이를 자동 NAT IP 주소 할당에서 수동 NAT IP 주소 할당으로 전환할 수 있습니다. 그러나 NAT IP 주소를 보존할 수는 없습니다. 자동으로 할당된 NAT IP 주소는 고정이더라도 수동 NAT IP 주소 할당으로 이동할 수 없습니다. 예를 들어 자동으로 할당된 NAT IP 주소로 Public NAT 게이트웨이를 사용할 수 없고 나중에 수동으로 할당된 NAT IP 주소로 전환할 때 같은 주소를 사용할 수 없습니다.

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 네트워크에 있는 Public NAT 서브넷의 기본 IPv4 주소 범위에서 제공되는 리전 내부 IPv4 주소입니다. Private NAT IP 주소는 인터넷에서 라우팅될 수 없습니다. Private NAT 게이트웨이에서만 Private NAT 서브넷의 기본 IPv4 주소 범위의 IP 주소를 사용할 수 있습니다. 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 주소 범위에서는 IP 주소 4개를 사용할 수 없습니다.

포트

Cloud NAT 게이트웨이(Public NAT 및 Private NAT 모두)의 각 NAT IP 주소는 TCP 소스 포트 64,512개와 UDP 소스 포트 64,512개를 제공합니다. TCP 및 UDP 각각 포트를 IP 주소당 65,536개 지원합니다. Cloud NAT는 잘 알려진(권한이 있는) 포트(0~1,023)를 사용하지 않습니다.

Cloud NAT 게이트웨이가 VM에서 전송된 패킷에 소스 네트워크 주소 변환(SNAT)을 수행할 때 패킷의 NAT 소스 IP 주소와 소스 포트를 변경합니다.

Cloud NAT 게이트웨이를 만들 때 정적 포트 할당 또는 동적 포트 할당 사용 여부를 선택합니다. 게이트웨이를 만든 후에도 포트 할당 방법을 변경할 수 있습니다. Cloud NAT 게이트웨이의 포트 할당 방법 변경이 설정된 연결에 미치는 영향을 알아보려면 포트 할당 전환 방법을 참조하세요.

고정(예약) 리전 외부 IP 주소 여러 개를 Public NAT 게이트웨이에 수동으로 할당한 경우 게이트웨이를 사용하는 단일 VM에서 할당된 모든 NAT IP 주소에서 필요한 포트를 가져올 수 있으며 동시에 여러 NAT IP 주소에서도 가져올 수 있습니다.

정적 포트 할당

정적 포트 할당을 구성할 때는 VM 인스턴스당 최소 포트 수를 지정합니다. VM당 최소 포트 수를 지정하지 않으면Google Cloud 에서 기본값을 사용합니다.

정적 포트 할당은 기본적으로 Public NAT에 사용 설정됩니다. 반면에 Private NAT에서는 기본적으로 동적 포트 할당을 사용합니다.

모든 VM에 포트가 같은 수로 할당되므로 정적 포트 할당은 모든 VM의 이그레스 사용량이 비슷한 경우에 효율적입니다. 정적 포트 할당이 구성되면 각 VM에 할당된 포트 수는 고정되며 일부 VM에서 다른 VM보다 더 많은 포트를 사용하거나 VM에서 모든 포트를 사용하더라도 변경되지 않습니다. 이그레스 사용량이 변하는 경우에는 동적 포트 할당을 구성하는 것이 좋습니다.

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보다 큰 값으로 설정했고 새 구성에서 VM당 최대 포트 수로 1024를 지정하면 기존 연결이 해제됩니다. 첫 번째 조건이 우선 적용되기 때문입니다.

  • VM당 최대 포트 수를 1024보다 작은 값으로 설정합니다.

앞의 조건 중 하나가 충족되지 않는 한 동적 포트 할당으로 전환해도 기존 NAT 연결이 해제되지 않습니다.

동적 포트 할당을 사용 중지하고 정적 포트 할당으로 전환하면 모든 활성 NAT 연결이 중단되고 해제됩니다.

포트 예약 절차

Cloud NAT는 다음 절차를 수행하여 Cloud NAT(Public NAT 및 Private NAT 모두) 게이트웨이에서 제공하는 VM마다 NAT 소스 IP 주소와 소스 포트 튜플을 프로비저닝합니다.

  1. 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를 수행합니다.

  2. 필요한 경우 Cloud NAT가 VM 인스턴스당 최소 포트를 조정합니다. 정적 포트 할당이 구성되었고 게이트웨이에서 주소가 2개 이상 있는(/32보다 작은 넷마스크) 별칭 IP 범위에서 NAT를 수행하는 경우 Cloud NAT는 VM당 최소 포트를 이러한 두 값의 최댓값으로 조정합니다.

    • 지정한 VM 인스턴스당 최소 포트 수

    • 숫자 1,024

    동적 포트 할당이 구성된 경우를 포함한 다른 모든 상황에서 Cloud NAT 게이트웨이는 지정된 VM 인스턴스당 최소 포트 수를 입력으로 사용하여 다음 단계를 진행합니다. VM 인스턴스당 최소 포트 수를 지정하지 않으면 기본값(정적 포트 할당의 경우 64, 동적 포트 할당의 경우 32)이 사용됩니다.

  3. Cloud NAT는 VM마다 NAT 소스 IP 주소와 소스 포트 튜플을 예약합니다. Cloud NAT 게이트웨이는 이전 단계에서 지정되거나 조정된 VM 인스턴스당 최소 포트 수를 사용하여 VM에 할당할 NAT 소스 IP 주소와 소스 포트 튜플 수를 계산합니다.

    Public NAT의 경우 Google Cloud 는 NAT 소스 IP 주소와 소스 포트 튜플 수가 개발자가 지정한 VM 인스턴스당 최소 포트 수보다 크거나 같도록 2의 거듭제곱을 사용하여 NAT 소스 IP 주소와 소스 포트 튜플을 할당합니다.

    Private NAT의 경우 Google Cloud 는 안정성을 위해 필요한 VM당 최소 포트 수의 두 배를 할당합니다. Private NAT에서 IP 주소와 포트를 할당하는 서브넷의 크기가 적절한지 확인합니다.

    • Cloud NAT 게이트웨이에서 NAT IP 주소를 2개 이상 사용하는 경우 NAT 소스 IP 주소와 소스 포트 튜플이 NAT IP 주소 2개 이상에 걸쳐 있을 수 있습니다. 단일 NAT IP 주소에는 VM에 필요한 NAT 소스 IP 주소와 소스 포트 튜플 수를 수용할 수 있는 소스 포트가 부족할 수 있습니다.

    • Cloud NAT 게이트웨이는 각 VM에 소스 IP 주소와 소스 포트 튜플을 할당합니다.

      • 정적 포트 할당을 구성한 경우 소스 IP 주소와 소스 포트 튜플 수는 고정됩니다. 각 VM은 트래픽 버스트가 발생하더라도 할당된 소스 IP 주소와 소스 포트 튜플 수 만큼 사용할 수 있습니다.

      • 동적 포트 할당을 구성한 경우 소스 포트 IP 주소와 소스 포트 튜플 수를 수요에 맞게 변경할 수 있습니다. VM에서 현재 포트 할당을 거의 소진하면 Cloud NAT는 지정된 VM 인스턴스당 최대 포트 수까지 추가 포트를 할당합니다. 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가 내부 IP 주소 2개 이상과 클라이언트 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를 수행하는 방법을 보여줍니다.

포트 예약

다음 예시에서는 포트 예약 절차 적용을 보여줍니다.

Public NAT 게이트웨이에서 서브넷의 기본 IP 주소 범위에 NAT를 제공하도록 구성하고 해당 서브넷을 사용하는 VM에 서브넷 기본 IP 주소 범위의 별칭 IP 범위가 없다고 가정해 보겠습니다. 모든 나눗셈 연산의 결과 가장 가까운 정수로 내림합니다. ⌊⌋는 플로어(가장 큰 정수) 함수이며 이는 나눗셈의 분수 결과를 삭제합니다.

  • 수동 할당을 사용하여 단일 NAT IP 주소로 Public NAT 게이트웨이를 구성하고 VM 인스턴스당 최소 포트 수를 64로 설정한 경우 게이트웨이는 VM 최대 1,008개에 NAT 서비스를 제공할 수 있습니다.

    ⌊(NAT IP 주소 1개) × (주소당 포트 64,512개) / (VM당 포트 64개)⌋ = VM 1,008개

  • 1,008개가 넘는 VM을 지원해야 하는 경우에는 Cloud NAT 게이트웨이에 두 번째 NAT IP 주소를 할당하면 됩니다. NAT IP 주소 2개를 사용하여 VM당 최소 포트 수를 64로 유지하면 VM 2,016개를 지원할 수 있습니다.

    ⌊(NAT IP 주소 2개) × (주소당 포트 64,512개) / (VM당 포트 64개)⌋ = VM 2,016개

  • VM당 최소 포트 수를 4,096으로 설정하면 각 NAT IP 주소는 VM 15개를 지원할 수 있습니다. 이 계산은 가장 가까운 정수로 내립니다.

    ⌊(NAT IP 주소 1개) × (주소당 포트 64,512개) / (VM당 포트 4,096개)⌋ = VM 15개

Private NAT 게이트웨이에서 서브넷의 모든 IP 주소에 NAT를 제공하도록 구성한다고 가정해 보겠습니다.

  • 만들 수 있는 최소 서브넷 크기는 /29 서브넷 마스크인 IPv4 주소 8개입니다. NAT 서브넷 최소 크기로 Private NAT 게이트웨이를 구성하고 VM 인스턴스당 최소 포트 수를 64로 설정하면 게이트웨이에서 VM 최대 2,016개에 NAT 서비스를 제공할 수 있습니다.

    ⌊(2(32-29) - 4) NAT IP 주소 × (주소당 포트 64,512개) / (VM당 포트 64개 × 2)⌋ = VM 2,016개

    이전 예시에서 VM 인스턴스당 최소 포트 수를 1,024로 설정하면 게이트웨이에서 VM 최대 126개에 NAT 서비스를 제공할 수 있습니다.

    ⌊(2(32-29) - 4) NAT IP 주소 × (주소당 포트 64,512개) / (VM당 포트 1,024개 × 2)⌋ = VM 126개

  • NAT 서브넷 마스크가 /28인 Private NAT 게이트웨이를 구성하고 VM 인스턴스당 최소 포트 수를 64로 설정하면 게이트웨이에서 VM 최대 6,048개에 NAT 서비스를 제공할 수 있습니다.

    ⌊(2(32-28) - 4) NAT IP 주소 × (주소당 포트 64,512개) / (VM당 포트 64개 × 2)⌋ = VM 6,048개

엔드포인트 독립 매핑 충돌

다음 예시에서는 클라이언트 VM에 사용할 수 있는 무료 NAT 소스 IP 주소와 소스 포트 튜플이 충분하게 있더라도 엔드포인트 독립 매핑이 클라이언트 VM에서 사용할 수 있는 동시 연결 수를 같은 대상 3-튜플로 줄이는 방법을 보여줍니다.

Public NAT 게이트웨이에서 서브넷 기본 IP 주소 범위에 NAT를 제공하도록 구성했다고 가정해 보겠습니다. 기본 내부 IP 주소가 해당 서브넷의 10.0.0.2인 네트워크 인터페이스가 하나 있는 클라이언트 VM을 만들었습니다. 예시 VM에는 네트워크 인터페이스에 할당된 외부 IP 주소가 없습니다.

  1. VM은 다음 특성이 있는 연결을 엽니다.

    • 소스 내부 IP 주소 및 포트: 10.0.0.2:10001
    • 대상 3-튜플: TCP를 사용하는 203.0.113.1:80
    • Public NAT에서 사용하는NAT 소스 IP 주소와 소스 포트 튜플: 192.0.2.10:30009
  2. 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 주소와 소스 포트 튜플을 사용할 수 있습니다.
  3. 첫 번째 연결과 두 번째 연결 모두 활성 상태이지만 Public NAT는 다음 특성이 있는 세 번째 TCP 연결을 열 수 없습니다.

    • 첫 번째 연결과 동일한 소스 내부 IP 주소 및 포트: 10.0.0.2:10001
    • 두 번째 연결과 동일한 대상 3-튜플: TCP를 사용하는 203.0.113.2:80

    첫 번째 연결에서 설정된 엔드포인트 독립 매핑에서는 10.0.0.2:10001의 모든 연결이 같은 NAT 소스 IP 주소와 소스 포트 튜플인 192.0.2.10:30009를 사용해야 하지만 192.0.2.10:30009203.0.113.2:80에 대한 두 번째 TCP 연결에서 이미 사용되고 있으므로 이 세 번째 연결 시도는 엔드포인트 독립 충돌 오류가 표시되면서 중단됩니다.

  4. 모호성을 없애기 위해 다음 중 하나가 해당하는 한 이 예시에서 후속 연결 시도가 성공합니다.

    • 첫 번째 TCP 연결이 종료되었습니다. 연결이 종료되면 10.0.0.2:10001192.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:1000110.0.0.2:10002에 다대일 매핑을 설정하여 TCP를 통해 203.0.113.2:80과 통신할 때 192.0.2.10:30009를 사용합니다. 세 번째 연결 시도에서 1000110002 모두와 다른 임시 소스 포트를 사용하는 경우 TCP를 사용하여 203.0.113.2:80과 통신하는 데 다른 NAT 소스 IP 주소와 소스 포트가 사용될 수 있습니다.
    • 엔드포인트 독립을 해제합니다. 해제하면 10.0.0.2:10001의 새로운 연결에서 192.0.2.10:30009를 사용하지 않아도 되므로 다른 NAT 소스 IP 주소와 포트를 사용할 수 있습니다.

충돌을 방지하는 데 사용할 수 있는 기법은 엔드포인트 독립 충돌 감소를 참조하세요.

다음 단계