1. 소개
이 Codelab에서는 정규화된 도메인 이름 (FQDN)을 전달 타겟으로 사용하여 Cloud DNS 아웃바운드 전달 영역을 설정하는 방법을 안내합니다. 이 기능을 사용하면 전달 영역 구성에 IP 주소를 하드코딩하는 대신 DNS 이름에서 확인된 IP 주소로 DNS 트래픽을 전달할 수 있습니다. 백엔드 DNS 리졸버 IP 주소가 변경되는 경우 특히 유용합니다. FQDN의 DNS 레코드를 업데이트하면 Cloud DNS에서 자동으로 변경사항을 가져옵니다.
이 Codelab을 마치면 다음을 사용하는 Cloud DNS 전달 영역을 구성할 수 있습니다.
- A/AAAA 레코드가 있는 비공개 영역과 일치하는 FQDN 타겟입니다.
- 지역별 선호도 또는 트래픽 분산을 위해 Cloud DNS 라우팅 정책 (위치정보 또는 가중치가 적용된 라운드 로빈)에 의해 지원되는 FQDN 타겟입니다.
FQDN 전달 개요
Cloud DNS 전달을 사용하면 Google Cloud Platform 외부 (예: 온프레미스 또는 기타 클라우드)에 호스팅된 비공개 DNS 이름을 Google Cloud Platform 리소스에서 확인할 수 있습니다. 기존에는 대상 IP 주소 목록으로의 전달을 지원했습니다. FQDN 전달을 사용하면 전달 영역에서 FQDN을 전달 대상으로 지정할 수 있으므로 이 기능이 확장됩니다.
FQDN이 지정되면 Cloud DNS는 소스 네트워크의 확인 로직을 사용하는 내부 조회를 사용하여 FQDN을 IP 주소로 확인합니다. 즉, FQDN 타겟은 비공개 영역, DNS 라우팅 정책 (지역 또는 가중치 라운드 로빈), 인터넷 공개 도메인 이름과 일치할 수 있습니다. 그런 다음 Cloud DNS는 확인된 대상 IP로 쿼리를 전달합니다.
빌드할 항목
새 비공개 영역을 사용한 지역 FQDN 전달
DNS 트래픽의 지역별 어피니티를 달성하는 설정을 빌드합니다. 이를 위해서는 비공개 DNS 영역을 만들고 그 내에서 위치정보 라우팅 정책을 구성한 후 전달 영역을 이 FQDN 타겟에 연결해야 합니다. 이렇게 하면 특정 리전 (예: us-east1)의 트래픽이 해당 지역 DNS 서버로 전달됩니다.
기존 비공개 영역을 사용한 FQDN 전달
기존 비공개 DNS 영역 내에서 A/AAAA 레코드로 지원되는 FQDN을 타겟팅하는 전달 영역을 만드는 방법을 알아봅니다. FQDN 전달 타겟을 사용하여 확인된 정적으로 정의된 IP 주소로 쿼리를 전달하는 방법을 보여줍니다.
학습할 내용
FQDN 전달 개념
FQDN 전달은 아웃바운드 쿼리의 전달 대상으로 IP 주소 대신 FQDN 전달 대상을 지정할 수 있도록 허용하여 DNS 전달을 확장한다는 것을 알 수 있습니다.
FQDN 전달의 이점
이 기능을 사용하면 백엔드 DNS 리졸버 IP 주소가 변경될 때 수동으로 업데이트할 필요가 없습니다. Cloud DNS가 FQDN의 DNS 레코드에서 변경사항을 자동으로 가져오기 때문입니다. 또한 DNS 서버가 공유 이름 뒤에 있거나 동적으로 확장되도록 허용하여 DNS 인프라를 더 유연하게 확장할 수 있습니다.
Cloud DNS 라우팅 정책과의 통합
FQDN 전달을 Cloud DNS 라우팅 정책 (위치정보 또는 가중치 적용 라운드 로빈)과 결합하여 지역별 어피니티를 달성하고, 지리적으로 다양한 배포의 성능을 최적화하며, 구성된 가중치에 따라 트래픽을 분산하는 방법을 알아봅니다.
Google Cloud CLI 명령어 문법
FQDN 전달 영역을 설정하기 위한 gcloud dns managed-zones create
명령어와 관련 플래그 (--forwarding-targets
, --private-forwarding-targets
)를 숙지합니다.
기본 요건
이 Codelab을 완료하려면 다음이 필요합니다.
- Google 계정
- 결제가 사용 설정된 Google Cloud 프로젝트
- gcloud 명령줄 도구가 설치되고 구성됨
- Cloud DNS 및 DNS 개념에 대한 기본적인 이해
2. 설정
FQDN 전달 시나리오 이해하기
Cloud DNS FQDN 전달은 다음과 같은 여러 사용 시나리오를 지원합니다.
- A/AAAA 레코드가 있는 비공개 영역: FQDN이 비공개 영역의 A/AAAA 레코드와 일치하면 확인된 IP 주소가 전달 목록에 추가되며, 동작은 대상 IP 주소로 직접 전달하는 것과 동일합니다.
- 위치정보 정책이 적용된 비공개 영역: 위치정보 정책을 사용하면 소스 위치정보를 지정하고 이에 상응하는 답변을 제공하여 지역을 기반으로 트래픽 분포를 확인할 수 있습니다. 이는 지역 DNS 전달 및 어피니티의 핵심입니다.
- 가중치가 적용된 라운드 로빈 (WRR) 정책이 적용된 비공개 영역: WRR 정책을 사용하면 DNS 이름의 IP 주소별로 서로 다른 가중치를 지정하여 구성된 가중치에 따라 트래픽이 분산되는지 확인할 수 있습니다.
- A/AAAA 레코드가 있는 공개 영역: FQDN이 동일한 네트워크에 표시되는 비공개 이름과 일치하지 않으면 Cloud DNS는 공개 인터넷을 사용하여 이를 확인하려고 시도합니다.
FQDN 전달을 위한 Google Cloud CLI 명령어 이해하기
gcloud CLI 명령어를 사용하여 FQDN 전달 타겟이 있는 전달 영역을 만들려면 gcloud dns managed-zones create
명령어를 사용합니다. FQDN 타겟을 지정하는 키 플래그는 --forwarding-targets
또는 --private-forwarding-targets
입니다. 표준 및 비공개 라우팅 방법에 관한 자세한 내용은 문서를 참고하세요.
--forwarding-targets
: 영역에서 쿼리를 전달할 대상 이름 서버의 IPv4/IPv6 주소 또는 도메인 이름 1개 목록입니다. 공개 상태에서는 무시됩니다. RFC1918 이외의 주소는 인터넷을 통해 대상에 전달됩니다. RFC1918 주소는 VPC를 통해 전달됩니다.--private-forwarding-targets
: 영역에서 쿼리를 전달할 대상 이름 서버의 IPv4/IPv6 주소 또는 도메인 이름 1개 목록입니다. 공개 상태에서는 무시됩니다. 이 매개변수에 지정된 모든 주소는 VPC를 통해 연결됩니다.
샘플 문법:
gcloud dns managed-zones create NAME \
--description=DESCRIPTION \
--dns-name=DNS_SUFFIX \
--networks=VPC_NETWORK_LIST \
--forwarding-targets=DEFAULT_FQDN_TARGET \
--visibility=private
--forwarding-targets
대신 --private-forwarding-targets
를 지정할 수 있습니다.
Google Cloud Platform 프로젝트 설정
gcloud CLI에 로그인합니다.
gcloud auth login
프로젝트를 만듭니다.
gcloud projects create my-codelab-project
Cloud DNS API를 사용 설정합니다. 변경사항이 적용되는 데 몇 분 정도 걸릴 수 있습니다.
gcloud services enable dns.googleapis.com
이 Codelab에서는 새 프로젝트로 생성된 기본 VPC 네트워크를 사용합니다. 대신 사용할 새 네트워크를 만들 수도 있습니다.
3. 지역 FQDN 전달 설정 (새 비공개 영역 포함)
이 시나리오는 특정 지역의 트래픽이 동일한 지역 내의 DNS 서버로 전달되도록 하여 지역 DNS 전달을 실행하는 방법을 보여줍니다.
비공개 DNS 영역 만들기
먼저 FQDN 및 관련된 위치정보 라우팅 정책을 호스팅할 비공개 DNS 영역 (예: foo.com)을 만듭니다. 이 영역은 기본 네트워크에 표시되어야 합니다.
gcloud dns managed-zones create my-zone \
--description="Private Zone for FQDN outbound DNS forwarding." \
--dns-name=foo.com. \
--networks=default \
--visibility=private
비공개 영역 내에 위치정보 라우팅 정책 레코드 세트 만들기
그런 다음 my-zone 내에 레코드 세트 (예: geo.foo.com)를 만들고 위치정보 라우팅 정책을 적용합니다. 이 예에서는 asia-east1 및 asia-west1의 IP 주소를 구성합니다.
gcloud dns record-sets create geo.foo.com. \
--ttl="30" \
--type="A" \
--zone="my-zone" \
--routing-policy-type="GEO" \
--routing-policy-data="asia-east1=192.168.0.1;us-central1=192.168.0.2"
참고: 지역 설정이 사용 중지된 경우 (기본값 및 권장사항) 원래 리전의 대상이 비정상인 경우 가장 가까운 정상 리전으로 쿼리가 전달됩니다.
FQDN 타겟으로 전달 영역 만들기
동일한 기본 네트워크에 표시되는 전달 영역 (geo.test.com.)을 만들고 geo.foo.com. (위치정보 라우팅 정책이 있는 FQDN)을 전달 대상으로 설정합니다.
gcloud dns managed-zones create my-geo-fwd-zone \
--description="Forwarding zone for FQDN outbound DNS forwarding for routing policy." \
--dns-name=geo.test.com. \
--networks=default \
--private-forwarding-targets=geo.foo.com. \
--visibility=private
이제 geo.test.com과 일치하는 모든 DNS 쿼리는 쿼리의 소스 영역을 기반으로 geo.foo.com의 확인된 IP (예: 192.168.0.1 또는 192.168.0.2)로 전달됩니다.
4. FQDN 전달 설정 (기존 비공개 영역 포함)
기존 비공개 DNS 영역이 있음
default 네트워크에 이미 my-zone (foo.com)이라는 비공개 DNS 영역이 있다고 가정해 보겠습니다.
이 비공개 영역 내에 DNS 리소스 레코드 만들기
기존 my-zone 내에 a.foo.com의 A 유형 레코드를 만듭니다.
gcloud dns record-sets create a.foo.com. \
--ttl="30" \
--type="A" \
--zone="my-zone" \
--rrdatas=1.2.3.4
전달 영역 만들기 및 FQDN 타겟 지정하기
지역 FQDN 시나리오와 마찬가지로 전달 영역을 만들고 a.foo.com을 전달 대상으로 지정합니다.
gcloud dns managed-zones create my-a-fwd-zone \
--description="Forwarding zone for FQDN outbound DNS forwarding for A record." \
--dns-name=a.test.com. \
--networks=default \
--private-forwarding-targets=a.foo.com. \
--visibility=private
a.test.com과 일치하는 DNS 쿼리는 a.foo.com의 확인된 IP 주소 1.2.3.4로 전달됩니다.
5. 삭제
비공개 영역을 삭제하려면 먼저 비공개 영역 내의 모든 ResourceRecordSet을 삭제해야 합니다 (자동으로 생성되고 항상 비공개 영역에 있어야 하는 NS 및 SOA 레코드는 예외).
비공개 영역에서 위치정보 라우팅 정책을 삭제합니다.
gcloud dns record-sets delete "geo.foo.com." --type="A" --zone="my-zone"
비공개 영역에서 A 레코드를 삭제합니다.
gcloud dns record-sets delete "a.foo.com." --type="A" --zone="my-zone"
비공개 영역을 삭제합니다.
gcloud dns managed-zones delete "my-zone"
위치정보 라우팅 정책의 전달 영역을 삭제합니다.
gcloud dns managed-zones delete "my-geo-fwd-zone"
A 레코드의 전달 영역을 삭제합니다.
gcloud dns managed-zones delete "my-a-fwd-zone"
6. 축하합니다
축하합니다. FQDN 아웃바운드 DNS 전달을 사용하는 방법을 배웠습니다.