[도메인] 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의 관계?.