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
을 사용하여 모든 대상으로 트래픽을 보내야 합니다.
이 예시에서는 NAT 규칙을 사용할 수 있지만 Subnet-1
(10.10.10.0/24
)에는 다른 서브넷과 다른 NAT 규칙이 있으므로 두 개의 NAT 게이트웨이가 필요합니다. 이 구성을 만들려면 다음 단계를 수행하세요.
Subnet-1
에 NAT IP 주소203.0.113.40
으로Cloud NAT Gateway 1
이라는 게이트웨이를 만들고 다음 규칙을 추가합니다.Cloud NAT Gateway 1
의 NAT 규칙 1: 대상이198.51.100.20/30
인 경우203.0.113.20
과 함께 소스 NAT를 사용합니다.Cloud NAT Gateway 1
의 NAT 규칙 2: 대상이198.51.100.30
또는198.51.100.31
인 경우203.0.113.30
과 함께 소스 NAT를 사용합니다.
- 리전의 다른 서브넷에
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.ip
가 198.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'"
다음 단계
- NAT 규칙 구성 알아보기