본문 바로가기

Foundation/- Linux

네임서버(DNS)

DNS네임서버란 .?

 

도메인 이름을 IP주소로 변환 시켜주는 역할을한다. 컴퓨터가 몇대 없던 시절 IP주소를 외워 EX)1.1.1.1 2.2.2.2 ... 9.9.9.9 직접 입력했다.

하지만 컴퓨터가 더 많아지면서 hosts파일에 IP주소와 URL주소를 매칭시켜 저장하여 사용했다. 예를 들어 친구가 1~2명 밖에없을때는 번호를 그냥 외워 사용하지만 10명이넘어가면 외우기 힘들기때문에 번호를 핸드폰에 저장하는 이치다. 하지만 현재 인터넷을 이용자는 IP주소가 동일 날 정도로 많고 hosts파일에 저장하는 것도 무리가있다. 그래서 114가 모든 전화번호를 알려주는 것 처럼  모든 URL주소를 아이피로 바꿔주는 역할이 DNS네임서버이다.

 

질의 순서 .?

 

인터넷에 www.nate.com을 입력하면 먼저

1). 로컬 DNS CACHE를 확인한다. DNS CACHE를 확인하는 방법은 다음과 같다. 

ipconfig /displaydns (cache dns 확인)

ipconfig /flushdns (cache 목록 초기화)

 

 

2) /etc/hosts 파일

window의 경우에는 C:\windows\system32\drivers\etc 파일에 hosts 파일과 hosts.ics 파일이 있다. host파일 보다 host.ics를 우선으로 체크하는 것에 유의하자.

 

3). /etc/hosts파일에 해당 IP주소와 URL이 없다면, 다음으로 DNS서버가 설정되어있는지확인한다. /etc/resolve.conf 파일에서 확인 할 수 있다.

만약여기서 vi 편집을통해 nameserver을 #(주석)처리한다면 아무리 URL주소를 입력해도 해당 사이트에 접속이 불가능한 것을 볼 수있고

#nslookup // 네임서버를 테스트하는 명령어

이 명령어를 통해 원하는 사이트 아이피주소를 입력하고 들어가면 접속이 되는 것을 확인 할 수 있다.

이처럼 우리가 IP주소를 물어보는 서버컴퓨터를 이름 관리 전용 컴퓨터 즉, 네임 서버라고하는데 처음에는 네임 서버가 하나로도 충분히 가능했다. 하지만 인터넷이 폭발적으로 확장되면서 컴퓨터는 기하급수적으로 늘어났고 몇대의 네임 서버로는 관리가 되지않았다. 그래서 트리 구조 형태의 도메인 이름 체계가 고안되었다. 사진을보면 다음과 같다.

 

 

 

예를 들어 www.nate.com에 접속한다고 가정한다면 도메인이름은 뒤에서 부터 읽는 것이 맞다. 로컬 네임 서버가 동작하는 순서는 다음과 같다. 각각의 로컬 네임 서버는 사실 아는 것이 그렇게 많지가 않다. 그래서 최상위 루트부터해서 물어보는 식으로 내려오게 된다.

Recursive/cache/Resolving DNS NameServer - 관리하는/위임받은 도메인 없이 사용자 호스트의 요청이 들어오면, 자신의 캐시에 저장된 정보 또는 반복적 질의(iterative Query)를 통해 그 결과를 사용자 호스트에 응답해주는 네임 서버이다. (보통 ISP업체에서 제공한다.)

Authoritative NameServer - 관리하는/위임받은 도메인을 가지고 있는 네임서버이다. 특정 도메인에 대한 정보를 관리하면서 해당 도메인에 대한 질의에만 응답해주는 네임서버를 말한다.


(1) pc웹 브라우저 주소창에 www.nate.com. 을 입력한다.


(2) PC가 리눅스일 경우 /etc/resolv.conf파일을 열어서 'nameserver 네임서버IP' 부분을 찾아 로컬 네임 서버 컴퓨터를 알아낸다. 


(3) 로컬 네임 서버에 www.nate.com.의 IP 주소를 물어본다.


(4) 로컬 네임 서버는 자신의 캐시 DB를 검색해 www.nate.com의 정보가 들어 있는지 확인한다.( 아까 말했듯이 정보가 있다면 바로 응답하지만 대개는 정보가 없다)


(5) 로컬 네임 서버가 'ROOT 네임 서버'에 www.nate.com 주소를 물어본다. (여기서 Recursive nameserver에게 반복적 질의를 요청한다. )

    (root 네임 서버는 모든 네임 서버를 관리하기때문에 하위계층의 ip주소를 알려줌).


(6) 하위계층인 'com 네임 서버'의 주소를 알려주면서 'com 네임 서버'에게 물어보라고 한다. 


(7) 로컬 네임 서버가 'com 네임 서버'에 www.nate.com.의 주소를 물어본다.


(8) 'com 네임 서버'도 www.nate.com의 주소를 모르므로, 'nate.com'을 관리하는 네임서버의 주소를 알려주면서 'nate.com'네임 서버에 물어보라고 한다.


(9) 로컬 네임 서버가 'nate.com 네임 서버'에 www.nate.com의 주소를 물어본다.


(10) 'nate.com 네임 서버'는 네이트에서 구축한 네임 서버이므로 xxx.nate.com이라는 이름을 가진 컴퓨터의 목록은 모두 있다. www.nate.com의 ip주소도 알기 때문에 ip주소를 알려준다.


(11) 로컬 네임 서버가 www.nate.com의 ip 주소를 요구한 pc에 ip주소를 알려준다.


(12) pc는 획득한 주소로 접속을 시도한다.


이처럼 로컬 네임서버는 사실 아는 것이 많지않고 질의를 통해 pc에게 ip주소를 알려준다 이렇게 URL의 IP주소를 알려주는 네임서버를 캐싱 전용 네임서버라고하는데 실제로 구성해볼 수 있다. 


Server-A(192.168.111.100)로 직접 네임 서버를 구축해보자 그리고 Server-B Client  

두 클라이언트를 Server-A를 네임 서버로 사용해보자 .

 

[Server-A]

(1) yum -y install bind bind-chroot          // 네임 서버 관련 패키지 설치 


(2) vi /etc/named.conf                 // 네임서버 성정 파일 수정


11행 12행 17행을 다음과같이 수정한다 옆에 행숫자가 안보인다면 :set number을 통해 볼 수 있다. 


(3) 네임서버가 작동하도록 한다. #systemctl restart named, #systemctl status named

    #systemctl enable named 

(4) # firewall-cmd --permanent --add-service=dns  //방화벽을 열어준다 

 

(5) #nslookup을 통해서 작동이 잘 되는지 확인한다. 

    #nsloolup -> #server 테스트할네임서버ip -> 조회할 URL 


이젠 Client를 실행한 후 앞에서 구축한 Server-A를 네임 서버로 사용해보자

터미널을 열고 su -c 'vi /etc/resolv.conf 파일을 열고 네임서버를 Server-A로 변경해보자 

그리고 FIrefox에들어가서 해당서버네임으로 네이트 네이버 어디든 잘 접속이 되는것을 확인할 수 있다.



 

 

 

 

 

 

 

 

 

 

 

'Foundation > - Linux' 카테고리의 다른 글

웹서버 (APM) & 웹 하드  (0) 2017.06.19
메일서버&웹 메일 구현  (0) 2017.06.12
NFS(Network File System)  (0) 2017.05.24
VMwareTools & NC(NetCat)  (0) 2017.05.16
응급처치 & GRUB설정  (0) 2017.05.16