내용으로 건너뛰기

Route 53 프라이빗 호스팅 영역의 DNS 확인 문제를 해결하려면 어떻게 해야 합니까?

7분 분량
0

Amazon Route 53 프라이빗 호스팅 영역의 DNS 확인 문제를 해결하고 싶습니다.

간략한 설명

프라이빗 호스팅 영역 DNS 문제를 해결하려면 Amazon Virtual Private Cloud(Amazon VPC) 설정, 영역 연결 및 DNS 서버 설정을 확인하십시오.

해결 방법

참고: AWS Command Line Interface(AWS CLI) 명령을 실행할 때 오류가 발생하면 AWS CLI의 오류 해결을 참조하십시오. 또한 최신 AWS CLI 버전을 사용하고 있는지 확인하십시오.

VPC에서 DNS 지원 확인

프라이빗 호스팅 영역 레코드 확인을 허용하려면 다음 단계를 완료하십시오.

  1. Amazon VPC에서 DNS 지원을 활성화합니다.
  2. VPC에서 DNSSupportDNSHostnamesTrue로 설정되어 있는지 확인합니다. 자세한 내용은 VPC의 DNS 속성 보기 및 업데이트를 참조하십시오.

VPC ID 연결이 올바른지 확인

프라이빗 호스팅 영역에 올바른 VPC ID를 연결했는지 확인합니다. 또한 동일한 VPC 내에서 도메인의 리소스 레코드를 쿼리해야 합니다.

프라이빗 호스팅 영역을 VPC와 연결하는 경우:

  • Route 53 Resolver는 자동 정의된 규칙을 생성하여 VPC와 연결합니다.
  • 해당 VPC의 리소스는 Resolver를 쿼리하여 프라이빗 호스팅 영역의 DNS 레코드를 확인할 수 있습니다.

호스팅 영역과 연결된 VPC를 나열하려면 AWS CLI에서 다음 명령을 실행합니다.

aws route53 get-hosted-zone --id VPC_ID

참고: VPC_ID를 관련 값으로 대체하십시오.

특정 VPC와 연결된 프라이빗 호스팅 영역을 나열하려면 AWS CLI에서 다음 명령을 실행합니다.

aws route53 list-hosted-zones-by-vpc --vpc-id VPC_ID --vpc-region REGION_ID

참고: HOSTED_ZONE_ID, VPC_IDREGION_ID를 관련 값으로 대체하십시오.

사용자 지정 DNS 서버 구성 확인

VPC의 DNS에 대한 DHCP 옵션에서 사용자 지정 DNS 서버 또는 Active Directory 서버를 구성했다면, 다음 항목을 확인합니다.

  1. 전달 규칙: 서버는 프라이빗 도메인 DNS 쿼리를 VPC의 DNS 서버 IP 주소로 전달합니다.
  2. 도메인 구성: 사용자 지정 서버의 도메인은 프라이빗 호스팅 영역과 다릅니다.

예를 들어, VPC의 기본 CIDR 범위가 172.31.0.0/16이라면, VPC DNS 서버의 IP 주소는 172.31.0.2입니다. 이는 Amazon VPC 네트워크 범위에 2를 더한 값입니다.

Resolver 구성 설정 검토

DNS 확인 또는 응답이 간헐적으로 발생한다면 원본 인스턴스의 Resolver 구성 설정을 검토합니다.

  • Linux 인스턴스의 경우 cat /etc/resolv.confcat/etc/hosts 파일을 사용하십시오.
  • macOS의 경우 macOS 사용 설명서에서 Mac의 DNS 설정 변경을 참조하십시오.
  • Windows의 경우 다음 단계를 완료하십시오.
    설정을 선택한 다음 네트워크 및 인터넷을 선택합니다.
    고급 네트워크 설정에서 어댑터 설정 변경을 선택합니다.
    네트워크 연결을 마우스 오른쪽 버튼으로 클릭한 다음 속성을 선택합니다.
    IPv4 속성을 선택한 다음 DNS 서버 주소에 기본 DNS IP 주소를 입력합니다.

예를 들어 resolv.conf를 구성한 경우 회전 옵션을 사용하여 Amazon DNS와 Google DNS(8.8.8.8) 간에 쿼리를 로드 밸런싱할 수 있습니다. **resolv.conf ** 파일은 다음과 비슷합니다.

options rotate; generated by /usr/sbin/dhclient-script
nameserver 8.8.8.8
nameserver 172.31.0.2

퍼블릭 Google DNS(8.8.8.8)에 대한 첫 번째 쿼리에서 예상 NXdomain 응답을 받습니다. Resolver가 프라이빗 호스팅 영역이 아닌 퍼블릭 호스팅 영역에서 응답을 찾으려고 합니다.

Private hosted Zone Record - resolvconf.local
[ec2-user@ip-172-31-253-89 etc]$ curl -vks http://resolvconf.local* Rebuilt URL to: http://resolvconf.local/
* Could not resolve host: resolvconf.local

15:24:58.553320 IP ip-172-31-253-89.ap-southeast-2.compute.internal.40043 > dns.google.domain: 65053+ A? resolvconf.local. (34)
15:24:58.554814 IP dns.google.domain > ip-172-31-253-89.ap-southeast-2.compute.internal.40043: 65053 NXDomain 0/1/0 (109)

하지만 두 번째 쿼리는 성공적으로 확인됩니다. 두 번째 쿼리는 프라이빗 호스팅 영역에 연결된 VPC DNS 리졸버에 도달합니다.

[ec2-user@ip-172-31-253-89 etc]$ curl -vks http://resolvconf.local* Rebuilt URL to: http://resolvconf.local/*   Trying 1.1.1.1...
* TCP_NODELAY set
* Connected to resolvconf.local (1.1.1.1) port 80 (#0)

15:25:00.224761 IP ip-172-31-253-89.ap-southeast-2.compute.internal.51578 > 172.31.0.2.domain: 7806+ A? resolvconf.local. (34)
15:25:00.226527 IP 172.31.0.2.domain > ip-172-31-253-89.ap-southeast-2.compute.internal.51578: 7806 1/0/0 A 1.1.1.1 (50)

프라이빗 호스팅 영역의 네임스페이스 중복 여부 확인

여러 영역의 네임스페이스가 겹치는 경우:

  • Resolver가 가장 구체적인 일치 항목을 기반으로 트래픽을 라우팅합니다.
  • 일치하는 영역은 있지만 일치하는 레코드가 없는 경우 Resolver는 NXDOMAIN을 반환합니다.

성공적인 DNS 확인을 위해 가장 구체적인 프라이빗 호스팅 영역에 올바른 레코드가 구성되어 있는지 확인합니다.

예를 들어, 다음과 같은 레코드가 있는 프라이빗 호스팅 영역 두 개가 있는 경우:

프라이빗 호스팅 영역레코드 이름
localoverlap.privatevpc.local60.1.1.1
privatevpc.localoverlap.privatevpc.local50.1.1.1

가장 구체적으로 일치하는 프라이빗 호스팅 영역에서 다음과 같은 쿼리 결과를 받습니다.

[ec2-user@IAD-BAS-INSTANCE ~]$ dig overlap.privatevpc.local +short
50.1.1.1

프라이빗 호스팅 영역의 영역/하위 도메인 위임 확인

프라이빗 호스팅 영역은 영역/하위 도메인 위임을 지원하지 않습니다. 상위 도메인의 프라이빗 호스팅 영역에서 하위 도메인에 대해 구성된 이름 서버(NS) 레코드가 없는지 확인합니다. 위임을 구성한 경우 클라이언트가 VPC 리졸버로부터 "SERVFAIL" 응답 코드를 받습니다.

다음은 SERVFAIL을 유발하는 위임 구성 예제입니다.

  • 프라이빗 호스팅 영역: abc.com
  • 위임 NS 레코드: kc.abc.com
  • 리소스 레코드: test.kc.abc.com
[ec2-user@ip-172-31-0-8 ~]$ dig test.kc.abc.com
;; ->>HEADER<<- opcode: QUERY, status: SERVFAIL, id: 63414
;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 0, ADDITIONAL: 0
;; QUESTION SECTION:
;test.kc.abc.com        IN      A
;; Query time: 15 msec
;; SERVER: 172.31.0.2#53(172.31.0.2)
;; WHEN: Fri Apr 16 15:57:37 2021
;; MSG SIZE  rcvd: 48

라우팅 정책 지원 확인

프라이빗 호스팅 영역에서 지원하는 리소스 레코드의 라우팅 정책을 구성했는지 확인합니다. 자세한 내용은 프라이빗 호스팅 영역의 레코드에 대해 지원되는 라우팅 정책을 참조하십시오.

Resolver 규칙 및 아웃바운드 Resolver 엔드포인트 사용량 확인

아웃바운드 엔드포인트에서 Resolver를 사용하고 있는지 확인하십시오. 다음과 같은 경우 Resolver 규칙이 우선합니다.

  1. 프라이빗 호스팅 영역 도메인의 트래픽을 네트워크로 라우팅하는 Resolver 규칙이 있습니다.
  2. 동일한 VPC에 연결된 Resolver 규칙이 있으며, 이 규칙이 프라이빗 호스팅 영역에도 연결되어 있습니다.

자세한 내용은 VPC와 네트워크 간 DNS 쿼리 확인을 참조하십시오.

쿼리 루프 방지

루프가 생성되지 않도록 하려면 다음 단계를 완료하십시오.

  1. Resolver 전달 규칙에서 VPC의 인바운드 엔드포인트를 가리키는 대상 IP 주소를 생성하지 마십시오.
  2. 엔드포인트를 프라이빗 호스팅 영역과 연결하지 마십시오.
  3. 동일한 Resolver 규칙을 VPC와 연결하지 마십시오.

쿼리 루프의 예:

ubuntu@ip-172-32-254-37:~$ dig overlap.privatevpc.local
;; ->>HEADER<<- opcode: QUERY, status: SERVFAIL, id: 9007
;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 0, ADDITIONAL: 1
;; QUESTION SECTION:
;overlap.privatevpc.local. IN A
;; Query time: 2941 msec
;; SERVER: 172.32.0.2#53(172.32.0.2)

이 문제를 해결하고 루프를 끊으려면 규칙을 사용하여 허브 VPC 연결을 제거합니다. 성공적인 응답의 예:

ubuntu@ip-172-32-254-37:~$ dig overlap.privatevpc.local
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 58606
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1
;overlap.privatevpc.local. IN A
;; ANSWER SECTION:
overlap.privatevpc.local. 0 IN A 50.1.1.1
;; Query time: 5 msec
;; SERVER: 172.32.0.2#53(172.32.0.2)

온프레미스 Resolver의 재귀 요청 전송 여부 확인

온프레미스에서 Route 53 Resolver로 전송되는 쿼리의 경우:

  • Resolver 인바운드 엔드포인트를 사용하여 DNS 쿼리를 전달합니다.
  • 온프레미스 Resolver에서 반복 쿼리가 아닌 재귀 쿼리를 전송하는지 확인하십시오.

확인 유형을 확인하려면 다음 단계를 완료하십시오.

  1. 온-프레미스 DNS Resolver에서 패킷 캡처를 사용합니다.
  2. DNS 플래그를 검토합니다(재귀 필요 = 0).
  3. +norecurse dig 명령으로 테스트하거나 nslookup으로 norecurse를 설정합니다.

실패한 반복 쿼리의 예:

[ec2-user@IAD-BAS-INSTANCE ~]$ dig @172.31.253.150 overlap.privatevpc.local +norecurse
;; <<>> DiG 9.11.0rc1 <<>> @172.31.253.150 overlap.privatevpc.local +norecurse; (1 server found)
;; global options: +cmd
;; connection timed out; no servers could be reached

성공적인 재귀 쿼리의 예:

[ec2-user@IAD-BAS-INSTANCE ~]$ dig @172.31.253.150 overlap.privatevpc.local
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 19051
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0
;; QUESTION SECTION:
;overlap.privatevpc.local.      IN      A
;; ANSWER SECTION:
overlap.privatevpc.local. 0     IN      A       50.1.1.1
;; Query time: 200 msec
;; SERVER: 172.31.253.150#53(172.31.253.150)

Amazon에서 제공하는 DNS의 규칙 우선 순위가 올바른지 확인

클라이언트 인스턴스가 Resolver에 쿼리를 전송하면 Resolver는 요청을 라우팅할 위치에 대한 인스턴스의 규칙을 확인합니다.

가장 구체적인 규칙이 우선합니다. 예를 들어 test.example.com Resolver 규칙과 test.example.com 프라이빗 호스팅 영역이 있다면, Resolver 규칙이 우선합니다. 쿼리는 규칙에 구성된 서버 또는 대상 IP 주소로 전달됩니다.

규칙이 동일한 도메인 수준에 있다면, 해당 규칙의 우선 순위는 다음과 같습니다.

  1. Resolver 규칙
  2. 프라이빗 호스팅 영역
  3. 내부 규칙

관련 정보

프라이빗 호스팅 영역 사용

프라이빗 호스팅 영역을 사용하려면 어떤 Amazon VPC 옵션을 활성화해야 하나요?

Resolver 엔드포인트를 사용한 루프 구성 방지