Help us improve the AWS re:Post Knowledge Center by sharing your feedback in a brief survey. Your input can influence how we create and update our content to better support your AWS journey.
DNS는 어떻게 작동하며 부분적이거나 간헐적인 DNS 장애는 어떻게 해결합니까?
부분적 또는 간헐적인 DNS 장애 문제를 해결하고 싶습니다.
해결 방법
DNS 개요
DNS는 기억하기 쉬운 이름(예: www.example.com)을 192.0.2.1과 같은 숫자 IP 주소로 변환한 다음, 사용자를 인터넷 애플리케이션으로 라우팅합니다. 이 프로세스를 ‘DNS 확인’이라고 합니다. 자세한 내용은 DNS란 무엇입니까?를 참조하십시오.
부분적, 일시적 또는 간헐적 DNS 장애 시나리오
경우에 따라 클라이언트에서 단기간 또는 간헐적으로 DNS 장애가 발생합니다. 다음은 부분적 DNS 장애를 일으킬 수 있는 일반적인 시나리오입니다.
등록 기관에서 잘못 구성한 이름 서버
등록 기관에서 하나 이상의 이름 서버를 잘못 구성한 경우가 있습니다. whois를 검색해 도메인 등록자에 구성된 이름 서버를 찾을 수 있습니다. DNS 확인 중에 등록된 이름 서버가 예상치 못한 정보로 응답하거나 응답하지 않으면 로컬 확인자가 SERVFAIL 메시지를 반환합니다. 경우에 따라 로컬 확인자가 잘못 구성되지 않은 다른 이름 서버로 요청을 시도할 수 있습니다. 이렇게 하면 예상 DNS 응답을 받습니다.
또한 로컬 확인자는 TTL 시간 동안 잘못된 이름 서버를 캐시하고 잘못 구성된 이름 서버에 다음 쿼리를 보낼 수 있습니다.
호스팅 영역에 이름 서버가 변경됨
도메인의 NS 레코드가 호스팅 영역에서 잘못 구성된 경우 부분적인 DNS 장애가 발생할 수 있습니다. 기존 이름 서버가 업데이트되었거나 NS 레코드 값에 일부 추가 이름 서버가 더해진 것입니다. 확인자가 잘못된 이름 서버를 사용하여 도메인을 확인하려고 하면 부분적인 DNS 장애가 발생할 수 있습니다.
클라이언트의 DNS 확인자가 도메인을 확인할 수 없음
Linux의 resolv.conf와 같이 확인자 구성 파일에 잘못된 확인자가 설정되는 경우가 있습니다. Amazon Virtual Private Cloud(Amazon VPC)의 Amazon Elastic Compute Cloud(Amazon EC2) 인스턴스에서 도메인을 확인하면 EC2 인스턴스가 resolv.conf에 정의된 이름 서버를 사용합니다.
Amazon에서 DNS 쿼리를 제한하는 DNS 서버를 제공함
Amazon에서 제공하는 DNS 서버는 1,024개의 패킷 제한을 적용합니다(탄력적 네트워크 인터페이스별 초당 기준). Amazon에서 제공하는 DNS 서버는 이 한도를 초과하는 모든 트래픽을 거부합니다. 이 DNS 스로틀링으로 인해 DNS 타임아웃이 간헐적으로 발생할 수 있습니다. 이 문제를 해결하려면 인스턴스에서 캐싱을 켜거나 애플리케이션의 DNS 재시도 타이머를 늘리십시오.
도메인 URL이 인터넷에서 확인되지만 EC2 인스턴스에서는 확인되지 않음
다음 작업을 완료하면 도메인의 DNS 쿼리가 항상 프라이빗 호스팅 영역에서 확인됩니다.
- 내 도메인과 같은 이름으로 프라이빗 호스팅 영역을 생성합니다.
- VPC를 프라이빗 호스팅 영역 및 AmazonProvidedDNS로 구성된 VPC DHCP 옵션에 연결합니다.
도메인에 쿼리된 레코드가 프라이빗 호스팅 영역에 없는 경우 DNS 쿼리가 실패합니다. 또한 DNS 쿼리는 퍼블릭 도메인으로 전달되지 않습니다. DNS 레코드는 퍼블릭 도메인 영역에 있기 때문에 인터넷에서 확인됩니다.
Route 53에서 잘못 구성된 DNS 방화벽 규칙
도메인에 다음 중 하나라도 해당하는 경우 Amazon Route 53 DNS 방화벽이 도메인에 구성되어 있는지 확인하십시오.
- 인터넷에서 확인
- 퍼블릭 확인자(즉, 확인자 IP로 1.1.1.1 또는 8.8.8.8)를 통해 확인
- 가상 프라이빗 서버(VPS)에서 확인되지 않음
잘못 구성된 Route 53 Resolver 엔드포인트
Route 53 Resolver 아웃바운드 엔드포인트 및 확인자 규칙은 특정 DNS 쿼리를 온프레미스 DNS 서버로 전송하도록 구성할 수 있습니다. Route 53 엔드포인트, 확인자 규칙 및 온프레미스 DNS 서버가 올바르게 구성되어 있는지 확인하십시오. 자세한 내용은 Route 53 Resolver 엔드포인트의 DNS 확인 문제를 해결하려면 어떻게 해야 합니까?를 참조하십시오.
Linux 기반 운영 체제에서 DNS 장애 문제 해결
dig 명령을 사용해 호스트의 /etc/resolv.conf 파일에 구성된 클라이언트 DNS 서버를 검색합니다.
$ dig www.amazon.com ; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.37.rc1.49.amzn1 <<>> www.amazon.com ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 13150 ;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0 ;; QUESTION SECTION: ;www.amazon.com. IN A ;; ANSWER SECTION: www.amazon.com. 41 IN A 54.239.17.6 ;; Query time: 1 msec ;; SERVER: 10.108.0.2#53(10.108.0.2) ;; WHEN: Fri Oct 21 21:43:11 2016 ;; MSG SIZE rcvd: 48
위 예시의 응답 섹션에서 54.239.17.6이 www.amazon.com의 HTTP 서버 IP 주소임을 알 수 있습니다. +trace 변수를 추가하면 dig 명령으로 DNS 레코드의 재귀 조회를 수행할 수도 있습니다. 다음은 +trace 변수를 사용하는 dig 명령의 예입니다.
$ dig +trace www.amazon.com ; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.37.rc1.49.amzn1 <<>> +trace www.amazon.com ;; global options: +cmd . 518400 IN NS J.ROOT-SERVERS.NET. . 518400 IN NS K.ROOT-SERVERS.NET. . 518400 IN NS L.ROOT-SERVERS.NET. ... ;; Received 508 bytes from 10.108.0.2#53(10.108.0.2) in 31 ms com. 172800 IN NS a.gtld-servers.net. com. 172800 IN NS b.gtld-servers.net. com. 172800 IN NS c.gtld-servers.net. ... ;; Received 492 bytes from 193.0.14.129#53(193.0.14.129) in 93 ms amazon.com. 172800 IN NS pdns1.ultradns.net. amazon.com. 172800 IN NS pdns6.ultradns.co.uk. ... ;; Received 289 bytes from 192.33.14.30#53(192.33.14.30) in 201 ms www.amazon.com. 900 IN NS ns-1019.awsdns-63.net. www.amazon.com. 900 IN NS ns-1568.awsdns-04.co.uk. www.amazon.com. 900 IN NS ns-277.awsdns-34.com. ... ;; Received 170 bytes from 204.74.108.1#53(204.74.108.1) in 87 ms www.amazon.com. 60 IN A 54.239.26.128 www.amazon.com. 1800 IN NS ns-1019.awsdns-63.net. www.amazon.com. 1800 IN NS ns-1178.awsdns-19.org. ... ;; Received 186 bytes from 205.251.195.251#53(205.251.195.251) in 7 ms
이름 서버만 반환하는 쿼리를 수행할 수도 있습니다.
$ dig -t NS www.amazon.com ; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.37.rc1.49.amzn1 <<>> -t NS www.amazon.com ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 48631 ;; flags: qr rd ra; QUERY: 1, ANSWER: 4, AUTHORITY: 0, ADDITIONAL: 0 ;; QUESTION SECTION: ;www.amazon.com. IN NS ;; ANSWER SECTION: www.amazon.com. 490 IN NS ns-1019.awsdns-63.net. www.amazon.com. 490 IN NS ns-1178.awsdns-19.org. www.amazon.com. 490 IN NS ns-1568.awsdns-04.co.uk. www.amazon.com. 490 IN NS ns-277.awsdns-34.com. ;; Query time: 0 msec ;; SERVER: 10.108.0.2#53(10.108.0.2) ;; WHEN: Fri Oct 21 21:48:20 2016 ;; MSG SIZE rcvd: 170
위의 예시에서 www.amazon.com에는 신뢰할 수 있는 이름 서버로 다음 네 개가 있습니다.
- ns-1019.awsdns-63.net.
- ns-1178.awsdns-19.org.
- ns-1568.awsdns-04.co.uk.
- ns-277.awsdns-34.com.
이 네 서버 중 어느 것이든 www.amazon.com 호스트 이름에 관한 질문에 신뢰할 수 있는 답변을 제공할 수 있습니다. dig 명령을 사용하여 특정 이름 서버를 직접 대상으로 지정할 수 있습니다. 특정 도메인의 모든 권한 있는 이름 서버가 올바르게 응답하는지 확인합니다.
다음은 신뢰할 수 있는 이름 서버(ns-1019.awsdns-63.net) 중 하나의 www.amazon.com 쿼리 예제 출력입니다. 서버 응답에 따르면 www.amazon.com은 54.239.25.192에서 사용할 수 있습니다.
$ dig www.amazon.com @ns-1019.awsdns-63.net.; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.37.rc1.49.amzn1 <<>> www.amazon.com @ns-1019.awsdns-63.net. ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 31712 ;; flags: qr aa rd; QUERY: 1, ANSWER: 1, AUTHORITY: 4, ADDITIONAL: 0 ;; WARNING: recursion requested but not available ;; QUESTION SECTION: ;www.amazon.com. IN A ;; ANSWER SECTION: www.amazon.com. 60 IN A 54.239.25.192 ;; AUTHORITY SECTION: www.amazon.com. 1800 IN NS ns-1019.awsdns-63.net. www.amazon.com. 1800 IN NS ns-1178.awsdns-19.org. www.amazon.com. 1800 IN NS ns-1568.awsdns-04.co.uk. ... ;; Query time: 7 msec ;; SERVER: 205.251.195.251#53(205.251.195.251) ;; WHEN: Fri Oct 21 21:50:00 2016 ;; MSG SIZE rcvd: 186
다음 줄은 ns-576.awsdns-08.net이 amazon.com의 신뢰할 수 있는 이름 서버임을 보여줍니다.
;; flags: qr aa rd; QUERY: 1, ANSWER: 1, AUTHORITY: 4, ADDITIONAL: 0
aa 플래그가 있으면 ns-1019.awsdns-63.net 이름 서버가 www.amazon.com 리소스 레코드에 신뢰할 수 있는 응답을 제공했음을 나타냅니다.
Windows 기반 운영 체제에서 DNS 장애 문제 해결
nslookup 유틸리티를 사용하여 호스트 이름과 연결된 IP 주소를 반환합니다.
C:\>nslookup www.amazon.comServer: ip-10-20-0-2.ec2.internal Address: 10.20.0.2 Non-authoritative answer: Name: www.amazon.com Address: 54.239.25.192
nslookup 유틸리티를 사용하여 호스트 이름의 신뢰할 수 있는 이름 서버를 확인하려면 -type=NS 플래그를 사용합니다.
C:\>nslookup -type=NS www.amazon.comServer: ip-10-20-0-2.ec2.internal Address: 10.20.0.2 Non-authoritative answer: www.amazon.com nameserver = ns-277.awsdns-34.com www.amazon.com nameserver = ns-1019.awsdns-63.net www.amazon.com nameserver = ns-1178.awsdns-19.org ...
www.amazon.com의 ns-277.awsdns-34.com이 www.amazon.com 요청에 올바르게 응답하는지 확인하려면 다음 구문을 사용하십시오.
C:\>nslookup www.amazon.com ns-277.awsdns-34.comServer: UnKnown Address: 205.251.193.21 Name: www.amazon.com Address: 54.239.25.200
- 언어
- 한국어
