DNS 동작 방식 3편
DNS 동작 방식 3편
DNS 동작 방식 2편 | Umount Blog 에서는 PC 에서 DNS 서버로의 요청에 대한 동작 방식을 확인 해 보았습니다. 이번에 Local DNS(여기서는 Caching NameServer 혹은 Cache NameServer 로 표현)에서 각 NameServer 로의 요청은 어떻게 동작하는지 확인 해 보겠습니다.
테스트 환경
PC : Windows 10
PC 1차 DNS : bind 9.9.4 – caching only nameserver
PC의 DNS 질의가 한 곳으로 요청되게 하기 위해 1차 DNS만 설정하였습니다.
테스트
PC 에서 Caching NameServer 로 요청하면 진행되는 동작
PC 에서 Caching NameServer 로 naver.com 도메인으로 질의를 해 보았습니다.
Caching NameServer는 <그림 1>와 같이 Root DNS 부터 순차적 질의를 통해서 최종적으로 naver.com 의 A Recode 값을 PC에 전달 해 줍니다.

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

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

<그림 4>는 ns1.naver.com 에서 받은 정보로서 중간에 Time to live(이후 TTL) 값이 300초입니다. <그림 5>는 Caching NameServer 에서 PC 로 응답해주는 값으로, TTL 값이 5초입니다.
ns1.naver.com 에서 받은 TTL 값과 Caching NameServer 에서 보내주는 TTL 값이 다른 이유는 Caching NameServer 에서의 Max Caching Timeout 값이 5초로 설정되어 있기 때문입니다. Caching NameServer 는 응답받은 값의 TTL 이 아무리 커도 최대 5초만 caching 하기 때문입니다.
이 부분은 제가 테스트를 위해 짧은 시간으로 줄인 것으로, Caching Timeout 값은 응답받은 TTL 값에 따라 달라지며, Default Max Caching Timeout 값은 7일 입니다.


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

NS 값이 여러 개 일때 Caching NameServer 동작
이번에는 NS 값이 여러 개 일때 Caching NameServer 가 어떻게 요청하는지 확인 해 보겠습니다.
<그림 6>와 같이 NameServer 가 4개인 google.com 의 도메인들에 대해서 요청을 해 보겠습니다.

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

결론
지금까지의 테스트를 보면 Caching NameServer 는 Root DNS 부터 Authoritative NameServer 까지 A Recode 값을 응답 받을 때 까지 순차 질의를 통해 정보를 확인 후 Client 에 응답 해 줍니다.
이 때 확인 된 정보는 TTL 값에 따른 Caching 을 하며, Caching timeout 이전에는 caching 된 정보를 바로 응답해 줍니다.
Caching NameServer 는 자신이 알고 있는 Authoritative NameServer 의 도메인(서브도메인)에 대한 요청이 들어올 경우 authoritative NameServer 에 돌아가면서 요청을 합니다. 그러므로 서버를 구성 시 동일한 스펙으로 해야 할 것을 확인 할 수 있습니다.
지금까지 확인 한 것에서 특이점이 있습니다. Caching NameServer 는 A Recode 까지 응답을 받아서 Client 로 보내줍니다. 그러나 Root 및 TLD(Top-Level Domain 이하 TLD) NameServer 는 다른 NameServer 의 정보를 보내줍니다.
같은 NameServer 인데 왜 동작 방식이 다를까요? 이유는 NameServer 의 동작이 Recursive 이냐 iterative 이냐의 차이 입니다.
- Recursive 동작 방식은 Caching NameServer 처럼 본인이 A Recode 혹은 마지막까지 질의 요청 후 값을 응답해 줍니다.
- Iterative 동작 방식은 Root 또는 TLD NameServer 처럼 자신이 직접 관리하지 않는 질의 요청이 있을 시 응답이 가능한 NS 목록을 응답해 줍니다.
예를 들어 Root NameServer 에 google.com 에 대해 질의 시 .com NameServer 정보를 알려주며 .com NameServer 에 google.com 을 질의하면 google.com NameServer 목록을 응답해 줍니다.
추가 사항 1
PC 에 설정되는 NameServer 는 Cache NameServer 이며 NameServer 와 다르다고 하는 경우가 있습니다. 하지만 Caching NameServer 도 결국 NameServer 의 동작 방식 중 한 종류 입니다.
NameServer 는 Root, TLD, Authoritative, Cache(Resolver 혹은 Recursive 로 표현 하기도 함) NameServer 등으로 분류 됩니다.
불려지는 이름만 조금씩 다를 뿐 하는 동작은 비슷합니다.
- Root NameServer 는 최상위 도메인이며, TLD 는 com, kr 등에 대한 NameServer 입니다.
- authoritative NameServer 는 도메인에 대한 정보(도메인에 대한 IP정보)가 있는 서버로써, 일반적으로 이야기 하는 NameServer 입니다.
- Cache NameServer 는 도메인에 대한 정보가 없으며 다른 NameServer 에 요청하여 응답을 받고 caching 하며 Client에 응답해 주는 NameServer 입니다.
- NameServer Resolver 혹은 Recursive NameServer 모두 재귀적 질의를 해 주는 NameServer 로, 이 서버들에 Cache 기능을 올리면 Cache NameServer 로 동작하게 됩니다.
추가 사항 2
그럼 PC에 설정되는 DNS 는 Cache NameServer 만 가능하냐? 아닙니다. Authoritative NameServer 가 Recursion 이 허용되어 있다면 설정이 가능합니다. 자신이 가지고 있는 도메인에 대해서는 Authoritative NameServer 로 동작을 하고 자신이 가지고 있는 않는 도메인에 대해서는 Cache NameServer 로 동작하는 것 뿐입니다.
간단한 예로 내부 시스템에 NameServer 를 따로 구비하고 있습니다. NameServer 에는 회사가 보유한 도메인에 대한 존 파일 정보가 다 들어가 있으며, 회사 PC 들은 DNS 질의를 무조건 내부 NameServer 를 통해서 하게 되어 있습니다. 이러한 경우 내부 NameServer 는 Authoritative NameServer 가 될 수도, Cache NameServer 가 될 수도 있는 겁니다.
Cache NameServer 는 도메인 정보가 없는데 어떻게 Root DNS 를 찾아갈까요? 기본적으로 NameServer 로 동작을 하는 서버들은 .(Root NameServer)에 대한 IP 정보 존 파일이 있기 때문에 요청이 들어올 시 자신의 가지고 있는 존 파일 정보를 확인하여 Root NameServer 에 질의 요청 합니다.