본문 바로가기
CSP (Cloud Service Provider)/GCP

Cloud DNS Zone의 종류와 생성

by BTC_.tf 2023. 10. 13.

베하! 오늘도 어김없이 찾아온 금요일의 엄팀입니다.

오늘은 GCP가 제공하는 DNS 서비스인 Cloud DNS, 그 DNS의 Zone의 종류Zone을 생성하는 방법을 알아보겠습니다.

 

Cloud DNS는 비용 효율적인 방식으로 Domain Name을 전역 DNS에 게시하는 복원력이 우수한 고성능 전역 DNS 서비스입니다.

DNS는 IP 주소와 및 기타 Data를 저장하고 이름별로 조회할 수 있는 계층형 분산 데이터베이스로써, Cloud DNS를 사용함으로써 자체 DNS 서버와 Software 관리 부담 없이 DNS에 Zone 및 Record를 게시할 수 있습니다.

 

Cloud DNS를 사용하기 위해선 Cloud DNS API를 사용 설정해야 합니다.

 

먼저, Managed Zone 중 Public Zone 생성 방법에 대해 알아보겠습니다.

gcloud dns managed-zones create [DNS Zone명] \
    --description=[설명] \
    --dns-name=[DNS명] \
    --labels=[Label] \
    --visibility=public

--visibility에서 public 옵션을 설정해줍니다.

 

Private Zone의 생성 방법입니다.

gcloud dns managed-zones create [DNS Zone명] \
    --description=[설명] \
    --dns-name=[DNS명] \
    --networks=[VPC Network List] \
    --labels=[Label] \
    --visibility=private

--network에서 Zone을 Query 할 수 있는 VPC Network의 List를 설정하고, --visibility에서 private 옵션을 설정해줍니다.

 

Cloud DNS에서는 Project 수준 및 개별 DNS Zone 수준에서 IAM 권한을 지원합니다.

특정 Resource에 대한 Access Control Policy 설정 방법입니다.

gcloud dns managed-zones set-iam-policy [DNS Zone명] \
  --policy-file=[Zone에 지정할 IAM Policy가 포함된 File]

위 명령어와 같이 설정합니다.

 

설정 후, IAM Policy가 적용된 Zone을 확인하기 위해선 다음과 같이 확인합니다.

gcloud dns managed-zones get-iam-policy [DNS Zone명]

 

Google Cloud 기반 서비스가 DNS를 통해 서비스 디렉터리 네임스페이스를 Query 할 수 있도록 허용하는 서비스 디렉터리 Zone도 생성이 가능합니다.

아래와 같이 명령어를 실행합니다.

gcloud dns managed-zones create [DNS Zone명] \
   --dns-name [DNS명] \
   --description [설명] \
   --visibility private \
   --networks https://www.googleapis.com/compute/v1/projects/[Project ID]/global/networks/[Network명] \
   --service-directory-namespace https://servicedirectory.googleapis.com/v1/projects/[Project ID]/locations/[Region명]/namespaces/[Namespace명]

--networks에서는 Zone을 사용할 수 있는 Network의 FQDN을, --service-directory에서는 연결 중인 Namespace의 FDQN을 설정합니다.

 

Cloud DNS가 Compute Engine DNS Data에 대해 PTR 조회를 수행하도록 특수한 속성이 포함된 Private Zone인 Managed Reverse Lookup Zone의 생성도 가능합니다.

아래의 명령어로 생성합니다.

gcloud dns managed-zones create [DNS Zone명] \
    --description=[설명] \
    --dns-name=[DNS명] \
    --networks=[VPC Network List] \
    --visibility=private \
    --managed-reverse-lookup=true

--managed-reverse-lookup을  true로 설정합니다.

 

Forwarding Zone은 특정 Private Zone의 Nameserver를 타겟팅할 수 있는 Zone입니다.

아래의 명령어로 생성합니다.

gcloud dns managed-zones create [DNS Zone명] \
    --description=[설명] \
    --dns-name=[DNS명] \
    --networks=[VPC Network list] \
    --forwarding-targets=[Forwarding Target List] \
    --private-forwarding-targets=[Private Forwarding Target List] \
    --visibility=private

Forwarding Target List는 Query가 전송되는 IP 주소 List입니다. 이 List에 지정된 RFC 1918 IP 주소는 사용자의 VPC Network 또는 Cloud VPN 또는 Cloud Interconnect를 사용하여 Google Cloud에 연결된 사내 네트워크에 있어야 합니다. RFC 1918 이 아닌 IP 주소는 인터넷에 Access가 가능해야 합니다.

Private Forwarding Target List 또한 Query가 전송되는 IP 주소 List로써, 여기 지정된 IP 주소는 사용자의 VPC Network 또는 Cloud VPN 또는 Cloud Interconnect를 사용하여 Google Cloud에 연결된 사내 네트워크에 있어야합니다.

 

DNS Peering을 사용하면 한 Zone의 Namespace에 있는 Record의 요청을 다른 VPC Network에 전달이 가능합니다.

아래의 명령어로 생성합니다.

 

gcloud projects add-iam-policy-binding [공급자 Project ID] \
   --member=[Service Account명] \
   --role=roles/dns.peer

소비자 VPC Network가 포함된 Project에서 생성된 Service Account에 공급자 Project에서 'roles/dns.peer' Role을 부여합니다.

 

gcloud dns managed-zones create [DNS Zone명] \
  --description=[설명] \
  --dns-name=[DNS명] \
  --networks=[소비자 VPC Network명] \
  --account=[Service Account명] \
  --target-network=[공급자 VPC Network] \
  --target-project=[공급자 Project ID] \
  --visibility=private

그 후, Target Network명을 지정하여 Zone을 생성합니다.

 

오늘은 Cloud DNS Zone의 종류와 생성 방법에 대해 알아봤는데요.

알아보면서 느낀 건데 Zone의 종류가 정말 다양하더라구요..

공부해야 할 게 더 많아진 느낌이지만 언젠가 도움이 될 거란 생각이 큽니다.

 

다들 즐거운 주말 보내시고, 이만 엄팀은 베바!

댓글