Compute Engine 가상 머신(VM) 인스턴스를 만들면 내부 DNS가 VM의 DNS 이름을 자동으로 만듭니다. 이 DNS 이름은 내부 IP 주소를 확인하여 내부 VM 간 통신을 용이하게 합니다. Google Cloud의 Virtual Private Cloud 네트워크는 내부 DNS 서비스를 사용하여 같은 네트워크의 VM에서 내부 DNS 이름을 사용하여 서로 액세스할 수 있게 합니다.
Google Cloud는 개발자가 VM을 관리할 때 다음 DNS 레코드 유형을 자동으로 생성, 업데이트, 삭제합니다.
.internal
의 DNS 영역에 있는 VM에 대한 DNS 주소 레코드 또는 A 레코드가 생성됩니다.- 역방향 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의 특정 기능은 사용할 수 없습니다. 따라서 자동 확장을 사용하여 워크로드 증가를 원활하게 처리하는 애플리케이션을 수직 확장할 수 없습니다.
기본 내부 DNS 유형은 Compute Engine API를 사용 설정할 때 설정됩니다.
- 기본 내부 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 네트워크 설정을 구성하는 방법은 운영체제 문서를 참조하세요. 예를 들어 Red Hat Enterprise Linux for SAP with HA and Update Services 8.6의 경우 /etc/resolv.conf 파일 수동 구성 링크를 사용합니다.
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를 사용하도록 조직과 프로젝트를 마이그레이션합니다.