Menu Close

DNS 동작 방식 3

DNS 동작 방식 3

 

기존에 PC에서 DNS 서버로의 요청에 대한 동작 방식을 확인 했습니다.

PC에서 DNS로의 질의 동작 방식

이번에는 Local DNS(여기서는 Caching Name Server 혹은 Cache Name Server로 표현)에서 각 Name Server로의 요청은 어떻게 동작하는지 확인 해 보겠습니다.

 

테스트 환경

PC : Windows 10

PC 1차 DNS : bind 9.9.4 – caching only name server

PC의 DNS 질의가 한 곳으로 요청되게 하기 위해 1차  DNS만 설정하였습니다.

 

PC에서 Caching Name Server로 요청하면 진행되는 동작에 대해 확인해 보겠습니다.

PC에서 Caching Name Server로 naver.com에 대하여 질의를 하였습니다.

naver_first_request
<그림 1>

Caching Name Server는 <그림 1>와 같이 Root DNS 부터 순차적 질의를 통해서 최종적으로 naver.com 의 A Recode 값을 PC에 전달 해 줍니다.

 

naver_caching
<그림 2>

Caching Name Server는 <그림 2>와 같이 응답 받은 내용에 대하여 Caching을 하여, 그 후의 요청에 대해서는 Root DNS 부터 순차적 질의를 하지 않고 알고 있는 정보를 바로 보내줍니다.

 

naver_caching_timeout
<그림 3>

Caching Name Server는 요청이 들어왔을 때 Caching time 이 초과되면 <그림 3>와 같이 Root DNS 부터 다시 순차적 질의를 합니다.

naverttl naver_changettl
<그림 4> <그림 5>

<그림 4>는 ns1.naver.com에서 받은 정보로서 중간에 Time to live(이후 TTL) 값이 300초입니다.

<그림 5>는 Caching Name Server에서 PC로 응답해주는 값으로 TTL 값이 5초입니다.

ns1.naver.com에서 받은 TTL값과 Caching Name Server에서 보내주는 TTL 값이 다른 이유는 Caching Name Server에서의 Max Caching Timeout 값이 5초로 설정되어 있기 때문입니다.

이 말은, Caching Name Server는 응답받은 값의 TTL이 아무리 커도 최대 5초만 caching 한다는 말입니다.

이 부분은 제가 테스트를 위해 짧은 시간으로 줄인 것으로, Caching Timeout값은 응답받은 TTL값에 따라 달라지며, Default Max Caching Timeout 값은 7일 입니다.

이에 대한 자료는 아래에서 발췌 했습니다.

max-cache-ttl
(http://www.zytrax.com/books/dns/ch7/hkpng.html)

 


 

이번에는 NS 값이 여러개 일 때 Caching Name Server 가 어떻게 요청하는지 확인 해 보겠습니다.

google_ns
<그림 6>

<그림 6>와 같이 Name Server 가 4개인 google.com의 도메인들에 대해서 요청을 해 보겠습니다.

 

google_dns_query
<그림 7>

Caching Name Server는 <그림 7>처럼 자신에게 Caching 되지 않은 도메인 주소에 대한 요청이 들어올 때마다 google.com의 Name Server에 요청을 하며, Name Server는 100% 정확하게는 아니지만 돌아가면서 요청을 하는 것을 볼 수 있습니다.

 

지금까지의 테스트를 보았을 때 Caching Name Server 는 Root DNS 부터 Authoritative Name Server(아래에 설명)까지

A Recode 값을 응답 받을 때 까지 순차질의를 통해 정보를 확인 후 Client 에 응답 해 줍니다.

이 때 확인 된 정보는 TTL값( MAX 7일 )에 따른 Caching 을 하며, Caching timeout 이전에는 caching 된 정보를 바로 응답해 줍니다.

Caching Name Server는 자신이 알고있는 Authoritative Name Server 의 도메인(서브도메인)에 대한 요청이 들어올 경우

authoritative Name Server에 돌아가면서 요청을 합니다.

 

기본적으로 Name Server를 만들 때 1차, 2차 Name Server를 구성하면 1차, 2차란 단어 때문에 1차에 질의가 올 것이라고 대부분 생각하게 됩니다.

그러나 <그림 7>와 같이 테스트 결과 1차, 2차 상관없이 돌아가며 요청이 오게 되므로, 서버를 구성시 동일한 스펙으로 해야 할 것을 확인 할 수 있습니다.

 


 

마지막으로,

지금까지 확인 한 것에서 특이한 점이 있습니다.

Caching Name Server는 A Recode 까지 응답을 받아서 Client로 보내줍니다.

그러나 Root Name Server, TLD(Top-Level Domain 이하 TLD) Name Server( com, net, dev 등) 는 다른 Name Server 의 정보를 보내줍니다.

같은 Name Server 인데 왜 동작 방식이 다를까요?

 

이유는 Name Server의 동작이 Recursive이냐 iterative 이냐의 차이 입니다.

Recursive 동작 방식의 Name Server는 Caching Name Server 처럼 본인이 A Recode 혹은 마지막까지 질의 요청 후 값을 응답해 줍니다.

Iterative 동작 방식의 Name Server는 Root Name Server, TLD Name Server 처럼 자신이 직접 관리하지 않는 질의 요청이 있을 시 응답이 가능한 NS목록을 응답해 줍니다.

(예: Root Name Server에 google.com에 대해 질의 시 .com Name Server 정보를 알려주며,

.com Name Server 에 google.com을 질의하면 google.com Name Server 목록을 응답해 줍니다.)

 


 

Cache Name Server랑 Name Server를 다르게 보는 경우가 있습니다.

PC에 설정되는 Name Server는 Cache Name Server로 Name Server랑 다르다고 하는 경우가 있습니다.

그런데 Caching Name Server도 Name Server의 동작 방식 중 한 종류 입니다.

Name Server는 Root Name Server, TLD Name Server, Authoritative Name Server, Cache Name Server(Resolver, Recursive로 표현 하기도 함) 등으로 분류 됩니다.

Root Name Server는 최상위 도메인이며, TLD는 com, kr, net, dev 같은 도메인에 대한 Name Server 입니다.

authoritative Name Server 는 도메인에 대한 정보(도메인에 대한 IP정보)가 있는 서버로서 일반적으로 이야기 하는 Name Server 입니다.

Cache Name Server는 도메인에 대한 정보가 없으며 다른 Name Server에 요청하여 응답을 받고 caching 하며 Client에 응답해 주는 Name Server 입니다.

Name Server Resolver 혹은 Recursive Name Server 모두 재귀적 질의를 해 주는 Name Server로  이 서버들에 Cache 기능을 올리면 Cache Name Server로 동작하게 됩니다.

한마디로 불려지는 이름만 조금씩 다를 뿐 하는 동작은 비슷합니다.

 

그럼 PC에 설정되는 DNS 는 Cache Name Server만 가능하냐?

아닙니다. Authoritative Name Server가 Recursion 이 허용되어 있다면 설정이 가능합니다.

그렇다고 Authoritative Name Server 가 Name Server가 아닌 Cache Name Server가 되는 것이 아니며, 자신이 가지고 있는 도메인에 대해서는 Authoritative Name Server로 동작을 하고 자신이 가지고 있는 않는 도메인에 대해서는 Cache Name Server로 동작하는 것 뿐입니다.

간단한 예로 내부 시스템에 Name Server를 따로 구비하고 있습니다.

Name Server에는 회사가 보유한 도메인에 대한 존 파일 정보가 다 들어가 있으며, 회사 PC들은 DNS 질의를 무조건 내부 Name Server를 통해서 하게 되어 있습니다.

이러한 경우 내부 Name Server는 Authoritative Name Server가 될 수도, Cache Name Server 가 될 수도 있는 겁니다.

 

Cache Name Server 는 도메인 정보가 없는데 어떻게 Root DNS를 찾아갈까요?

기본적으로 Name Server로 동작을 하는 서버들은 . (Root Name Server)에 대한 IP 정보 존 파일이 있습니다.

그리하여 요청이 들어올 시 자신의 가지고 있는 존 파일 정보를 확인하여 Root Name Server에 질의 요청 합니다.

 

댓글 남기기

이메일은 공개되지 않습니다. 필수 입력창은 * 로 표시되어 있습니다

This site uses Akismet to reduce spam. Learn how your comment data is processed.