내부 DNS 개요


Compute Engine 가상 머신(VM) 인스턴스를 만들면 내부 DNS가 VM의 DNS 이름을 자동으로 만듭니다. 이 DNS 이름은 내부 IP 주소를 확인하여 내부 VM 간 통신을 용이하게 합니다. Google Cloud의 Virtual Private Cloud 네트워크는 내부 DNS 서비스를 사용하여 동일한 네트워크의 VM이 내부 DNS 이름을 사용하여 서로 액세스할 수 있게 합니다.

사용자가 VM을 관리할 때 Google Cloud는 다음 DNS 레코드 유형을 자동으로 생성, 업데이트, 삭제합니다.

  • DNS 주소 레코드 또는 A 레코드.internal의 DNS 영역에 있는 VM에 대해 생성됩니다.
  • 역방향 DNS 조회에 사용되는 VM의 PTR 레코드는 해당 역방향 영역에서 만들어집니다.

예를 들어 VM을 삭제하면 Google Cloud는 내부 DNS 이름의 연결된 A 및 PTR 레코드를 자동으로 제거합니다. 그런 다음 같은 이름으로 VM을 만들면 Google Cloud가 새로운 대체 레코드를 만듭니다.

제한사항

내부 DNS 이름의 사양은 다음과 같습니다.

  • VM의 내부 DNS 이름은 기본 내부 IP 주소로만 확인됩니다. 내부 DNS 이름은 VM의 외부 IP 주소에 연결하는 데 사용할 수 없습니다.

  • 내부 DNS 이름을 보조 별칭 IP로 확인할 수 있도록 구성할 수 없습니다.

  • 내부 DNS 이름은 동일한 네트워크에 있는 VM에서만 확인할 수 있습니다. 이러한 VM은 네트워크와 동일한 프로젝트에 있거나 동일한 공유 VPC 네트워크를 사용하는 서비스 프로젝트에 있을 수 있습니다. 서비스 프로젝트에서 VM의 DNS 이름을 확인하려면 VM의 FQDN을 사용해야 합니다. 내부 DNS를 사용해서는 다른 네트워크에 있는 VM에 연결할 수 없습니다.

영역 및 전역 내부 DNS 이름

Google Cloud에는 2가지 유형의 내부 DNS 이름이 있습니다.

  • 영역 DNS: VM 이름은 각 영역 내에서 고유해야 하지만 여러 영역 간에 VM 이름을 재사용할 수 있습니다. 예를 들어 VM이 서로 다른 영역에 있는 한 이름이 instance-1인 VM을 여러 개 가질 수 있습니다.
  • 전역 DNS: VM 이름은 각 프로젝트 내에서 고유해야 합니다. 전역 DNS를 사용하면 프로젝트 내에서 VM 이름을 재사용할 수 없습니다.

영역 DNS는 DNS 등록 실패를 개별 영역으로 격리하여 더 높은 안정성을 제공하므로 영역 DNS를 사용하는 것이 좋습니다. 서비스 중단 시 전역 DNS에는 다음과 같은 문제가 있습니다.

  • VM 이름은 전체 프로젝트에서 고유해야 합니다. 따라서 프로젝트 리소스가 있거나 이전에 있었던 제어 영역 장애가 발생하는 리전에서는 새 VM을 만들 수 없습니다. Google Cloud는 사용할 수 없는 리전의 기존 리소스 DNS 이름을 확인할 수 없습니다.
  • 관리형 인스턴스 그룹(MIG)의 자동 확장과 같은 Compute Engine의 특정 기능은 사용할 수 없습니다. 따라서 자동 확장을 사용하여 워크로드 증가를 원활하게 처리하는 애플리케이션을 확장할 수 없습니다.

Compute Engine API를 사용 설정하면 기본 내부 DNS 유형이 설정됩니다.

  • 기본 내부 DNS 유형은 영역 DNS입니다.
  • 2018년 9월 6일 이전에 조직 또는 독립형 프로젝트에서 Compute Engine API를 사용 설정한 경우 기본 내부 DNS 유형이 전역 DNS로 설정됩니다.

내부 DNS 이름의 정규화된 도메인 이름은 다음 표에 설명되어 있습니다.

내부 DNS 유형 정규화된 도메인 이름(FQDN)
영역 DNS VM_NAME.ZONE.c.PROJECT_ID.internal
전역(프로젝트 전체) DNS VM_NAME.c.PROJECT_ID.internal

다음을 바꿉니다.

  • VM_NAME: VM의 이름입니다. 영역 DNS의 경우 이 값은 영역 내에서 고유해야 하지만 여러 영역에서 반복할 수 있습니다. 전역 DNS의 경우 VM 이름은 프로젝트 전체에서 고유해야 합니다.
  • ZONE: 인스턴스가 있는 영역입니다.
  • PROJECT_ID: VM이 속한 프로젝트입니다.

프로젝트 또는 인스턴스 수준에서 사용할 내부 DNS 이름의 유형을 제어하는 방법에 대한 자세한 내용은 프로젝트 또는 인스턴스의 DNS 이름 구성을 참조하세요.

DNS 이름 변환

VM은 DHCP 임대 시 내부 DNS 변환 정보를 받습니다. DNS 변환 방법은 운영체제 플랫폼에 따라 다릅니다.

  • Linux: 기본적으로 VM의 DNS 서버(169.254.169.254:53)는 내부 DNS 이름을 확인합니다.
  • Windows: 기본적으로 서브넷의 기본 게이트웨이가 내부 DNS 이름을 확인합니다.

PTR 레코드 역방향 영역

Google Cloud의 내부 DNS는 다음 역방향 영역에 있는 VM의 PTR 레코드를 자동으로 만듭니다.

  • 10.in-addr.arpa.
  • 168.192.in-addr.arpa.
  • 16.172.in-addr.arpa., 17.172.in-addr.arpa., ...~ 31.172.in-addr.arpa.

내부 DNS 이름 및 공유 VPC

VM의 내부 IP 주소가 호스트 프로젝트의 공유 VPC 네트워크에 있는 경우에도 내부 DNS 이름을 사용하여 이 주소를 참조할 수 있습니다. 공유 VPC를 사용하는 경우 영역 또는 전역(프로젝트 전체) 내부 DNS 이름의 프로젝트 ID 부분이 서비스 프로젝트의 ID입니다.

내부 DNS 이름 맞춤설정

일부 조직 또는 애플리케이션에서는 Google Cloud에서 만든 기본 내부 DNS 이름 대신 커스텀 내부 DNS 이름이 필요할 수 있습니다.

Cloud DNS를 사용하는 비공개 영역 및 커스텀 레코드

Cloud DNS 비공개 영역을 사용하여 VM의 커스텀 DNS 항목을 만들 수 있습니다. 사용자가 제공하는 커스텀 URL로 VM의 기본 내부 DNS URL을 재정의할 수 있는 PTR 레코드를 구성할 수 있습니다.

자동으로 생성된 내부 DNS PTR 이름을 재정의하는 커스텀 PTR 레코드를 만들려면 비공개 영역의 RFC 1918 주소에 대한 PTR 레코드를 참조하세요. VM의 PTR 레코드 만들기에 대한 자세한 내용은 VM 인스턴스의 PTR 레코드 만들기를 참조하세요.

커스텀 호스트 이름

VM을 만들 때 VM의 커스텀 호스트 이름을 지정할 수 있습니다. 이러한 방식으로 할당된 커스텀 호스트 이름은 내부 DNS에 의해 확인되지 않습니다. 커스텀 호스트 이름이 있더라도 적절한 영역에 해당 DNS 레코드를 만들어야 합니다. 예를 들어 Cloud DNS를 사용할 수 있습니다. 자세한 내용은 커스텀 호스트 이름을 사용하여 VM 인스턴스 만들기를 참조하세요.

내부 DNS 및 DHCP

Compute Engine VM은 24시간마다 DHCP 임대를 갱신하도록 구성됩니다. 영역 DNS에 대해 설정된 VM의 경우 DHCP 임대가 1시간 간격으로 만료됩니다. 영역 DNS를 사용하는 VM의 경우 DHCP 구성 파일에 영역 항목과 전역 항목이 모두 포함됩니다.

기본적으로 대부분의 Linux 배포판은 DHCP 정보를 resolv.conf에 저장합니다. resolv.conf를 수동으로 편집하면 VM에서 DHCP 임대가 만료될 때마다 기본 DHCP로 되돌아갑니다. resolv.conf 파일에서 정적 수정을 수행하기 위해 일부 Linux 배포판에서는 항목을 DHCP 정책 앞이나 뒤에 붙일 수 있습니다.

DHCP 정책 또는 구성 파일을 수정하는 방법은 사용하는 Linux 배포판에 따라 다릅니다. 예를 들어 Red Hat Enterprise Linux 및 Debian은 /etc/dhcp/dhcpd.conf 구성 파일을 사용합니다. CentOS에서는 네트워크 관리자 명령줄 유틸리티인 nmcli를 사용합니다.

커스텀 DHCP 및 DNS 네트워크 설정을 구성하는 방법은 운영체제 문서를 참조하세요.

resolv.conf 파일 예

기본적으로 대부분의 Linux 배포판은 DHCP 정보를 resolv.conf에 저장합니다. systemd-resolved 서비스는 DNS의 리졸버 서비스도 제공합니다. /etc/systemd/resolved.conf.d/ 디렉터리에서 /etc/systemd/resolved.conf 파일 및 기타 *.conf 파일을 수정하여 이 서비스를 구성할 수 있습니다. resolved.conf에 DHCP 정보를 저장하는 Linux 배포판의 경우 /etc/systemd/resolved.conf 파일에서 영역 및 전역 DNS 항목을 볼 수 있습니다.

이러한 파일은 다음과 같은 제한사항을 갖습니다.

  • 검색 경로는 레코드를 6개만 처리할 수 있고, 이러한 레코드 중 3개는 Compute Engine에서 제공됩니다. 총 항목 수가 6개를 초과하는 검색 경로에 항목을 추가하면 6번째 항목 이후에는 검색 규칙이 OS에서 적용되지 않습니다. 그 결과 인스턴스 이름을 사용하여 VM에 액세스하는 등 Compute Engine 기능의 작동이 중지됩니다.
  • resolv.conf를 수동으로 편집하면 VM에서 24시간 DHCP 임대가 만료될 때마다 기본 DHCP로 되돌아갑니다. 영역 DNS를 사용하는 VM에서는 DHCP 임대가 1시간마다 만료됩니다. resolv.conf 파일에서 정적 수정을 수행하기 위해 일부 Linux 배포판에서는 항목을 DHCP 정책 앞이나 뒤에 붙일 수 있습니다.

영역 DNS 구성

샘플 영역 resolv.conf 파일:

# Local domain name. Computed from your project name.
domain ZONE.c.PROJECT_ID.internal
# Search list for hostname lookup. Starting with entries that represent
# your project and ending with google.internal to facilitate metadata server requests.
search ZONE.c.PROJECT_ID.internal. c.PROJECT_ID.internal. google.internal.
# Address of the DNS server to resolve project specific, and global domain names.
nameserver 169.254.169.254

다음을 바꿉니다.

  • ZONE: VM이 있는 영역입니다.
  • PROJECT_ID: 이미지가 속한 프로젝트입니다.

샘플 영역 dhcp.lease 파일:

lease {
  # What interface we are using for the network
  interface "eth0";
  fixed-address 10.128.0.9;
  option subnet-mask 255.255.255.255;
  option routers 10.128.0.1;
  # Lease timeout, older VM instances will have this value set to infinite.
  option dhcp-lease-time 3600;
  option dhcp-message-type 5;
  option domain-name-servers 169.254.169.254;
  option dhcp-server-identifier 169.254.169.254;
  option interface-mtu 1460;
  # Search path options that are copied into the resolv.conf
  option domain-search "ZONE.c.PROJECT_ID.internal.", "c.PROJECT_ID.internal.", "google.internal.";
  option ntp-servers 169.254.169.254;
  option rfc3442-classless-static-routes 32,10,128,0,1,0,0,0,0,0,10,128,0,1;
  option host-name "VM_NAME.ZONE.c.PROJECT_ID.internal";
  option domain-name "ZONE.c.PROJECT_ID.internal";
  renew 4 2017/11/16 02:15:52;
  rebind 4 2017/11/16 02:43:59;
  expire 4 2017/11/16 02:51:29;
}

다음을 바꿉니다.

  • VM_NAME: VM의 이름입니다.
  • ZONE: VM이 있는 영역입니다.
  • PROJECT_ID: 이미지가 속한 프로젝트입니다.

전역 DNS 구성

샘플 전역 resolv.conf 파일:

# Local domain name. Computed from your project name.
domain c.PROJECT_ID.internal
# Search list for hostname lookup. Starting with entries that represent
# your project and ending with google.internal to facilitate metadata server requests.
search c.PROJECT_ID.internal google.internal.
# Address of the DNS server to resolve project specific, and global domain names.
nameserver 169.254.169.254

PROJECT_ID를 VM이 속한 프로젝트로 바꿉니다.

샘플 전역 dhcp.lease 파일:

lease {
  # What interface we are using for the network
  interface "eth0";
  fixed-address 10.128.0.8;
  option subnet-mask 255.255.255.255;
  option routers 10.128.0.1;
  # Lease timeout, older VM instances will have this value set to infinite.
  option dhcp-lease-time 86400;
  option dhcp-message-type 5;
  option domain-name-servers 169.254.169.254;
  option dhcp-server-identifier 169.254.169.254;
  option interface-mtu 1460;
  # Search path options that are copied into the resolv.conf
  option domain-search "c.PROJECT_ID.internal.", "google.internal.";
  option ntp-servers 169.254.169.254;
  option rfc3442-classless-static-routes 32,10,128,0,1,0,0,0,0,0,10,128,0,1;
  option host-name "VM_NAME.c.PROJECT_ID.internal";
  option domain-name "c.PROJECT_ID.internal";
  renew 4 2017/11/16 12:07:00;
  rebind 4 2017/11/16 22:44:53;
  expire 5 2017/11/17 01:44:53;
}

다음을 바꿉니다.

  • VM_NAME: VM의 이름입니다.
  • PROJECT_ID: 이미지가 속한 프로젝트입니다.

dhclient.conf 파일 예

Debian 9와 같은 일부 운영체제는 resolv.conf 파일 대신 dhclient.conf 파일을 사용합니다.

샘플 /etc/dhcp/dhclient.conf 파일:

# Configuration file for /sbin/dhclient.
#
...
append domain-search "mydomain.com";
prepend domain-name-servers 172.16.1.1;

이 예시에서 mydomain.com은 새 검색 도메인이고 172.16.1.1은 DNS 서버의 IP입니다.

다음 단계

  • Google Cloud VPC 네트워크에 대한 자세한 내용은 VPC 개요를 참조하세요.
  • VPC 네트워크 만들기 및 수정에 대한 자세한 내용은 VPC 사용을 참조하세요.
  • 전역 DNS 대신 영역 DNS를 사용하도록 조직 및 프로젝트를 마이그레이션합니다.