DNS(Domain Name System)

DNS(Domain Name System)

DNS에서  

text주소 : IP주소로 이루어진 것을 A record라고 함 => 문자주소를 가지고 ip를 조회

IP주소 : text주소로 이루어진 것을 PTR record라고 함 => ip로 문자주소를 조회

전체 구성도
192.168.10.10 컴퓨터에서 실행
DNS Server 설정
192.168.10.10 컴퓨터에서 실행(문자주소)
192.168.50.10 컴퓨터에서 실행
192.168.50.10에서 DNS Server 설정

=> 게이트웨이는 무조건 내부를 사용해야 하지만 DNS 서버는 같은 망이 아닌 외부망 것을 사용해도 됨!

=> 192.168.50.10에서도 DNS Server에 있는 캐시테이블을 조회하여 사용할 수 있음

=> 192.168.50.10에서 DNS Server를 192.168.10.20으로 설정)


** DNS는 문자주소를 기반으로 IP를 조회하거나 IP를 기반으로 문자주소를 조회함

** IP를 기반으로 MAC 주소를 찾는 것을 ARP, MAC 주소 기반으로 IP를 찾는 것을 RARP

** 리눅스, 유닉스, 윈도우 등 모든 운영체제에서 동일함

조회(lookup)

- 정방향조회 : 문자주소를 기반으로 IP주소를 조회

- 역방향 조회 : IP주소를 기반으로 문자주소를 조회

 

DNS 서버 구축(데이터베이스)

1) 프로그램설치 : bind 프로그램

2) 환경설정

- 정방향 조회영역(zone) : A record(text주소 : IP주소)

- 역방향 조회영역(zone) : PTR record(IP주소 : text주소)

test.com
정방향 조회영역   역방향 조회영역
www 1.1.1.1   1.1.1.1 www
ftp 1.1.1.2   1.1.1.2 ftp
telnet 1.1.1.3   1.1.1.3 telnet

 

A record

=> ftp.open.net의 IP는 192.168.70.10이야!

=> 너의 IP는 xxx.xxx.xx.xx야

 

CNAME

CNAME은 별칭을 의미함.

Details 부분에 IP주소가 아닌 별칭

open.net의 별칭은 www.open.net이야. www.open.net의 IP는 192.168.50.20이야 

한 서버의 별칭을 여러 개 지정해 놓으면 그 별칭에 대한 IP는 있어야 함.

=> open.com이랑 open.net의 별칭은 www.open.net이야.

=> 사이트가 여러 개일 때 한 곳으로 가도록 CNAME을 설정할 수 있음

 

NS Record

2번 라인 레코드를 보면 ns.open.net는 DNS 서버임을 파악할 수 있음.

레코드 타입을 보면 이 서버의 기능을 파악할 수 있음

=> ns record == dns record

=> 그 회사의 dns 서버를 ns라고 함


[cmd창 명령어 실행]

입력 > nslookup www.naver.com  

입력 > nslookup -type=a www.naver.com

=> 위 두 개 명령어는 반환값이 동일

=> 첫 번째 명령어에서 -type=a 생략한 것

=> A record

 

입력 > nslookup -type=ns naver.com

=> 네이버의 서버 중 DNS 서버는 누구야?? 라고 물어보는 것

=> 네이버의 ns(nameserver)는 ns2.naver.com, ns1.naver.com이고, 그것의 IP는 125.209.248.6, 125.209.249.6야

 

입력 > nslookup -type=mx naver.com

=> mail server를 의미

 

입력 > nslookup -type=soa naver.com


DNS 특징

DNS는 분산된 계층적 구조를 가지고 있는 데이터베이스

 

DNS Name Resolution

내가 지정해서 사용하는 서버(회사 서버, 통신사가 제공해주는 서버)이기 때문에 Local Name Server(또는 Recursive Name Server)라고 함

DNS는 재귀적 질의와 반복적 질의로 구성되어 있음

=> 재귀적 질의는 DNS Client가 Local DNS Server에게 질문을 던지는 것

=> 반복적 질의는 DNS Server와 DNS Server 사이의 요청/응답을 반복하는 것

=> 대부분의 패킷이 UDP 사용

=> 응답메시지의 크기가 512 byte보다 크면 TCP 사용

 

회사가 크면 회사 자체에 DNS 서버를 가지고 있음.

직원 pc가 사용하는 서버를 DNS Resolver(Local DNS Server, Authoritative Name Server)라고 함

- Auth NS : 사내망 서버들의 주소를 등록하고 있음

- Cache NS : 외부망 서버들의 주소들을 등록

=> 서버 내에는 Cache Name Server를 생성(회사에서 이걸 구성할 수도 있고 안 할 수도 있음) → 이걸 안하면 통신 사업자의 것을 사용

 

DNS Server

dns client가 www.open.net에 접속하려고 하면

1. 자신의 cache를 조회

2. hosts파일을 조회

3. 없다면 Local Name Server로 이동

- Local Name Server는 Master Name Server와 Caching Name Server로 구성됨

- 이 중 Caching은 회사에서 구성할 수도 있고, 통신사 것을 사용할 수도 있음

- 우리 회사의 사내망 주소를 조회하려면 Master NS의 도움을 받으면 됨

- 우리 회사 사이트가 아니면, 이전에 직원들이 조회한 기록을 Caching NS에서 조회해보고, 없다면 Master가 작동

4. Master가 다운될걸 대비하여 Slave에 백업시켜 놓고 이 둘은 tcp로 운영됨

 

DNS Server 설치 영역

DNS는 DMZ 구간에 구성을 할 수 있고, Intranet에 구성할 수도 있음.

- 인트라넷은 직원을 위한 것, DMZ는 서비스 차원에서 제공

 

DNS Message

DNS에는 메시지가 2가지

- 질의 메시지 : header와 질의section으로 구성

- 응답 메시지 : header와 질의, 응답, 권한, 추가section으로 구성(section 4가지)

질의 section 질의와 응답 메시지에 모두 존재
응답 section 응답 메시지에 존재, 서버가 클라이언트에게 응답
권한 section 응답 메시지에만 존재, 질의에 대한 권한이 있는 서버에 대한 정보를 제공
추가 section 응답 메시지에만 존재, 해석기(resolver)에서 도움이 될만한 추가적 정보 제공

 

DNS Header

질의 메시지
응답 메시지

 

Header : Transaction ID

=> Transaction ID는 질의에 대한 고유번호

=> 질문과 질문에 대한 응답의 Transaction ID는 동일

=> 한세트 파악 가능

 

Header : Flags

질의 메시지 header:flags

=> 1번 플래그(QR) : 0이면 질의, 1이면 응답

=> 2번 플래그(OPCode) : 0이면 정방향조회, 1이면 역방향조회 (서버상태요청:2)

=> 3번 플래그(TC) : 0이면 udp, 1이면 tcp로 운영

=> 4번 플래그(RD) : 1이면 반복적 질의를 진행(너가 모르면 다른 서버에게 물어봐서라도 알려줘)

=> 5번 플래그 : 1이면 예약 필드

 

Section : Queries

질의 메시지 Section : Query

=> wireshark.org에 대한 IP주소를 요청

=> A record : 정방향조회

 

Section : Answers

응답 메시지 Section : Answers

=> 요청에 대한 응답

=> wireshark.org에 대한 IP 주소 응답 : 128.121.50.122

 

[정리]

=> No 1,2를 보면 query와 response로 나눠지는 것을 확인할 수 있음

=> 여기서 4.2.2.1은 DNS Server

응답 메시지 header:flags

=> 1번 플래그(QR) : 1이므로 응답메시지

=> 2번 플래그(OPCode) : 0이므로 정방향조회

=> 3번 플래그 : 신뢰할 수 있는 서버를 통해서 값을 얻었는지 아닌지

=> 5번 플래그 : RD는 클라이언트가 반복적 질의를 요청함을 의미.

=> 6번 플래그 : 그에 맞춰 응답함. RA는 반복적 요청이 활성화되어 진행됨을 의미

=> 10번 플래그 : Reply code(RCODE), 오류가 존재하는지 표시

Reply code(RCODE)
0 NoError 오류 없음
1 FormErr 형식 오류(쿼리가 잘못된 경우)
2 ServFai 서버실패(DNS 서버 자체 문제)
3 NXDomain 네임 오류(도메인 네임이 존재하지 않는 경우)
4 NotImp DNS 서버가 Query를 지원 못함)
5 Refused 거부(정책적 이유로 Query 거절)

 


[추가] Zeek 설명

zeek이 설치되어 있는 위치 /opt/zeek/

zeek의 환경설정 위치 /opt/zeek/etc

관제할 대역대 설정 networks.cfg

랜카드 주소 설정 node.cfg

 

★zeekctl.cfg 중요!!!

zeekctl.cfg

LogDIr : 일정시간이 지나면 백업시켜놓는 공간

SpoolDir : 실시간으로 쌓이는 트래픽

 

dns.log 확인

# cd /opt/zeek/spool/zeek

# nano dns.log


포스팅 이미지는 SK쉴더스 루키즈 16기 클라우드기반 시스템 운영/구축 실무 과목에서 제공된 자료입니다.