Cloud DNS 서버 정책 적용

이 페이지에서는 Cloud DNS 서버 정책을 구성하고 Virtual Private Cloud(VPC) 네트워크와 함께 사용하는 방법을 설명합니다. 이 페이지를 사용하기 전에 DNS 서버 정책 개요를 검토하세요.

시작하기 전에

Cloud DNS API를 사용하려면 Google Cloud 프로젝트를 만들고 Cloud DNS API를 사용 설정해야 합니다.

REST API를 사용하는 애플리케이션을 만드는 경우 OAuth 2.0 클라이언트 ID도 만들어야 합니다.

  1. 아직 계정이 없으면 Google 계정에 가입합니다.
  2. Google Cloud 콘솔에서 Cloud DNS API를 사용 설정합니다. 기존의 Compute Engine 또는 App Engine 프로젝트를 선택하거나 새 프로젝트를 만들 수 있습니다.
  3. REST API에 요청해야 하는 경우 OAuth 2.0 ID를 만들어야 합니다(OAuth 2.0 설정).
  4. 프로젝트에서 이후 단계에 입력해야 하는 다음 정보를 확인합니다.
    • 클라이언트 ID(xxxxxx.apps.googleusercontent.com)
    • 사용할 프로젝트 ID. Google Cloud 콘솔의 개요 페이지 상단에서 ID를 찾을 수 있습니다. 또한 사용자에게 앱에서 사용할 프로젝트 이름을 제공하도록 요청할 수도 있습니다.

이전에 Google Cloud CLI를 실행한 적이 없다면 다음 명령어를 실행하여 프로젝트 이름을 지정하고 Google Cloud Console에서 인증을 수행해야 합니다.

gcloud auth login

이전에 선택한 프로젝트와 다른 프로젝트를 선택하려면 명령줄에서 --project 옵션을 지정합니다.

DNS 서버 정책 만들기

각 DNS 서버 정책 객체는 다음 서버 정책을 정의할 수 있습니다.

각 VPC 네트워크는 하나 이상의 DNS 서버 정책을 참조할 수 있습니다. VPC 네트워크의 인바운드 전달과 아웃바운드 전달을 모두 정의해야 하는 경우 인바운드 정책과 아웃바운드 정책을 모두 정의하는 정책을 하나 만듭니다.

인바운드 서버 정책 만들기

인바운드 서버 정책을 만들려면 다음 안내를 따르세요. Cloud DNS는 정책이 적용되는 각 VPC 네트워크의 서브넷 기본 IPv4 주소 범위에서 인바운드 전달자 IP 주소 집합을 만듭니다. 정책을 만든 후 Cloud DNS가 만드는 진입점을 나열할 수 있습니다.

gcloud

인바운드 서버 정책을 만들려면 dns policies create 명령어를 실행합니다.

gcloud dns policies create NAME \
    --description=DESCRIPTION \
    --networks=VPC_NETWORK_LIST \
    --enable-inbound-forwarding

다음을 바꿉니다.

  • NAME: 정책 이름
  • DESCRIPTION: 정책에 대한 설명
  • VPC_NETWORK_LIST: 인바운드 전달 주소를 만들어야 하는 쉼표로 구분된 VPC 네트워크 목록

Terraform

resource "google_dns_policy" "default" {
  name                      = "example-inbound-policy"
  enable_inbound_forwarding = true

  networks {
    network_url = google_compute_network.default.id
  }
}

resource "google_compute_network" "default" {
  name                    = "network"
  auto_create_subnetworks = false
}

아웃바운드 서버 정책 만들기

VPC 네트워크의 대체 네임서버 목록을 지정하기 위해 아웃바운드 서버 정책을 만들 수 있습니다.

gcloud

아웃바운드 서버 정책을 만들려면 dns policies create 명령어를 실행합니다.

gcloud dns policies create NAME \
    --description=DESCRIPTION \
    --networks=VPC_NETWORK_LIST \
    --alternative-name-servers=ALTERNATIVE_NAMESERVER_LIST \
    --private-alternative-name-servers=PRIVATE_ALTERNATIVE_NAMESERVER_LIST

다음을 바꿉니다.

  • NAME: 정책 이름
  • DESCRIPTION: 정책에 대한 설명
  • VPC_NETWORK_LIST: 대체 네임서버를 쿼리하는 쉼표로 구분된 VPC 네트워크 목록
  • ALTERNATIVE_NAMESERVER_LIST: 대체 네임서버로 사용할 수 있는 쉼표로 구분된 IP 주소 목록입니다. 비공개 라우팅은 RFC 1918 주소가 있는 대체 네임서버에만 사용됩니다.
  • PRIVATE_ALTERNATIVE_NAMESERVER_LIST: 비공개 라우팅을 사용하여 액세스되는 대체 네임서버로 사용할 수 있는 쉼표로 구분된 IP 주소 목록입니다.

Terraform

resource "google_dns_policy" "default" {
  name = "example-outbound-policy"

  alternative_name_server_config {
    target_name_servers {
      ipv4_address    = "172.16.1.10"
      forwarding_path = "private"
    }
    target_name_servers {
      ipv4_address = "172.16.1.20"
    }
  }

  networks {
    network_url = google_compute_network.default.id
  }
}

resource "google_compute_network" "default" {
  name                    = "network"
  auto_create_subnetworks = false
}

두 가지 모두에 대한 서버 정책 만들기

gcloud

인바운드 및 아웃바운드 전달 모두에 대해 DNS 서버 정책을 만들려면 dns policies create 명령어를 실행합니다.

gcloud dns policies create NAME \
    --description=DESCRIPTION \
    --networks=VPC_NETWORK_LIST \
    --alternative-name-servers=ALTERNATIVE_NAMESERVER_LIST \
    --private-alternative-name-servers=PRIVATE_ALTERNATIVE_NAMESERVER_LIST \
    --enable-inbound-forwarding

다음을 바꿉니다.

  • NAME: 정책 이름
  • DESCRIPTION: 정책에 대한 설명
  • VPC_NETWORK_LIST: 인바운드 전달 주소가 생성되어 대체 네임서버를 쿼리해야 하는 VPC 네트워크의 쉼표로 구분된 목록
  • ALTERNATIVE_NAMESERVER_LIST: 대체 네임서버로 사용할 수 있는 쉼표로 구분된 IP 주소 목록입니다. 비공개 라우팅은 RFC 1918 주소가 있는 대체 네임서버에만 사용됩니다.
  • PRIVATE_ALTERNATIVE_NAMESERVER_LIST: 비공개 라우팅을 사용하여 액세스되는 대체 네임서버로 사용할 수 있는 쉼표로 구분된 IP 주소 목록입니다.

Terraform

resource "google_dns_policy" "example_policy" {
  name                      = "example-policy"
  enable_inbound_forwarding = true

  enable_logging = true

  alternative_name_server_config {
    target_name_servers {
      ipv4_address    = "172.16.1.10"
      forwarding_path = "private"
    }
    target_name_servers {
      ipv4_address = "172.16.1.20"
    }
  }

  networks {
    network_url = google_compute_network.network_1.id
  }
  networks {
    network_url = google_compute_network.network_2.id
  }
}

resource "google_compute_network" "network_1" {
  name                    = "network-1"
  auto_create_subnetworks = false
}

resource "google_compute_network" "network_2" {
  name                    = "network-2"
  auto_create_subnetworks = false
}

인바운드 포워더 진입점 나열

인바운드 서버 정책이 VPC 네트워크에 적용되면 Cloud DNS는 온프레미스 시스템 또는 이름 리졸버가 DNS 쿼리를 보낼 수 있는 대상 역할을 하는 리전 내부 IP 주소 집합을 만듭니다. 이러한 주소는 VPC 네트워크의 이름 변환 순서의 진입점 역할을 합니다.

Google Cloud 방화벽 규칙은 인바운드 포워더의 진입점 역할을 하는 리전 내부 주소에는 적용되지 않습니다. Cloud DNS는 포트 53에서 TCP 및 UDP 트래픽을 자동으로 허용합니다.

각 인바운드 포워더는 리전 내부 IP 주소와 동일한 리전에 있는 Cloud VPN 터널 또는 Cloud Interconnect 연결(VLAN)에서 쿼리를 허용하고 수신합니다. VM 인스턴스는 동일한 VPC 네트워크의 내부 IP 주소를 통해 인바운드 전달자에 액세스할 수 있습니다. 인바운드 전달에 액세스하려면 네트워크 인터페이스에 외부 IP 주소가 있거나 NIC의 서브넷에 비공개 Google 액세스가 사용 설정되어 있어야 합니다.

gcloud

인바운드 전달을 위한 진입점 역할을 하는 리전 내부 IP 주소 집합을 나열하려면 compute addresses list 명령어를 실행합니다.

gcloud compute addresses list \
    --filter='purpose = "DNS_RESOLVER"' \
    --format='csv(address, region, subnetwork)'

DNS 정책 업데이트

다음 섹션에서는 VPC 네트워크 변경 및 인바운드 전달 사용 설정 또는 사용 중지에 대한 정보를 제공합니다.

VPC 네트워크 변경

다음 목록은 DNS 정책이 적용되는 VPC 네트워크 목록을 변경하면 어떻게 되는지 설명합니다.

  • 정책이 인바운드 정책을 지정하면 필요에 따라 인바운드 포워더의 진입점이 VPC 네트워크에 생성됩니다.
  • 정책이 아웃바운드 정책을 지정하면 각 대체 VPC 네트워크의 이름 변환 순서가 지정된 대체 네임서버를 포함하도록 업데이트됩니다.

gcloud

DNS 서버 정책이 적용되는 네트워크 목록을 수정하려면 dns policies update 명령어를 실행합니다.

gcloud dns policies update NAME \
    --networks=VPC_NETWORK_LIST

다음을 바꿉니다.

  • NAME: 정책 이름
  • VPC_NETWORK_LIST: 정책이 적용되는 VPC 네트워크의 쉼표로 구분된 목록입니다. 지정한 VPC 네트워크 목록으로 이전 목록이 대체됩니다.

인바운드 전달 사용 설정 또는 중지

아웃바운드 정책(또는 대체 네임서버)만 정의하는 DNS 서버 정책에 대해 인바운드 전달을 사용 설정할 수 있습니다. 기존 DNS 정책에 대해 인바운드 전달을 사용 중지할 수도 있습니다.

gcloud

DNS 서버 정책에 대한 인바운드 전달을 사용 설정하려면 dns policies update 명령어를 실행합니다.

gcloud dns policies update NAME \
    --enable-inbound-forwarding

DNS 서버 정책의 인바운드 전달을 사용 중지하려면 dns policies update 명령어를 실행합니다.

gcloud dns policies update NAME \
    --no-enable-inbound-forwarding

NAME을 정책 이름으로 바꿉니다.

DNS 정책 나열

gcloud

프로젝트의 DNS 서버 정책을 나열하려면 dns policies list 명령어를 실행합니다.

gcloud dns policies list

DNS 정책 삭제

gcloud

서버 정책을 삭제하려면 dns policies delete 명령어를 실행합니다.

gcloud dns policies delete NAME

NAME을 삭제할 정책의 이름으로 바꿉니다.

다음 단계

  • Cloud DNS를 사용할 때 발생할 수 있는 일반적인 문제에 대한 해결책을 찾으려면 문제 해결 참조하기
  • Cloud DNS 개요는 Cloud DNS 개요 참조하기