강좌
클라우드/리눅스에 관한 강좌입니다.
리눅스 분류

도메인 네임서버(DNS)란 무엇인가?

작성자 정보

  • 관리자 작성
  • 작성일

컨텐츠 정보

본문

도메인 네임서버(DNS)란 무엇인가?

 

 

 

 

 

 

지금까지 말씀드린 도메인들에 대한 IP주소 질의서비스, 또는 반대로 IP주소에 대한 도메인 질의서비스하는 서버를 우리는 네임서버, 다른말로 DNS(Domain Name System)라고 한다.

 

 

 

 

  우리는 이번 장에서는 리눅스를 DNS서버로 구축하고 이를 관리하는 방법에 대해서 배울 것이다.

 

 

 

 

 이와같은 네임서버 구축관리를 위하여 리눅스에는 BIND라는 패키지를 사용한다.

 

 

 

 

 대부분의 경우 리눅스를 설치할 때에 BIND패키지를 설치한다.

 

 

 

 

 사실 너무나 싱거운 얘기지만 BIND패키지만 설치하면 리눅스는 DNS서버가 되어버린다.

 

 

 

 

  하지만 BIND를 관리하는 방법은 그렇게 만만하지 않다.

 

 

 

 

 도메인과 도메인쿼리, 그리고 쿼리방법과 zone파일등에 대하여 정확하게 이해해야만 효율적인 관리를 할 수 있기 때문이다.

 

 

 

 

 

 

말씀한 바와같이 DNS는 한마디로 도메인이름에 대한 IP주소를 알려주고 또는 IP주소에 대한 도메인이름을 알려주는 시스템이라고 정의할 수 있다.

 

 

 

 

 

 

그렇다면 왜 이런 시스템이 필요할까?

 

이에 대해서 리눅스시스템의 관점에서 살펴보도록 하자. 먼저 다음 예를 보도록하겠다.

 

 

 

 

 

 

DNS가 없던 아주 옛날 즉 DNS라는 개념자체가 생기기 이전에는 모든 서버의 /etc/hosts 파일에는 아래와 같은 형식으로 domain IP주소의 짝을 직접 등록하여 도메인에 대한 IP주소를 찾아가도록하였다.

 

 

 

 

 

 

127.0.0.1                           localhost.localdomain localhost

192.168.0.100                      www

192.168.0.101                      bbs

192.168.0.102                      ftp

 

 

 

 

따라서 서버를 사용하고있는 모든 사용자들이 자기가 사용하는 서버내에 모든 도메인들에 대한 각각의 IP주소를 위와 같이 등록해주어야 했다.

 

 

 

 

  이때에도 메인서버가 있었는데 이 메인서버가 하는 역할은 아주 단순하였다.

 

 

 

 

 

① 각각의 호스트들은 메인서버의 /etc/hosts파일을 가져와서 자기의 /etc/hosts파일에 복사하여 도메인들에 대한 IP주소를 자기 서버내에있는 /etc/hosts파일에서 인식하였다.

 

 

 

 

 

② 각각의 호스트들은 자기자신의 호스트정보나 IP주소값이 바뀌게되면 메인서버에게 알려서 메인서버의 /etc/hosts파일에 있는 자기자신에 대한 변경정보를 수정케하였다.

 

 

 

 

 

③ 이렇게 하여 모든 호스트들은 메인서버의 /etc/hosts파일을 가져와서 사용하므로 도메인과 IP주소를 인식하였던 것이다.

 

 

 

 

 

 

이와 같이 사용하는 호스트수가 많지 않았던 옛날에는 이런 작업들이 어렵지않게 느껴졌으나, 도메인의 수와 IP주소의 개수가 점점 많아지다 보니 이런 작업이 어려워졌다.

 

 

 

 

 즉 매일매일 변경되는 도메인정보가 수없이 발생하게 되고 이에 따라서 모든 호스트들은 거의 매일 메인서버에 있는 /etc/hosts파일을 가져와야만 정확한 도메인정보와 IP정보를 인식할 수 있게되었다.

 

 

 

 

 이 작업이 번거롭게되고 다른 방법을 찾는 과정에서 네임서버(DNS)라는 것을 만들게 된 것이다.

 

 

 

 

 

 

즉 변경 및 추가되는 도메인과 IP정보들을 DNS서버에만 등록해두고 이 정보를 필요로 하는 각 호스트들은 다른 호스트의 IP정보나 도메인정보를 확인하고자 할 때마다 자기자신의 /etc/hosts 파일내에 존재하지 않은 정보에 대해서는 매번 DNS서버에게 물어서(이를 DNS쿼리, query라고 함) 사용하게된 것이다.

 

 

 

 

 

즉 모든 호스트 또는 시스템(서버)들은 어떤 도메인에 대한 IP주소를 확인하고자 할 때에 다음 두가지 단계를 거쳐서 알아낸다.

 

 

 

 

 

첫번째 자기자신의 /etc/hosts파일내에 그 도메인정보가 있을 경우에는 /etc/hosts파일에 있는 정보를 사용한다.

 

 

 

 

 만약 여기서 원하는 도메인에 대한 IP정보를 찾았다면 아래 두번째는 생략된다.

 

 

 

 



두번째 /etc/hosts파일내에 그 도메인에 대한 정보가 없을 경우에는 자기자신의 서버에서 /etc/resolv.conf파일내에 “nameserver 168.126.63.1”과 같이 지정되어있는 DNS서버에게 문의하여(이를 DNS쿼리라고함.) 알아낸다.

 

 

 

 

 

물론 서버뿐아니라 윈도우시스템의 경우에도 마찬가지이다.

 

 

 

 

 윈도우시스템에도 hosts파일이 있으며 TCP/IP등록정보에 보면 DNS정보가 있다.

 

 

 

 

 인터넷망을 사용하는 모든서버와 PC에서 이와같은 방법으로 도메인과 IP정보를 사용한다.

 

 

 

 

 

결론적으로 모든 서버와 PC들은 반드시 DNS라는 네임서버를 사용해야만 www.linux.co.kr등과 같은 도메인에 대한 IP주소를 인식하게 되고 홈페이지를 찾아갈 수 있는 것이다.

 

 

 

 

 홈페이지뿐 아니라 Email, FTP, 채팅등을 할 때에도 DNS는 사용된다.

 

 

 

 

 이런 DNS서버를 우리가 지금 배우고자하는 것이다.

 

 

 

 

 DNS의 개념과 필요성에 대하여 너무 지루하게 설명한 것 같지만 사실은 개념과 필요성을 느껴야만 배우고자하는 의욕과 집중력이 향상될 수 있다.

 

 

 

 

 

 

그렇다면 DNS는 어떻게 구현할 수 있을까?  앞에서 잠깐 언급하였듯이 이러한 DNS역할을 수행하게 해주는 프로그램이 있다.

 

 

 

 

 가장 흔히 사용되는 것으로 BIND(Berkeley Internet Name Domain)라는 것이있다.

 

 

 

 

 현재 가장 많은 DNS솔루션으로 이 BIND가 사용되고있다.

 

 

 

 

  

 

참고로 다음은 BIND의 공식홈페이지인 http://www.isc.org이다.

 

 

 

 

 

 

887a749963dafa6fbcb8db481434443d_1689037461_3513.jpg
 

 

 

 

 

 

 

이제부터 BIND의 설치방법과 BIND설치후에 네임서버를 관리하기 위한 여러가지 실무적인 방법들에 대해서 알아보도록하겠다.

 

 

 

 

 


관련자료

댓글 0
등록된 댓글이 없습니다.

공지사항


뉴스광장


  • 현재 회원수 :  60,037 명
  • 현재 강좌수 :  35,806 개
  • 현재 접속자 :  98 명