Hybrid NAT

Private NAT의 한 유형인 Hybrid NAT를 사용하면 가상 프라이빗 클라우드(VPC) 네트워크와 온프레미스 네트워크 또는 기타 클라우드 제공업체 네트워크 간에 네트워크 주소 변환(NAT)을 수행할 수 있습니다. Google Cloud 외 네트워크는 Cloud Interconnect 또는 Cloud VPN 같은 Google Cloud의 네트워크 연결 제품을 사용하여 VPC 네트워크에 연결되어야 합니다.

사양

Hybrid NAT에는 일반 Private NAT 사양 외에도 다음 사양이 포함됩니다.

  • Hybrid NAT를 사용하면 VPC 네트워크가 네트워크의 서브넷 IP 주소 범위가 겹치더라도 온프레미스 네트워크 또는 다른 클라우드 제공업체 네트워크와 통신할 수 있습니다. type=PRIVATE의 NAT 구성을 사용하면 VPC 네트워크의 리소스(겹치는 서브넷과 겹치지 않는 서브넷에 있는 리소스 모두)가 Google Cloud 외 네트워크의 겹치지 않는 서브넷에 있는 리소스에만 연결할 수 있습니다.
  • Hybrid NAT를 사용 설정하려면 VPC 네트워크가 이를 학습하고 사용할 수 있도록 Google Cloud 외 네트워크에서 동적 경로를 공지해야 합니다. Cloud Router는 동적 라우팅이 구성된 Cloud Interconnect, HA VPN, 기본 VPN과 같은 Google Cloud의 네트워크 연결 제품에서 이러한 동적 경로를 학습합니다. 이러한 동적 경로의 목적지는 VPC 네트워크 외부의 IP 주소 범위입니다.

    마찬가지로 반환 트래픽에 대해 VPC 네트워크가 Cloud Router를 사용하여 Private NAT 서브넷 경로를 공지해야 하며 이 서브넷 경로가 연결된 네트워크의 기존 서브넷과 겹치면 안 됩니다.

  • Hybrid NAT는 VPC 네트워크에서 온프레미스 네트워크 또는 다른 클라우드 제공업체 네트워크로의 트래픽에 NAT를 수행합니다. 네트워크는 Cloud Interconnect 또는 Cloud VPN으로 연결되어야 합니다.

  • Hybrid NAT는 동적 라우팅이 사용 설정된 경우에만 기존의 기본 VPN 터널을 지원합니다.

  • 일치 표현식 nexthop.is_hybrid를 사용해서 커스텀 NAT 규칙을 만들어야 합니다. NAT 규칙은 VPC 네트워크의 리소스가 다른 네트워크와 통신하는 데 사용할 수 있는 PRIVATE_NAT 용도의 서브넷에서 NAT IP 주소 범위를 지정합니다.

  • Hybrid NAT를 구성하는 Cloud Router는 VPC 네트워크와 동일한 리전에 있어야 합니다.

  • Hybrid NAT를 구성하는 Cloud Router는 다른 NAT 구성을 포함할 수 없습니다.

기본 Hybrid NAT 구성과 워크플로

다음 다이어그램은 기본 Hybrid NAT 구성을 보여줍니다.

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

이 예시에서 Hybrid NAT는 다음과 같이 설정됩니다.

  • us-east1 리전에서 subnet-a의 모든 IP 주소 범위에 적용되도록 pvt-nat-gw 게이트웨이가 vpc-a에 구성되었습니다.
  • Cloud Router와 온프레미스 또는 다른 클라우드 제공업체 라우터는 다음 서브넷 경로를 교환합니다.
    • Cloud Router는 10.1.2.0/29를 외부 라우터에 공지합니다.
    • 외부 라우터가 192.168.2.0/24를 Cloud Router에 공지합니다.
  • vpc-asubnet-a가 Google Cloud 외 네트워크의 다른 서브넷과 겹치더라도 vpc-asubnet-a에 있는 가상 머신(VM) 인스턴스는 pvt-nat-gw의 NAT IP 주소 범위를 사용하여 온프레미스 네트워크 또는 다른 클라우드 제공업체 네트워크의 subnet-b에 있는 VM으로 트래픽을 전송할 수 있습니다.

Hybrid NAT 워크플로 예시

이전 다이어그램에서 vpc-asubnet-a에 있는 내부 IP 주소 192.168.1.2가 있는 vm-a는 온프레미스 네트워크 또는 다른 클라우드 제공업체 네트워크의 subnet-b에 있는 내부 IP 주소 192.168.2.2를 사용하는 vm-b에서 업데이트를 다운로드해야 합니다. Cloud Interconnect는 VPC 네트워크를 온프레미스 네트워크 또는 다른 클라우드 제공업체 네트워크에 연결합니다. Google Cloud 외 네트워크에 vpc-a의 서브넷과 겹치는 또 다른 서브넷 192.168.1.0/24가 포함된다고 가정해 보겠습니다. vpc-asubnet-a에서 Google Cloud 외 네트워크의 subnet-b와 통신하려면 다음과 같이 vpc-a에 Private NAT 게이트웨이, pvt-nat-gw를 구성해야 합니다.

  • PRIVATE_NAT 용도의 Private NAT 서브넷을 지정합니다(예: 10.1.2.0/29). Private NAT 게이트웨이를 구성하기 전에 이 서브넷을 만듭니다. 이 서브넷이 연결된 네트워크의 기존 서브넷과 겹치지 않는지 확인합니다.
  • match='nexthop.is_hybrid'를 사용하여 NAT 규칙을 만듭니다.
  • subnet-a의 모든 IP 주소 범위에 적용되도록 Private NAT 게이트웨이를 구성합니다.

Hybrid NAT는 네트워크의 각 VM에 다음 NAT 소스 IP 주소와 소스 포트 튜플을 예약하기 위해 포트 예약 절차를 따릅니다. 예를 들어 Private NAT 게이트웨이는 vm-a를 통해 64개의 소스 포트(10.1.2.2:34000~10.1.2.2:34063)를 예약합니다.

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

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

    • 소스 IP 주소: 192.168.1.2, VM의 내부 IP 주소
    • 소스 포트: 24000, VM의 운영체제에서 선택한 임시 소스 포트
    • 대상 주소: 192.168.2.2, 업데이트 서버의 IP 주소
    • 대상 포트: 80, 업데이트 서버에 대한 HTTP 트래픽에 대한 대상 포트
    • 프로토콜: TCP
  2. pvt-nat-gw 게이트웨이는 이그레스에 소스 네트워크 주소 변환(SNAT 또는 소스 NAT)을 수행하여 요청 패킷의 NAT 소스 IP 주소와 소스 포트를 재작성합니다.

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

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

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

다음 단계