태터데스크 관리자

도움말
닫기
적용하기   첫페이지 만들기

태터데스크 메시지

저장하였습니다.
 

 
블로그 이미지
[www.netrain.co.kr]에서 네트워크/보안을 공부하시는 분들을 위해 서비스를 제공하는 블로그입니다 승진아빠
Follow silpir  on Twitter


DNS 서비스 파헤치기

네트워크 심화 | 2010.04.02 12:22 | Posted by 승진아빠

안녕하세요. 이경태입니다. 오늘은 다른 날보다 많이 피곤하군요.
6시간이 넘는 회의를 마치고 숨가쁘게 달려왔습니다. 빨리 교육센터가 자리잡아야 컨설팅 일을 좀 줄일 수 있을텐데 이것저것 다 하려니 체력이 바닥을 슬슬 드러내는군요. 영어 안되는 사람한테 해외 컨설팅 3년을 가라고 제안을 받아 정중히 거절 하려다가 내일 만나보자고 했습니다. ^^

저희 회사 직원들 다 가지 않으면 못간다고 했으니 저한테 떨어질 가능성은 높지 않아요. 만일, 가게 된다 하더라도 CCIE 과정 신청해 주신 분들은 무조건 CCIE 만들어 드리고 갈테니 걱정하지 마시고요, 해외 가 있어도 메일링은 계속될겁니다. ^^

하여튼 오늘은 DNS에 대해서 알아보도록 하겠습니다. DNS가 뭐죠? 'Name' 정보를 가지고, IP 주소를 가져오는 서비스가 DNS죠. 우리는 인터넷상의 모든 IP address를 다 기억할 수도 없고, 개인 PC에 저장해서 관리할 수도 없습니다. 그럼, DNS는 모든 IP address 정보를 다 가지고 있을까요? 그렇지 않습니다. 그럼 어떻게 IP address를 받아 올 수 있는건가요? 하나씩 알아보기로 하시죠!

■ Web-brower에 http://www.netrain.co.kr을 입력했습니다.

1. 자신의 'hosts file'에 등록되어 있는가를 확인합니다. 
윈도우 계열은 'hosts file'이 C:\Windows\System32\drivers\etc에 위치해 있습니다. 많은 회사에서 DNS 서비스 장애시에도 주요 업무서비스를 원할하게 운영할 수 있도록 하기 위하여, Client 프로그램 설치시나 PC관리서비스 등을 통하여 'hosts file'을 변경하기도 하죠.

2. 'hosts file'에 등록되어 있지 않으면 PC에 등록되어 있는 Local DNS 서버에게 Query를 보냅니다.
[Local DNS server]


[DNS Query]


마지막 줄에 www.netrain.co.kr에 대해 Query가 날아가시는 것을 확인하실 수 있습니다.
만약에 Local DNS의 cache에 해당 domain에 대한 정보가 기록되어 있다면 바로 정보를 전송하여 줍니다.

[DNS Query Reponse]


IP address가 '211.196.153.52'라는 군요. ^^ 그리고, 이렇게 DNS server와 clinet 사이에 통신을 할 경우에는 UDP 53번을 사용하게 됩니다.

3. 그럼, Local DNS server가 domain에 대한 정보를 모를 경우는 어떻게 될까요? 그런 경우에는 DNS Server는 Root DNS에게 문의를 합니다. Root DNS는 전세계 13개가 존재하는데 그 이유는 UDP를 사용하는 DNS Packet의 최대 size를 512byte로 제한하였는데 그 안에 넣을 수 있는 최대 정보가 13개이기 때문입니다.
 
만일 정보가 많아서 512byte를 넘는 경우는 DNS는 자동으로 TCP Port 53번을 통해서 다시 재전송을 하기 때문에 속도나 Resource 측면에서 문제가 되겠죠! 물론 PC와 Server 통신에서 보다는 DNS server간 통신에서 자주 발생하는 문제일 겁니다.

※ Root DNS 목록


그러면, Root DNS는 Level 1 domain인 'kr'을 담당하는 DNS server의 IP address를 Local DNS에게 알려줍니다. 그 다음 'kr'을 담당하는 DNS에게 Query를 던지면 Level 2인 'co.kr'를 담당하는 DNS server IP address를 Local DNS에게 알려줍니다. 그 다음에 또 질의를 하면 'netrain.co.kr'을 담당하는 DNS server IP address를 알려주게 되죠. 휴~ 복잡하군요.

현재는 이러한 복잡성을 단축시키기 위해 'co.kr'을 모두 'kr' DNS가 관리하여 한번에 던져주고 있습니다.

드디어 'netrian.co.kr'까지 왔습니다. 여기까지 찾은 것이 Public domain 주소입니다. 이제 그 집에 가서 sub-domain을 묻습니다. 마지막으로 'www.netrain.co.kr'이 누구냐고 물으면 최종적으로 IP address를 알려주게 되는 것입니다.

어렵지는 않으시죠? 요즘 DNS를 이용한 공격이 많으니 조심하세요. Network 엔지니어는 원리만 이해하면 되지만, 보안 담당자 분들은 각종 공격방법에 대응하는 방법도 아셔야 하잖아요. 원리는 저한테 물으세요. 공격방법은 인터넷에서 검색하시고요. 거기까지 공부할 시간이 없습니다. ^^

내일은 BGP에서 update 시간이 어떻게 진행되는지 LAB을 통하여 알아보도록 하겠습니다. ^^