[도메인] DNS 원리와 이용 방안

DNS(Domain Name System) 의 원리 및 이용에 대한 방도

                                              

0-1. 네임서버 설정 상황

1차 : (1) ns1.tt.co.kr(ns1.pb.co.kr)

    (2) ns3.tt.co.kr(ns3.pb.co.kr)

2차 : (3) ns2.tt.co.kr (ns2.pb.co.kr) ns4.tt.co.kr(ns4.pb.co.kr)

각자는 하나의 Ethernet Card 에 복수 IP Aliasing 이 설정되어 있다.

0-2. 네임서버 신청하기.

국내 도메인 : http://domain.nic.or.kr/hostapply/host1.html

국제 도메인 : http://www.networksolutions.com/cgi-bin/makechanges/itts/host

국내 도메인의 경우 하나의 IP 에 여러 네임서버명(호스트)이 가능하나

국제 도메인의 경우 하나의 IP 에 하나의 네임서버명(호스트)가 가능하다.

→ 네임서버 신청시 비용이 소요되지 않는다.

1. BIND(Berkeley Internet Name Domain)를 이용한 DNS의 역사.

초기에는 /etc/hosts 와 같이 hosts.txt 라는 파일을 이용.

・hosts.txt(1970년대) 의 문제점

(1) 트래픽과 부하(일주일에 한번씩 배포).

(2) 이름충돌등 신뢰성의 문제.

—–> 1984 년 발표된 RFC882 와 RFC883이 기초가 되어 현재의 DNS가 됨.

※RFC(Request For Comments) 의 약어로서 인터넷상에서 새로운 기술을 소개하는 비

정형화된 절차의 일부분, 일반적으로 자유롭게 배포되며 상당히 기술적인 내용을 담고

있음.

2. 네임서버의 종류

primary(master,주) — zone 파일로부터 영역에 대한 데이터를 읽는다.    

secondaey(slave,보조) — 영역의 authority(권한)을 가지고 있는 primary 서버로부터

영역 데이터를 읽어옴(zone transfer) .

・secondary 는 또 다른 secondary 에서 영역 데이터를 가져올 수 있다.

・slave 의 의미는 노예보다는 자신의 의지대로 행동하지 않고 주마스터의 데이터에 의

존한다는 의미가 적절하다. 아울러 슬레이브는 절대로 낮은 급수의 의미가 아니며 특정

한 도메인에 대해 primary 와 동일한(?) 권한을 갖는다.

・하나의 네임서버가 primary 이면서 slave 일 수 있다.

3. 도메인 네임 서버의 작동순서.

리졸버(resolver-DNS 의 클라이언트 프로그램) 에 질의.

(1) 자신의 영역인지 여부(/etc/named.conf 에 정의되어 있는지)

(2) 캐쉬(cache)의 존재 여부

(3) 도메인 네임에 근접한 네임서버에 질의

예) (1) xyz.abc.co.kr를 질의받았다면 자신이 xyz.abc.co.kr 도메인의 네임서버를 아

는지           질의 –> abc.co.kr 의 네임서버를 아는지 질의.–> –> root

네임서버에 질

의.

(4) root 네임서버(전세계에 13개)에 질의.(resolution)

◎dig @a.root-servers.net . ns > db.cache –> root zone 파일을 최신으로 갱신

◎dig @ns3.tt.co.kr txt chaos version.bind | grep VERSION –> 원격지의 bind 버전

아는법                      

4. 캐싱 –> TTL 설정과 관련.

긍정적 캐싱 : 통상적으로 86400초(1일) (ZONE 파일에서 설정 가능)

부정적 캐싱 : 10분( Bind 프로그램에 고정된 수치)

캐싱을 두는 이유?

5. 네임 서버 설정

/etc/named.boot :: bind 4.x 버전

/etc/named.conf :: bind 8.x 버전

/etc/named.conf

options {

      directory “/var/named”;    

};

zone “.” {

      type hint;

      file “named.ca”;

};

zone “tt.co.kr” {

      type master;

      file “tt.zone”;

};    

zone “visionjob.com” {

      type slave;

      file “visionjob.com”;

      masters{211.47.65.4;};

};

zone “65.47.211.in-addr.arpa” {

      type master;

      file “4.rev”;

};

zone “0.0.127.in-addr.arpa” {

      type master;

      file “named.local”;

};    

### tt.zone

@      IN     SOA    ns1.tt.co.kr. root.tt.co.kr. (

                                    2000041500 ; Serial

                                    28800     ; Refresh(8 hr)

                                    14400     ; Retry(4 hr)

                                    3600000   ; Expire(6 weeks)

                                    86400 )   ; MinimumTTL

            IN     NS     ns1.tt.co.kr.

            IN     A      210.121.176.235

            IN     MX 0   mail.tt.co.kr.

mail         IN     A      210.121.176.231  

www        IN     A      210.121.176.235

            IN     A      210.121.176.236 ; Round Robin

※ zone 파일 설정에서 전체 도메인명을 입력시 반드시 끝에 .을 입력하여야 정확한 도메

인명이 된다.

mail –> mail.tt.co.kr

mail.tt.co.kr –> mail.tt.co.kr.tt.co.kr 이 된다.

2차 네임서버설정과 관계

2000041500 ; Serial

28800     ; Refresh(8 hr)

14400     ; Retry(4 hr)

3600000   ; Expire(6 weeks)

다른 네임서버의 캐싱 설정과 관계

86400    ; MinimumTTL

>>>>>>>>>> 리소스 레코드

<<<<<<<<<<<

SOA(Start Of Authority)  영역 데이터의 유효시작 시기와 전체 영역에 영향을 미치는

인                           자 정의

NS (NameServer) 도메인의 네임서버를 정의한다.

A (Address) 호스트 이름을 주소로 변환한다.

PTR (Pointer) 주소를 호스트 이름으로 변환한다.

MX (Mail Exchange) 지정된 도메인 이름으로 전달된 메일이 전송되어야 할 것을 정의.

CNAME (Caronical Name) 별명 호스트 이름을 정의

HINFO (Host Information) 호스트의 OS 와 하드웨어등을 정의한다.

TXT (Text) 임의의 텍스트 문자열을 저장한다.

6. secondary zone 파일

; BIND version named 8.2.2-P3 Thu Nov 11 01:20:31 EST 1999

; BIND version root at

porky.devel.redhat.com:/usr/src/bs/BUILD/bind-

8.2.2_P3/src/$

; zone ‘clickman.co.kr’  first transfer

; from 168.126.29.129:53 (local 168.126.29.135) using AXFR at Mon Mar 13 16:39:$

$ORIGIN co.kr.

clickman       86400  IN     SOA    ns.tt.co.kr. root.tt.co.kr. (

              1999071100 28800 14400 3600000 86400 )

      86400  IN     NS     ns.tt.co.kr.

      86400  IN     A      210.121.176.197

$ORIGIN clickman.co.kr.

ftp    86400   IN     A      210.121.176.197

www  86400   IN     A      210.121.176.197

                                                

현재 오늘과 내일의 2차 네임서버 설정상황

options {

       forwarders { 168.126.29.134; 211.47.65.4; };

       forward only;

};

      

7./etc/resolve.conf

search tt.co.kr pb.co.kr

nameserver 168.126.29.134

nameserver 168.126.29.135    

・/etc/resolve.conf에서 하나의 네임서버 설정시

→ search : xxx.tt.co.kr 후 xxx.pb.co.kr  검색

→ domain : xxx.tt.co.kr 후 xxx.co.kr –> xxx.kr 검색

설정된 네임서버가 하나라면 resolver는 5초의 시간제한을 가지고 질의를 날린다. 여기

서 시간제한이라는 것은 리졸버가 다른 질의를 보내기 전에 네임서버로부터의 응답을 기

다리는 시간적 길이를 말한다. 만약 네임서버가 다운되었음을 알리는 에러를 만나거나

네임서버까지 도달할 수 없거나 제한시간을 넘겼다면 리졸버는 시간제한을 두배로 늘리

고 다시 그 네임서버에게 질의를 보낸다. 이러한 상황을 일으키는 에러는 다음과 같다.

(1) 네임서버의 포트(53)가 응답하지 않을 때 : ICMP Port unreachable

(2) 목적지 IP 주소로 질의를 전송할 수 없을 때 : ICMP host unreachable 또는

                                            network unreachable

                

・ /etc/resolve.conf에서 두 개의 네임서버 설정시

재시도           설정된 네임서버의 개수

            1             2             3

    0           5초           (2x) 5초          (3x)5초

    1           10초           (2x)5초           (3x)3초

    2           20초           (2x)10초          (3x)6초

    3           40초           (2x)20초          (3x)13초

   계           75초          80초            81초

리졸버 시간 제한

resolve.conf 에 설정된 모든 네임서버드이 바쁘거나 네트워크가 다운되었을 경우에만

리졸버는 4번의 사이클을 돌면서 재시도를 하며 그런후에 포기한다.(host name lookup

failure)

이러한 메시지는 75초정도 지난 후에야 나타난다.

8. MX(Mail Exchange) Record

oracle.com.   IN MX 0 mail0.oracle.com.

oracle.com.   IN MX 10 mail1.oracle.com.

oracle.com.   IN MX 10 mail2.oracle.com.

id at oracle.com 으로 메일

발송시

(1) 우선 순위 값이 제일 낮은 mail0.oracle.com 으로 메일 발송

(2) 그다음 우선순위 값인 mail1 이나 mail2 로 메일 발송

(3) 마지막으로 2번에서 선택되지 않았던 우선순위 10인 메일 exchanger 로 전송

예) abc.co.kr을 ns3.tt.co.kr에서 호스팅하는 이용자가 메일 서버는 자체 회사의 서버

(IP : 123.456.678.1) 를 사용하고자 한다면 ?

ZONE 설정은 아래와 같다.

@      IN     SOA    ns3.tt.co.kr. root.tt.co.kr. (

                                    2000041109 ; Serial

                                    28800     ; Refresh(8 hr)

                                    14400     ; Retry(4 hr)

                                    3600000   ; Expire(6 weeks)

                                    86400 )   ; Minimum

            IN     NS     ns3.tt.co.kr.

            IN     A      211.47.65.2

            IN    MX  1  mail.abc.co.kr.

localhost     IN     A      127.0.0.1

www        IN     A      211.47.65.2            

mail         IN     A      123.456.678.1  

* 의 사용에 대해 tt.co.kr zone 파일의 경우

*        IN    MX  10 mail1a

mail2     IN    MX  10 mail2b

mail3     IN    A    211.47.65.3

mail1a    IN    A    211.47.65.1

mail2b    IN    A    211.47.65.2

–> abc.tt.co.kr 로 메일을 보내면 * 설정에 따라 mail1a 로 보내진다.

   mail2 로 메일을 보내면 mail2b 로 보내진다.

   mail3 으로 보내면?

    

9. syslog 메시지(/var/log/message) 확인하기.

● Jan 10 20:48 ns3 named:starting named 8.1.2

–> 네임서버 시작시

● Jan 10 20:48 ns3 named : reloading nameserver

–> 네임서버 설정 refresh (HUP Signal시)

● Jan 10 20:48 ns3 named: owner name “goo_bye.com IN” primary is unvalid –

rejecting –> RFC 952 규약을 따르지 않는 도메인 네임 발견시.

●Jan 10 20:48 ns3 named: zoneref : Master for secondary zone “abc.co.kr”

unreachable –> Zone transfer를 하는 slave가 master 서버에 접촉할 수 없을 때

●Jan 10 20:48 ns3 named: /etc/named.conf:10: syntax error near ‘abc.com’

–> /etc/named.conf에서 문법적 오류

● Apr 24 17:53:52 ns3 named[1070]: sysquery: findns error (NXDOMAIN) on

ns.cyberne

t.co.kr? –>

10. DNS 서버 통계 구하기.

kill -ILL ‘cat /var/run/named.pid’ 를 하면 /var/named/named.stats 파일생성

예) ns1 서버의 예(/var/named/named.stats)

+++ Statistics Dump +++ (951236659) Wed Feb 23 01:24:19 2000

429333 time since boot (secs)

1156   time since reset (secs)

88     Unknown query types

581664 A queries

18     NS queries

131    CNAME queries

18328  SOA queries

643328 PTR queries

59610  MX queries        

☆ tail -5000 message|grep RQ

Apr 24 20:34:53 ns1 named[1070]: XSTATS 956576093 955043019 RR=1465705

RNXD=3666 57 RFwdR=878916 RDupR=7011 RFail=74355 RFErr=0 RErr=448

RAXFR=1493 RLame=254550 ROpts=0 SSysQ=292302 SAns=7561231

SFwdQ=1077273 SDupQ=813921 SErr=643 RQ=8724403 RIQ=196 RFwdQ=0

RDupQ=41317 RTCP=79478 SFwdR=878916 SFail=1495 SFErr=0 SNaAns=5

044378 SNXD=2554456

Apr 24 21:34:53 ns1 named[1070]: XSTATS 956579693 955043019 RR=1470050

RNXD=3678 76 RFwdR=881579 RDupR=7023 RFail=74578 RFErr=0 RErr=448

RAXFR=1501 RLame=255285 ROpts=0 SSysQ=293154 SAns=7583151

SFwdQ=1080571 SDupQ=816229 SErr=645 RQ=8749861 RIQ=196 RFwdQ=0

RDupQ=41446 RTCP=79660 SFwdR=881579 SFail=1558 SFErr=0 SNaAns=5

059189 SNXD=2563882            

  

→ RQ : 8749861-8724403 = 25458 –> 1시간동안 받은 네임서버 질의수

→ SAns : 질의에 대한 응답수

11. nslookup 이용하기

● [antihong@www10 antihong]$ nslookup

Default Server: ns1.tt.co.kr

Address: 168.126.29.134

> set q=any

> tt.co.kr

Server: ns1.tt.co.kr

Address: 168.126.29.134

tt.co.kr       internet address = 210.121.176.235

tt.co.kr       nameserver = ns1.tt.co.kr

tt.co.kr

      origin = ns1.tt.co.kr

      mail addr = root.tt.co.kr

      serial = 2000041500

      refresh = 28800 (8H)

      retry  = 14400 (4H)

      expire = 3600000 (5w6d16h)

      minimum ttl = 86400 (1D)

tt.co.kr       preference = 0, mail exchanger = www10.tt.co.kr

tt.co.kr       nameserver = ns1.tt.co.kr

ns1.tt.co.kr   internet address = 168.126.29.134

www10.tt.co.kr internet address = 210.121.176.235    

●nslookup –> 첫 번째 네임서버가 다운되었을 경우.

*** can’t find server name for address 211.47.65.4. No response from server

Default Server: ns1.tt.co.kr

Address: 168.126.29.134

>                          

●[antihong@www10 antihong]$ nslookup

Default Server: ns1.tt.co.kr

Address: 168.126.29.134

> server ns.dacom.co.kr

Default Server: ns.dacom.co.kr

Address: 164.124.101.2

>                  

●[antihong@www10 antihong]$ nslookup – ns.dacom.co.kr

Default Server: ns.dacom.co.kr

Address: 164.124.101.2

>      

●[antihong@www10 antihong]$ nslookup tt.co.kr ns.dacom.co.kr

Server: ns.dacom.co.kr

Address: 164.124.101.2

Non-authoritative answer:

Name:   tt.co.kr

Address: 210.121.176.235

●[antihong@www10 antihong]$ nslookup -type=mx tt.co.kr ns.dacom.co.kr

Server: ns.dacom.co.kr

Address: 164.124.101.2

Non-authoritative answer:

tt.co.kr       preference = 0, mail exchanger = www10.tt.co.kr

Authoritative answers can be found from:

tt.co.kr       nameserver = ns1.tt.co.kr

www10.tt.co.kr internet address = 210.121.176.235

ns1.tt.co.kr   internet address = 168.126.29.134    

●[antihong@www10 antihong]$ nslookup

Default Server: ns1.tt.co.kr

Address: 168.126.29.134

> set all

Default Server: ns1.tt.co.kr

Address: 168.126.29.134

Set options:

nodebug        defname        search         recurse

nod2           novc           noignoretc     port=53

querytype=A    class=IN       timeout=5      retry=4

root=a.root-servers.net.

domain=tt.co.kr

srchlist=tt.co.kr/pb.co.kr    

●[antihong@www10 antihong]$ nslookup

Default Server: ns1.tt.co.kr

Address: 168.126.29.134

> set d2

> www.black.com

Server: ns1.tt.co.kr

Address: 168.126.29.134

;; res_nmkquery(QUERY, www.black.com, IN, A)

—————

SendRequest(), len 31

  HEADER:

      opcode = QUERY, id = 10688, rcode = NOERROR

      header flags: query, want recursion

      questions = 1, answers = 0, authority records = 0, additional = 0

   QUESTIONS:

      www.black.com, type = A, class = IN

————

————

Got answer (141 bytes):

  HEADER:

      opcode = QUERY, id = 10688, rcode = NOERROR

      header flags: response, want recursion, recursion avail.

      questions = 1, answers = 1, authority records = 2, additional = 2

   QUESTIONS:

      www.black.com, type = A, class = IN

  ANSWERS:

  -> www.black.com

      type = A, class = IN, dlen = 4

      internet address = 166.70.76.15

      ttl = 86318 (23h58m38s)

  AUTHORITY RECORDS:

  -> BLACK.com

      type = NS, class = IN, dlen = 15

      nameserver = NS.RAWDESIGN.com

      ttl = 172717 (1d23h58m37s)

  -> BLACK.com

      type = NS, class = IN, dlen = 14

      nameserver = NS.XMISSION.com

      ttl = 172717 (1d23h58m37s)

  ADDITIONAL RECORDS:

  -> NS.RAWDESIGN.com

      type = A, class = IN, dlen = 4

      internet address = 166.70.76.4

      ttl = 172717 (1d23h58m37s)

  -> NS.XMISSION.com

      type = A, class = IN, dlen = 4

      internet address = 198.60.22.2

      ttl = 172717 (1d23h58m37s)

————

Non-authoritative answer:

Name:   www.black.com

Address: 166.70.76.15

                          

12. 서브 네임서버 설정하기

▼ co.kr을 관장하는 KRNIC의 경우 (co.zone 의 일부)

tt.co.kr.       IN    NS  ns1.tt.co.kr.

ns1.tt.co.kr.   IN     A   168.126.29.134

▼ tt.co.kr 의 sub zone 생성. (tt.zone 의 일부)

webman       IN     NS  ns.webman.tt.co.kr.

ns.webman    IN      A   211.47.64.34

서브 도메인은 127단계까지 설정 가능하다

즉 A.B.C.D.E.F.G……… . TT.CO.KR 와 같이 생성할 경우 tt.co.kr 앞단계에서 tt.co.kr을

포함하여 127 단계까지 가능하다.

※ ns1.tt.co.kr 과 ns.webman.co.kr에서 각각 같은 도메인(ex: test.webman.tt.co.kr)

을 다른 IP 주소로 설정하였다면 어떤 네임서버의 설정이 우선권이 있을까?

13. 기타

######## hitel 설정 알아보기.

[system@ns1 /system]$ nslookup – nis.hitel.net

Default Server: nis.hitel.net

Address: 203.245.15.9

> set q=any

> hitel.net

Server: nis.hitel.net

Address: 203.245.15.9

hitel.net      internet address = 203.245.15.32

hitel.net      preference = 10, mail exchanger = sni12.hitel.net

hitel.net      preference = 10, mail exchanger = sni09.hitel.net

hitel.net      nameserver = nis.hitel.net

hitel.net      nameserver = nis2.hitel.net

hitel.net

      origin = nis.hitel.net

      mail addr = hostmaster.nis.hitel.net

      serial = 2000042401

      refresh = 21600 (6H)

      retry  = 1800 (30M)

      expire = 1209600 (2W)

      minimum ttl = 43200 (12H)

hitel.net      nameserver = nis.hitel.net

hitel.net      nameserver = nis2.hitel.net

sni12.hitel.net internet address = 203.245.15.34

sni09.hitel.net internet address = 203.245.15.31

nis.hitel.net  internet address = 203.245.15.9

nis2.hitel.net internet address = 211.47.45.23

>                                                    

・named 재시작

(1) killall -HUP named

(2) kill -HUP ‘cat /var/run/named.pid’

・name server 에러 여부

(1) named 재설정후 nslookup 으로 정상 작동중인지 확인

(2) tail -5000 message|grep error 로 확인.

・Round Robin 구현하기

www.tt.co.kr.  60      IN   A     211.47.65.1

www.tt.co.kr.  60      IN   A     211.47.65.2

www.tt.co.kr.  60      IN   A     211.47.65.3

ns1.tt.co.kr과 ns3.tt.co.kr의 관계?.

서진우

슈퍼컴퓨팅 전문 기업 클루닉스/ 상무(기술이사)/ 정보시스템감리사/ 시스존 블로그 운영자

You may also like...

페이스북/트위트/구글 계정으로 댓글 가능합니다.