Cloud NAT 규칙

NAT 규칙 기능을 사용하면 Cloud NAT를 사용하여 인터넷에 연결하는 방법을 정의하는 액세스 규칙을 만들 수 있습니다. NAT 규칙은 대상 주소를 기준으로 소스 NAT를 지원합니다.

NAT 규칙 없이 NAT 게이트웨이를 구성할 때 NAT 게이트웨이를 사용하는 VM은 동일한 NAT IP 주소 집합을 사용하여 모든 인터넷 주소에 연결합니다. Cloud NAT를 통과하는 패킷을 더 세밀하게 제어해야 할 경우 NAT 규칙을 추가할 수 있습니다. NAT 규칙은 일치 조건 및 해당 작업을 정의합니다. NAT 규칙을 지정하면 각 패킷이 각 NAT 규칙과 일치합니다. 패킷이 규칙에 설정된 조건과 일치하는 경우 일치에 따른 작업이 수행됩니다.

Cloud NAT 규칙 구성 예시

다음 예시는 대상이 몇 개의 IP 주소에서만 액세스를 허용하는 경우 NAT 규칙을 사용하는 방법을 보여줍니다. 비공개 서브넷의 Google Cloud VM에서 이러한 대상으로 가는 트래픽에는 허용된 IP 주소만 사용하여 소스 NAT 변환을 적용하는 것이 좋습니다. 다른 대상에는 이 IP 주소를 사용하지 않는 것이 좋습니다.

VPC 네트워크 test의 리전 A에 있는 Subnet-1(10.10.10.0/24)의 VM에 대해 다음 요구사항을 고려하세요.

  • VM은 NAT IP 주소 203.0.113.20을 사용하여 트래픽을 198.51.100.20/30 대상으로 보내야 합니다.
  • VM은 NAT IP 주소 203.0.113.30을 사용하여 트래픽을 대상 198.51.100.30 또는 198.51.100.31으로 보내야 합니다.
  • VM에서 다른 인터넷 대상으로 트래픽을 전송하려면 NAT IP 주소 203.0.113.40을 사용해야 합니다.

또한 이 VPC 네트워크는 동일한 리전에 두 개의 추가 서브넷을 포함합니다. 이러한 VM은 NAT IP 주소 203.0.113.10을 사용하여 모든 대상으로 트래픽을 보내야 합니다.

2개의 Cloud NAT 게이트웨이가 있는 Cloud NAT 구성
2개의 Cloud NAT 게이트웨이가 있는 Cloud NAT 구성(확대하려면 클릭)

이 예시에서는 NAT 규칙을 사용할 수 있지만 Subnet-1(10.10.10.0/24)에는 다른 서브넷과 다른 NAT 규칙이 있으므로 두 개의 NAT 게이트웨이가 필요합니다. 이 구성을 만들려면 다음 단계를 수행하세요.

  1. Subnet-1에 NAT IP 주소 203.0.113.40으로 Cloud NAT Gateway 1이라는 게이트웨이를 만들고 다음 규칙을 추가합니다.
    1. Cloud NAT Gateway 1의 NAT 규칙 1: 대상이 198.51.100.20/30인 경우 203.0.113.20과 함께 소스 NAT를 사용합니다.
    2. Cloud NAT Gateway 1의 NAT 규칙 2: 대상이 198.51.100.30 또는 198.51.100.31인 경우 203.0.113.30과 함께 소스 NAT를 사용합니다.
  2. 리전의 다른 서브넷에 Cloud NAT Gateway 2라는 게이트웨이를 만들고 NAT IP 주소를 203.0.113.10으로 할당합니다. 이 단계에서는 NAT 규칙이 필요하지 않습니다.

NAT 규칙 사양

NAT 규칙을 사용하기 전 다음 사양을 참조하세요.

  • 규칙 번호는 NAT 규칙을 고유하게 식별합니다. 2개의 규칙이 동일한 규칙 번호를 가질 수 없습니다.
  • 각 NAT 구성에는 기본 규칙이 포함됩니다.
    • 동일한 NAT 구성에서 일치하는 다른 NAT 규칙이 없는 경우 기본 규칙이 적용됩니다.
    • 기본 규칙의 규칙 번호는 65001입니다.
    • 기본 규칙의 대상 IP CIDR 범위는 0.0.0.0/0입니다.
  • Cloud NAT 규칙은 NAT IP 할당 옵션의 값이 MANUAL_ONLY인 경우에만 지원됩니다.
  • 특정 규칙에 구성된 모든 IP 주소는 동일한 등급이어야 합니다.

    동일한 규칙 내에서 프리미엄 등급과 표준 등급 IP 주소를 혼합하여 사용할 수 없습니다(기본 규칙 포함).

  • 일치 조건의 대상 IP CIDR 범위는 NAT 규칙 간에 겹치지 않아야 합니다. 임의의 지정된 패킷과 일치할 수 있는 규칙은 최대 하나일 수 있습니다.

    기본 규칙에 사용되는 범위인 0.0.0.0/0을 대상 IP CIDR 범위로 갖는 NAT 규칙은 만들 수 없습니다.

  • NAT 규칙에서 NAT IP 주소가 겹치지 않아야 합니다.

  • 규칙은 비어 있지 않은 Active 또는 비어 있지 않은 Drain IP 주소를 포함해야 합니다. 규칙에 비어 있는 Active IP 주소가 포함된 경우 NAT 규칙과 일치하는 새 연결이 삭제됩니다.

  • 엔드포인트 독립 매핑이 사용 설정된 NAT 게이트웨이에는 NAT 규칙을 추가할 수 없습니다. NAT 규칙이 있는 NAT 게이트웨이에서는 엔드포인트 독립 매핑을 사용 설정할 수 없습니다.

또한 각 Cloud NAT 규칙에 대해 VM당 최소 포트 값으로부터 모든 VM에 포트가 할당됩니다. NAT 규칙으로부터 VM에 할당된 포트가 소진되면 NAT 규칙과 일치하는 새 연결이 삭제됩니다.

예를 들어 VM당 4,096개의 포트를 구성하고 16개의 VM과 2개의 NAT 규칙(1개의 IP 주소가 있는 rule1 및 2개의 IP 주소가 있는 rule2)이 있는 경우 2개의 IP 주소가 있는 기본 규칙(default)과 함께 16개의 VM 모두에 NAT 규칙의 각 번들에 있는 4,096개의 포트가 할당됩니다. 이 예시에서 모든 VM에 대해 default 또는 rule2에는 문제가 없지만 rule1은 일부 VM에 포트를 할당할 수 없습니다. 따라서 rule1을 통과해야 하는 VM의 트래픽은 중단되고 이 트래픽은 기본 규칙을 사용하지 않으므로 리소스 부족 징후가 표시될 수 있습니다.

규칙 표현식 언어

NAT 규칙은 Common Expression Language 구문을 사용하여 기록됩니다.

표현식에는 두 가지 구성요소가 필요합니다.

  • 규칙 표현식에서 검사할 수 있는 속성
  • 표현식의 일부로 속성에 수행할 수 있는 작업

예를 들어 다음 표현식은 inIpRange() 작업의 destination.ip 속성과 198.51.100.0/24 속성을 사용합니다. 이 경우 destination.ip198.51.100.0/24 IP 주소 범위 내에 있으면 표현식은 true를 반환합니다.

inIpRange(destination.ip, '198.51.100.0/24')

NAT 규칙은 다음 속성 및 작업만 지원합니다.

속성

속성은 대상 IP 주소와 같이 발신 패킷의 정보를 나타냅니다.

속성 이름 설명
destination.ip 패킷의 대상 IP 주소

운영

다음 참조는 규칙 표현식을 정의하기 위해 속성에 사용할 수 있는 연산자를 설명합니다.

작업 설명
inIpRange(string, string) -> bool inIpRange(X, Y)는 IP CIDR 범위 Y에 IP 주소 X가 포함된 경우 true를 반환합니다.
|| 논리 연산자입니다. x || y는 x 또는 y가 true이면 true를 반환합니다.
== 같음 연산자입니다. x == y는 x가 y와 같으면 true를 반환합니다.

표현식 예시

대상 IP 주소 198.51.100.20과 트래픽을 일치시킵니다.

"destination.ip == '198.51.100.20'"

대상 IP 주소 198.51.100.10/30 또는 198.51.100.20과 트래픽을 일치시킵니다.

"inIpRange(destination.ip, '198.51.100.10/30') || destination.ip == '198.51.100.20'"

다음 단계