본문 바로가기

교육/Server

Day 12 (DNS)

반응형

DNS예습

 

DNS Server

 

실행 데몬 : yum install -y bind.x86_64

설정파일 : /etc/named.conf

/etc/named/rfc1912.zones

/var/named/*

 

name server lookup = nslookup

nslookup 운영 체제의 로컬 도메인 네임 시스템 리졸버 라이브러리를 사용해서 자신의 쿼리를 수행하지 않으므로 dig와는 다른 행동을 한다추가적으로 벤더에 의해 제공된 버전들은 다른 이름 정보의 소스의 결과를 사용하거나 포함함으로써 혼란을 일으킬  있다. (호스트 파일, 네트워크 정보 서비스 같은몇몇 행동들은 resolv.conf 파일의 내용에 따라 수정될  있다.

nslookup 상호 또는  상호 모드로 동작한다인자 없이 또는  번째 인자를 -(마이너스) 번째 인자를 네임 서버의 호스트명이나 인터넷 주소 넣은 경우 상호작용을 하게 되며 사용자는 nslookup 프롬프트(>)에서 파라미터 설정을 하거나 요청을   있다인자가 주어지지 않은 경우명령어는 기본 서버에 질의한다. -(마이너스) 명령 줄에서 특정되는 부명령어를 유발하며, nslookup 명령어에 선행되어야 한다 상호 모드에서  번째 인자가 검색할 호스트의 이름이나 IP 주소인 경우 파라미터들과 질의는 화면에서 결과로 나온다 상호 모드는 기본 네임 서버를 사용해서 특정한 호스트의 정보를 검색한다.<출처 : wiki백과>

 

--------------------------------------------------------------------------------------------------

 

DNS가 무엇인지에 대해 알아보기 전에 도메인에 대해 설명해보겠다.
도메인은 pc간의 통신을 위한 ip를 사용자가 알아보기 쉽게 일종의 라벨링을 하는 것이다.

naver의 도메인인 'www.naver.com'을 예를 들어 설명해 보겠다. 정식 도메인은 'www.naver.com.'으로 되어있다. 여기서 www는 client application을 의미한다. 중간에 naver는 로컬 DNS를 의미한다. com은 LTD를 의미한다. 마지막 '.'는 root  DNS를 의미한다. 서로의 구분은 중간에 '.'로 하는 것이다.

각 의미의 역할은 아래에서 천천히 설명하겠다.

 

기본적으로 DNS는 HOST명을 IP로 변환 시켜주는 역할을 한다. 다만 이를 체계적으로 관리하기 위해 일정한 구조를 이룬다. 수많은 name서버들이 분산형 DataBase형식인 계층형(트리형)구조로 되어있다. name서버는 다른 application layer protocol(http, ftp, smtp 등)들이 사용자가 제공한 호스트네임을 ip로 변환하는데 이용한다. 인터넷의 가장 중요한 기능중 하나로서 network edge에 구현된다. ip를 이용해 이름으로 mapping되고 반대로 이름을 이용해 ip로 mapping이 가능하다. 그러나 그것은 사용자가 네트워크를 사용하는데 크게 의미도 없고 가치도 없다. 

DNS는 호스트명을 ip 주소로 변환해준다. 이때 호스트명에는 정식 호스트명 뿐만 아니라 별칭 호스트명도 사용 가능한데 이를 호스트 얼리아싱이라고 한다. DNS는 IP뿐만 아니라 정식 호스트명을 얻기 위해 사용하기도 한다.

 

앞서 DNS는 트리형 구조라고 언급했었다. 이를 추상도로 그리면 다음과 같다

 

DNS 구조 추상도

 

최상위 DNS를 Root DNS 서버라고 한다. 그 아래 TLD라고 하는 책임 도메인들이 있고 그 아래 있는 로컬 DNS가 있다. 

로컬 DNS의 성격에 따라 등록되는 TLD가 다르다. 그림을 보며 예를 들면 com DNS에는 일반 회사들의 로컬 DNS들이 등록되어 있다. 또한 edu에는 교육과 관련된 로컬 DNS가 등록되어 있다. 성격을 분류할 수 없는 DNS의 경우에는 org DNS로 등록하면 된다. 여기까지 다시 설명하면 root DNS ⊃ TLD ⊃ 로컬 DNS가 되는것이다. DNS의 내용을 간단하게 얘기하면 ip와 도메인이 들어있다. 따라서 만약 client에서 'www.yahoo.com'의 IP를 원한다고 가정하자. 그 흐름을 그려보자.

더보기

client가 도메인을 로컬 DNS에 질의하게 되면 자신의 상위 TLD로 이동해서 yahoo.com의 IP를 아는지 질의한다. 만약 로컬 DNS가 com DNS에 등록되어 있는 상태라면 yahoo.com의 연결 IP를 바로 알려줄 수 있다. 하지만 다른 DNS에 등록되어 있다면 com DNS에 질의해야 하기 때문에 com DNS의 정보를 가지고 있는 root DNS에 질의 하게 된다. 그 후 root DNS에서 com DNS의 IP에 대해 응답을 받고, 이때 다시 com DNS에 질의 하고 yahoo.com에 대한 IP정보를 응답받게 된다. 원하는 답변을 받은 로컬 DNS는 client에게 해당 IP를 알려주어 통신이 이루어 질수 있게 하는것이다.

client가 도메인을 로컬 DNS에 질의하게 되면 자신의 상위 TLD로 이동해서 yahoo.com의 IP를 아는지 질의한다. 만약 로컬 DNS가 com DNS에 등록되어 있는 상태라면 yahoo.com의 연결 IP를 바로 알려줄 수 있다. 하지만 다른 DNS에 등록되어 있다면 com DNS에 질의해야 하기 때문에 com DNS의 정보를 가지고 있는 root DNS에 질의 하게 된다. 그 후 root DNS에서 com DNS의 IP에 대해 응답을 받고, 이때 다시 com DNS에 질의 하고 yahoo.com에 대한 IP정보를 응답받게 된다. 원하는 답변을 받은 로컬 DNS는 client에게 해당 IP를 알려주어 통신이 이루어 질수 있게 하는것이다.

 

DNS의 역할과 의미를 설명하겠다. 위에서 구조 및 순서를 설명하면서 적은 중복적인 내용도 있지만 그만큼 그 의미와 역할을 아는 것이 중요하기때문이다. 각각 DNS의 역할을 기술하게 되면 root DNS는 최상위 DNS로 TLD서버에 책임이 있다. TLD서버는 Top-Level Domain서버로서 com, org, edu등과 같은 상위 레벨 도메인과 모든 국가의 상위 레벨 도메인에 책임이 있다. net TLD는 network solutions maintains server이다.

Authoritative DNS server는 1차, 2차등 계속 연계해서 등록할 수 있다. 이는 관리하는 모든 DNS라고 생각할 수 있다. TLD서버도 일종의 Authoritative DNS서버 이다. 호스트 명을 ip로 맵핑한 값을 DNS 레코드에 적은후 책임 DNS서버에 등록하는 형식으로 이루어진다. 이를 위해 일정 비용을 지불할 수도 있다.

Cache DNS server는 forwarder라고 해서 ip 맵핑에 대한 도메인 정보를 가지고 있지 않고 오직 root DNS에 대한 정보만 가지고 있다. 호스트에 대한 질의에 응답만을 한다. 보통의 로컬 DNS서버로 사용이 가능하며 로컬 DNS서버들의 책임을 가지는 Authoritative DNS server보다 많이 사용된다.

 

그렇다면 앞에서 나온 client에서 'www.yahoo.com'의 IP를 원한다고 가정하는 과정을 만약 cache DNS와 실행한다면 어떻게 될지 그려보자.

더보기

client가 도메인을 cache DNS에 질의하면 cache DNS는 가지고 있는 도메인 정보가 root DNS정보밖에 없기 때문에 바로 root DNS에 com DNS의 IP를 질의 한다. 답변 받은 IP로 접속하여 com DNS에 yahoo.com의 IP를 질의 한다. 답변 받은 IP를 client로 응답해주어 통신이 이루어 질수 있게 한다. 

client가 도메인을 cache DNS에 질의하면 cache DNS는 가지고 있는 도메인 정보가 root DNS정보밖에 없기 때문에 바로 root DNS에 com DNS의 IP를 질의 한다. 답변 받은 IP로 접속하여 com DNS에 yahoo.com의 IP를 질의 한다. 답변 받은 IP를 client로 응답해주어 통신이 이루어 질수 있게 한다. 

 

bst##.dal로 네임 서버 만들어보는 실습을 진행했다.

 

named서버에 대한 설정
권한을 변경해주었다.
IP와 도메인을 맵핑한다.
named서버는 (연결과 관계 없이)작동하는 것을 확인한다. 작동은 하면서 연결이 안되는것은 위의 n차 시도에서 확인했다.
1차 시도 실패
2차 시도 실패
실패 원인 1 연결 파일을 잘못 설정 해 주었다.
DNS를 구성 성공했다.
bst09.zone파일에서 cache DNS서버로서는 작동하는 코드

서로 다른 클라이언트에서도 작동하는 것을 확인했다.

 

 

 

네임서버가 되는지 확인하는 방법은 여러가지가 있다. 첫째, resolv.conf파일에서 자기자신을 DNS로 설정하고 host명령어로 도메인을 넣어보면 알수있다. 둘째, window에서 네트워크 설정의 DNS값을 사용하고 싶은 주소로 넣어 작동하는지 확인한다.

반응형

'교육 > Server' 카테고리의 다른 글

Day 17 (apache)  (0) 2019.12.10
Day 16 (DNS)  (0) 2019.12.09
Day 14 (DNS)  (0) 2019.12.05
Day 13 (DNS)  (0) 2019.12.04
Day 10  (0) 2019.11.30