Public NAT

Public NAT를 사용하면 Google Cloud 가상 머신(VM) 인스턴스가 Public NAT를 사용하여 인터넷에 대한 아웃바운드 연결을 생성하는 각 VM에 공유 외부 IPv4 주소 및 소스 포트 세트를 할당하여 인터넷과 통신할 수 있습니다.

Public NAT를 사용하면 외부 IPv4 주소가 없는 VM 인스턴스가 인터넷의 IPv4 대상과 통신할 수 있습니다. 또한 Public NAT를 사용하면 외부 또는 내부 IPv6 주소가 있는 VM 인스턴스가 인터넷의 IPv4 대상에 연결할 수 있습니다(프리뷰).

사양

Public NAT는 다음에 대한 네트워크 주소 변환(NAT)을 지원합니다.

  • IPv4에서 IPv4로 또는 NAT44 자세한 내용은 Public NAT의 NAT44를 참조하세요.

  • IPv6에서 IPv4로 또는 NAT64(프리뷰) Public NAT는 Compute Engine VM 인스턴스에 대해 NAT64를 지원합니다. GKE 노드, 서버리스 트래픽 및 리전별 인터넷 NEG의 경우 Public NAT는 IPv4 트래픽만 변환합니다. 자세한 내용은 Public NAT의 NAT64를 참조하세요.

일반 사양

IPv4 소스 패킷의 경우 다음에서 전송되는 패킷에 대해 NAT를 제공하도록 Public NAT를 구성할 수 있습니다.

  • 네트워크 인터페이스에 할당된 외부 IP 주소가 없는 경우 Compute Engine VM 네트워크 인터페이스의 내부 IP 주소. 네트워크 인터페이스에 할당된 외부 IP 주소가 있는 경우 Google Cloud 에서는 네트워크 인터페이스가 Google Cloud 인터넷 액세스 요구사항을 충족하므로 인터페이스의 기본 내부 IP 주소와 일치하는 소스를 가진 패킷에 대해 일대일 NAT를 자동으로 수행합니다. 인터페이스에 외부 IP 주소가 있으면 항상 우선 적용되며, Public NAT를 사용하지 않고 항상 일대일 NAT를 수행합니다.

  • VM의 네트워크 인터페이스에 할당된 별칭 IP 범위. 네트워크 인터페이스에 할당된 외부 IP 주소가 있더라도 인터페이스의 별칭 IP 범위에 속하는 소스의 패킷에 대해 NAT를 제공하도록 Public NAT를 위한 Cloud NAT 게이트웨이를 구성할 수 있습니다. 인터페이스에서 외부 IP 주소는 별칭 IP 주소로 일대일 NAT를 수행하지 않습니다.

  • Google Kubernetes Engine(GKE) 클러스터의 경우 특정 환경에서 클러스터에 외부 IP 주소가 포함되더라도 Public NAT가 서비스를 제공할 수 있습니다. 자세한 내용은 GKE 상호작용을 참조하세요.

IPv6 소스 패킷의 경우 VM의 IPv6 전용 네트워크 인터페이스의 외부 또는 내부 /96 주소 범위에서 전송된 패킷에 대해 NAT를 제공하도록 Public NAT를 구성할 수 있습니다 (프리뷰).

Public NAT에서는 아웃바운드 연결과 해당 연결에 대한 인바운드 응답을 허용합니다. Public NAT용 각 Cloud NAT 게이트웨이는 이그레스에 소스 NAT를 수행하고 설정된 응답 패킷에 대해 대상 NAT를 수행합니다.

Public NAT는 방화벽 규칙에서 허용되었더라도 인터넷에서 수신되는 요청하지 않은 인바운드 요청을 허용하지 않습니다. 자세한 내용은 관련 RFC를 참조하세요.

Public NAT용 각 Cloud NAT 게이트웨이는 단일 VPC 네트워크, 리전, Cloud Router와 연결됩니다. Cloud NAT 게이트웨이 및 Cloud Router는 제어 영역을 제공합니다. 이는 데이터 영역에 포함되지 않으므로 패킷이 Cloud NAT 게이트웨이 또는 Cloud Router를 통과하지 않습니다.

경로 및 방화벽 규칙

Public NAT는 다음 홉이 기본 인터넷 게이트웨이인 경로에 의존합니다. 기본 경로는 일반적으로 이 요구사항을 충족합니다. 자세한 내용은 경로 상호작용을 참조하세요.

Public NAT에는 Cloud NGFW 규칙 요구사항이 없습니다. 방화벽 규칙은 Public NAT용 Cloud NAT 게이트웨이가 아닌 Compute Engine VM의 네트워크 인터페이스에 직접 적용됩니다.

NAT IP 주소에 대한 연결을 허용하는 특별한 방화벽 규칙을 만들 필요가 없습니다. Cloud NAT 게이트웨이가 VM의 네트워크 인터페이스로 NAT를 제공할 때 관련 이그레스 방화벽 규칙은 NAT 전에 네트워크 인터페이스에 대한 패킷으로 평가됩니다. 인그레스 방화벽 규칙은 패킷이 NAT에서 처리된 다음 평가됩니다.

서브넷 IP 주소 범위 관련성

Public NAT용 Cloud NAT 게이트웨이를 구성하여 IPv4 서브넷 주소 범위, IPv6 서브넷 주소 범위 또는 둘 다에 대해 NAT를 제공할 수 있습니다. IPv4 서브넷 주소 범위의 경우 게이트웨이는 VM 네트워크 인터페이스의 기본 내부 IP 주소, 별칭 IP 범위 또는 둘 다에서 트래픽을 변환합니다. IPv6 서브넷 주소 범위의 경우 게이트웨이는 네트워크 인터페이스의 외부 또는 내부 /96 IPv6 주소 범위에서 트래픽을 변환합니다(프리뷰).

IPv4 서브넷 주소 범위의 경우 다음에 대해 NAT를 제공하도록 Cloud NAT 게이트웨이를 구성할 수 있습니다.

  • 리전 내 모든 서브넷의 기본 및 보조 IPv4 주소 범위. 단일 Cloud NAT 게이트웨이는 네트워크 인터페이스가 해당 리전의 IPv4 서브넷을 사용하는 적격한 VM의 기본 내부 IP 주소 및 모든 별칭 IP 범위로 NAT를 제공합니다.

  • 리전에 있는 모든 서브넷의 기본 IPv4 주소 범위. 단일 Cloud NAT 게이트웨이는 네트워크 인터페이스가 해당 리전의 IPv4 서브넷을 사용하는 적격한 VM의 서브넷 기본 IP 주소 범위로부터 기본 내부 IP 주소 및 별칭 IP 범위로 NAT를 제공합니다. 리전에서 Public NAT용 추가 Cloud NAT 게이트웨이를 만들어 적격한 VM의 서브넷 보조 IP 주소 범위로부터 별칭 IP 범위에 대한 NAT를 제공할 수 있습니다.

  • 커스텀 서브넷 목록. 단일 Cloud NAT 게이트웨이는 네트워크 인터페이스가 지정된 IPv4 서브넷 목록의 서브넷을 사용하는 적격한 VM의 기본 내부 IP 주소 및 모든 별칭 IP 범위에 대해 NAT를 제공합니다.

  • 커스텀 서브넷 IPv4 주소 범위. Public NAT 할당량 및 한도에 따라 Public NAT용 Cloud NAT 게이트웨이를 필요한 만큼 여러 개 만들 수 있습니다. 각 게이트웨이에서 제공할 서브넷 기본 또는 보조 IP 주소 범위를 선택합니다.

IPv6 서브넷 주소 범위의 경우 다음에 대해 NAT를 제공하도록 Cloud NAT 게이트웨이를 구성할 수 있습니다(프리뷰).

  • 리전 내 모든 서브넷의 외부 및 내부 IPv6 주소 범위. 단일 Cloud NAT 게이트웨이는 리전의 모든 외부 및 내부 IPv6 주소 범위에 대해 NAT를 제공합니다.
  • 커스텀 서브넷 목록. 단일 Cloud NAT 게이트웨이는 지정된 서브넷의 외부 및 내부 IPv6 주소 범위에 대해 NAT를 제공합니다.

여러 Cloud NAT 게이트웨이

다음 조건 중 하나가 참이면 VPC 네트워크의 동일한 리전에 Public NAT용 Cloud NAT 게이트웨이가 여러 개 있을 수 있습니다.

  • 각 게이트웨이는 서로 다른 서브넷에 구성됩니다.

  • 단일 서브넷 내에서 각 게이트웨이는 서로 다른 IP 주소 범위에 구성됩니다. 커스텀 Cloud NAT 매핑을 사용하여 Public NAT용 Cloud NAT 게이트웨이를 특정 서브넷 또는 IP 주소 범위에 매핑할 수 있습니다.

매핑된 NAT 게이트웨이가 겹치지 않는 한 Public NAT 할당량 및 한도에 따라 필요한 만큼 Public NAT용 Cloud NAT 게이트웨이를 만들 수 있습니다. 자세한 내용은 Cloud NAT 게이트웨이 제한사항을 참조하세요.

대역폭

Public NAT용 Cloud NAT 게이트웨이를 사용해도 VM이 사용할 수 있는 아웃바운드 또는 인바운드 대역폭 양이 변경되지 않습니다. 머신 유형별로 달라지는 대역폭 사양은 Compute Engine 문서의 네트워크 대역폭을 참조하세요.

여러 네트워크 인터페이스가 있는 VM

여러 네트워크 인터페이스가 포함된 VM을 구성할 때 각 인터페이스는 개별 VPC 네트워크에 있어야 합니다. 따라서 다음 사항이 참입니다.

  • Public NAT용 Cloud NAT 게이트웨이는 VM의 단일 네트워크 인터페이스에만 적용될 수 있습니다. Public NAT용 개별 Cloud NAT 게이트웨이는 각 게이트웨이가 개별 인터페이스에 적용되는 동일 VM에 NAT를 제공할 수 있습니다.
  • 여러 네트워크 인터페이스 VM의 인터페이스 중 하나가 외부 IPv4 주소를 가져 해당 인터페이스가 Public NAT에 적격하지 않게 되어도 또 다른 한 인터페이스에 외부 IPv4 주소가 없고 적절한 서브넷 IP 주소 범위에 적용되도록 Public NAT용 Cloud NAT 게이트웨이를 구성했다면 이 인터페이스가 NAT에 적격할 수 있습니다. IPv6의 경우 외부 및 내부 IPv6 주소가 모두 지원됩니다 (프리뷰).

NAT IP 주소 및 포트

Public NAT용 Cloud NAT 게이트웨이를 만들 때는 게이트웨이가 리전 외부 IP 주소를 자동으로 할당하도록 선택할 수 있습니다. 또는 게이트웨이에 고정된 개수의 리전 외부 IP 주소를 수동으로 할당할 수 있습니다.

자동 NAT IP 주소 할당이 포함된 Public NAT용 Cloud NAT 게이트웨이의 경우 다음을 고려하세요.

  • Cloud NAT 게이트웨이가 IP 주소를 할당할 네트워크 서비스 등급(프리미엄 등급 또는 표준 등급)을 선택할 수 있습니다.
  • 자동으로 NAT IP 주소가 할당된 Public NAT용 Cloud NAT 게이트웨이의 등급을 변경하면 Google Cloud 에서 해당 게이트웨이에 할당된 모든 IP 주소를 해제하고 모든 포트 할당을 사용 중지합니다.

    새로 선택한 등급의 새 IP 주소 집합이 자동으로 할당되고 모든 엔드포인트에 새 포트 할당이 제공됩니다.

특정 Public NAT용 Cloud NAT 게이트웨이의 경우 특정 조건에 따라 프리미엄 등급이나 표준 등급 또는 둘 다에서 IP 주소를 수동으로 할당할 수도 있습니다.

NAT IP 주소 할당에 대한 자세한 내용은 Public NAT IP 주소를 참조하세요.

Public NAT용 각 Cloud NAT 게이트웨이가 NAT 서비스를 제공할 VM마다 예약하는 소스 포트 수를 구성할 수 있습니다. 각 VM에 대해 동일 개수의 포트가 예약되는 정적 포트 할당 또는 지정한 최소 및 최대 한도 사이에 예약된 포트 수가 변동될 수 있는 동적 포트 할당을 구성할 수 있습니다.

NAT가 제공할 VM은 게이트웨이가 제공하도록 구성된 서브넷 IP 주소 범위에 의해 결정됩니다.

포트에 관한 자세한 내용은 포트를 참고하세요.

관련 RFC

Public NAT는 RFC 5128에서 정의된 엔드포인트 독립 매핑엔드포인트 종속 필터링을 지원합니다. 엔드포인트 독립 매핑을 사용 설정 또는 사용 중지할 수 있습니다. 기본적으로 엔드포인트 독립 매핑은 NAT 게이트웨이를 만들 때 사용 중지됩니다.

엔드포인트 독립 매핑은 VM이 지정된 내부 IP 주소 및 포트 쌍에서 여러 다른 대상으로 패킷을 전송하는 경우, 게이트웨이가 패킷의 대상에 관계없이 이러한 모든 패킷을 동일한 NAT IP 주소 및 포트 쌍으로 매핑하는 것을 의미합니다. 엔드포인트 독립 매핑에 대한 자세한 내용 및 관련 영향은 동시 포트 재사용 및 엔드포인트 독립 매핑을 참조하세요.

엔드포인트 종속 필터링은 인터넷의 응답 패킷이 VM에서 이미 패킷을 전송한 IP 주소 및 포트에서 온 경우에만 입력할 수 있다는 것을 의미합니다. 필터링은 엔드포인트 매핑 유형에 관계없이 엔드포인트에 종속됩니다. 이 기능은 항상 사용 설정되어 있으며 사용자가 구성할 수 없습니다.

포트와 연결 간의 관계에 대한 자세한 내용은 포트 및 연결NAT 흐름 예시를 참조하세요.

Public NAT는 RFC 3489에 정의된 포트 제한 Cone NAT입니다.

NAT 순회

엔드포인트 독립 매핑이 사용 설정된 경우 고유 STUN 또는 TURN 서버를 배포하면 Public NAT는 STUN 및 TURN과 같은 일반적인 NAT 순회 프로토콜과 호환됩니다.

  • STUN(Session Traversal Utilities for NAT, RFC 5389)은 통신 채널이 설정된 다음 NAT 뒤의 VM 간 직접 통신을 허용합니다.
  • TURN(Traversal Using Relays around NAT, RFC 5766)은 서버에 외부 IP 주소가 포함된 타사 서버를 통해 NAT뒤의 VM 간 통신을 허용합니다. 각 VM이 서버의 외부 IP 주소에 연결되고, 해당 서버가 두 VM 사이의 통신을 릴레이합니다. TURN이 더 강력하지만 대역폭과 리소스 소비량이 더 많습니다.

NAT 제한 시간

Public NAT는 프로토콜 연결에 대한 제한 시간을 설정합니다. 이러한 제한 시간 및 기본값에 관한 자세한 내용은 NAT 제한 시간을 참고하세요.

Public NAT의 NAT44

다음 다이어그램은 IPv4 트래픽에 대한 기본 Public NAT 구성을 보여줍니다.

Public NAT IPv4 변환 예시
Public NAT 변환 예시(확대하려면 클릭)

이 예에서는 다음과 같이 정의됩니다.

  • nat-gw-us-east 게이트웨이가 us-east1 리전에서 subnet-1의 기본 IP 주소 범위에 적용되도록 구성되었습니다. 네트워크 인터페이스에 외부 IP 주소가 없는 VM은 기본 내부 IP 주소 또는 subnet-1,10.240.0.0/16의 기본 IP 주소 범위에서 별칭 IP 범위를 사용하여 트래픽을 인터넷에 전송할 수 있습니다.

  • 네트워크 인터페이스에 외부 IP 주소가 없고 기본 내부 IP 주소가 subnet-2에 있는 VM은 해당 서브넷의 IP 주소 범위에 적용되는 Cloud NAT 게이트웨이가 없기 때문에 인터넷에 액세스할 수 없습니다.

  • nat-gw-eu 게이트웨이가 europe-west1 리전에서 subnet-3의 기본 IP 주소 범위에 적용되도록 구성되었습니다. 네트워크 인터페이스에 외부 IP 주소가 없는 VM은 기본 내부 IP 주소 또는 subnet-3,192.168.1.0/24의 기본 IP 주소 범위에서 별칭 IP 범위를 사용하여 트래픽을 인터넷에 전송할 수 있습니다.

워크플로 예시

이전 다이어그램에서 외부 IP 주소가 없는 기본 내부 IP 주소가 10.240.0.4인 VM은 외부 IP 주소 203.0.113.1에서 업데이트를 다운로드해야 합니다. 다이어그램에서 nat-gw-us-east 게이트웨이는 다음과 같이 구성됩니다.

  • 인스턴스당 최소 포트 수: 64
  • 수동으로 할당한 두 NAT IP 주소: 192.0.2.50192.0.2.60
  • subnet-1의 기본 IP 주소 범위에 NAT가 제공됨

Public NAT는 네트워크의 각 VM에 다음 NAT 소스 IP 주소와 소스 포트 튜플을 예약하기 위해 포트 예약 절차를 따릅니다. 예를 들어 Public NAT용 Cloud NAT 게이트웨이는 내부 IP 주소 10.240.0.4로 VM에 64개의 소스 포트를 예약합니다. NAT IP 주소 192.0.2.50은 64개의 예약되지 않은 포트가 있으므로 게이트웨이는 VM에 대한 다음 64개의 NAT 소스 IP 주소 및 소스 포트 튜플 집합을 예약합니다.

  • 192.0.2.50:34000 에서 192.0.2.50:34063

VM이 TCP 프로토콜을 사용하여 대상 포트 80의 업데이트 서버 203.0.113.1에 패킷을 전송하면 다음과 같은 결과가 발생합니다.

  • VM이 다음 속성으로 요청 패킷을 전송합니다.

    • 소스 IP 주소: 10.240.0.4, VM의 기본 내부 IP 주소
    • 소스 포트: 24000, VM의 운영 체제에서 선택한 임시 소스 포트
    • 대상 주소: 203.0.113.1, 업데이트 서버의 외부 IP 주소
    • 대상 포트: 80, 업데이트 서버에 대한 HTTP 트래픽에 대한 대상 포트
    • 프로토콜: TCP
  • nat-gw-us-east 게이트웨이는 이그레스에 소스 네트워크 주소 변환(SNAT)을 수행하여 요청 패킷의 NAT 소스 IP 주소와 소스 포트를 재작성합니다. 수정한 패킷은 Virtual Private Cloud(VPC) 네트워크에 다음 홉이 기본 인터넷 게이트웨이인 203.0.113.1 대상에 대한 경로가 있는 경우 인터넷으로 전송됩니다. 기본 경로는 일반적으로 이 요구사항을 충족합니다.

    • NAT 소스 IP 주소: 192.0.2.50, VM의 예약된 NAT 소스 IP 주소 및 소스 포트 튜플 중 하나
    • 소스 포트: 34022, VM의 예약된 소스 포트 튜플 중 하나에서 가져온 사용되지 않은 소스 포트
    • 대상 주소: 203.0.113.1, 변경되지 않음
    • 대상 포트: 80, 변경되지 않음
    • 프로토콜: TCP, 변경되지 않음
  • 업데이트 서버가 응답 패킷을 전송하면 해당 패킷은 다음 속성과 함께 nat-gw-us-east 게이트웨이에 도착합니다.

    • 소스 IP 주소: 203.0.113.1, 업데이트 서버의 외부 IP 주소
    • 소스 포트: 80, 업데이트 서버의 HTTP 응답
    • 대상 주소: 192.0.2.50, 요청 패킷의 원래 NAT 소스 IP 주소와 일치
    • 대상 포트: 34022, 요청 패킷의 소스 포트와 일치
    • 프로토콜: TCP, 변경되지 않음
  • nat-gw-us-east 게이트웨이는 응답 패킷에 대상 네트워크 주소 변환(DNAT)을 수행하여 패킷이 VM에 전달되도록 응답 패킷의 대상 주소와 대상 포트를 재작성합니다.

    • 소스 IP 주소: 203.0.113.1, 변경되지 않음
    • 소스 포트: 80, 변경되지 않음
    • 대상 주소: 10.240.0.4, VM의 기본 내부 IP 주소
    • 대상 포트: 24000, 요청 패킷의 기존 임시 소스 포트와 일치
    • 프로토콜: TCP, 변경되지 않음

Public NAT의 NAT64

NAT64를 사용하면 IPv6 전용 VM 인스턴스가 인터넷의 IPv4 대상과 통신할 수 있습니다. Public NAT는 외부 및 내부 IPv6 주소 모두에 NAT64를 지원합니다. NAT64를 구성하려면 DNS64도 구성해야 합니다.

Cloud DNS에서 DNS64를 구성하면 다음 동작이 사용 설정됩니다.

  • IPv6 전용 VM 인스턴스가 인터넷에 요청하면 Cloud DNS는 요청 대상에 대해 AAAA 레코드가 있는지 확인합니다. 레코드가 있으면 IPv6 주소가 반환되고 IPv6 전용 VM 인스턴스가 IPv6 대상에 연결할 수 있습니다.
  • DNS64가 사용 설정되어 있고 AAAA 레코드가 없는 경우 DNS64 서버는 대신 A 레코드를 조회합니다. A 레코드가 발견되면 DNS64 서버는 A 레코드에서 가져온 IPv4 주소 앞에 64:ff9b::/96 프리픽스를 추가하여 IPv6 주소를 합성합니다.

    예를 들어 대상 IPv4 주소가 203.0.113.1인 경우 서버는 64:ff9b::cb00:7101을 반환하며 여기서 cb00:7101203.0.113.1의 16진수 표현입니다.

요청이 NAT64가 사용 설정된 Cloud NAT 게이트웨이에 도달하면 게이트웨이는 다음을 실행하여 SNAT를 실행합니다.

  • 소스 IPv6 주소 및 포트를 게이트웨이에 할당된 외부 IPv4 주소 및 포트 중 하나로 바꿉니다.
  • 합성된 대상 IPv6 주소(예: 64:ff9b::cb00:7101)를 합성된 주소의 마지막 32비트를 사용하여 원래 IPv4 주소로 변환합니다.

    Cloud NAT 게이트웨이는 또한 합성된 IPv6 주소의 마지막 32비트를 사용하여 요청 패킷이 인터넷으로 라우팅되는 방식을 결정합니다. IPv6 전용 VM 인스턴스가 64:ff9b::/96 프리픽스로 시작하는 대상에 패킷을 전송하면 게이트웨이는 VPC 네트워크의 IPv4 라우팅 테이블을 대상 IPv4 주소에 적용합니다. IPv4 라우팅 테이블에 다음 홉이 기본 인터넷 게이트웨이인 대상 IPv4 주소의 경로가 있는 경우 수정된 패킷이 인터넷으로 전송됩니다.

응답을 수신하면 Cloud NAT 게이트웨이는 다음을 실행하여 DNAT를 실행합니다.

  • 응답 패킷의 소스 IP 주소에 64:ff9b::/96 프리픽스를 추가합니다.
  • 패킷이 VM에 전달되도록 응답 패킷의 대상 주소와 대상 포트를 재작성합니다.

다음 단계