Server & OS

네임서버 설정

컨텐츠 정보

본문

네임서버 설정

 

/etc/named.conf

// generated by named-bootconf.pl

options {
directory "/var/named";
/*
* If there is a firewall between you and nameservers you want
* to talk to, you might need to uncomment the query-source
* directive below. Previous versions of BIND always asked
* questions using port 53, but BIND 8.1 uses an unprivileged
* port by default.
*/
// query-source address * port 53;
};

//
// a caching only nameserver config
//
zone "." {
type hint;
file "named.ca";
};

zone "0.0.127.in-addr.arpa" {
type master;
file "named.local";
};

zone "hansungbok.com" {
type master;
file "hansungbok.com.zone";
};

zone "31.219.211.in-addr.arpa" {
type master;
file "hansungbok.com.rev";
};

zone "ilovelinux.pe.kr" {
type master;
file "ilovelinux.pe.kr.zone";
};

 

위의 내용은 linuxinfo.pe.kr 의 설정 파일이다. 지금부터 실제 자신의 시스템에 적용하기 위해 위의 내용이 의미하는 바를 하나씩 살펴 보도록 하자.

directory "/var/named";

설정파일이 위치할 디렉터리를 정해준다. 실제 뒤에 나오는 설정파일들은 전부 이 디렉터리에서 가져온다고 알려주는 역할을 한다.

zone "." {
type hint;
file "named.ca";
};

루트 네임서버들에 대한 정보를 가지고 있는 파일을 지정한다. 루트 네임서버들에 대한 캐쉬 파일이다. 이 파일은 스스로 만들 필요는 없고 이미 만들어져 있는 것을 가져오면 된다. FTP.RS.INTERNIC.NET/domain/named.ca 파일을 가져오면 된다.

zone "hansungbok.com" {
type master;
file "hansungbok.com.zone";
};

이 서버가 관리하는 도메인과 그 정보를 가지고 있는 파일 도메인이 linuxinfo.pe.kr 이고 그 도메인에 대한 정보가 linuxinfo.db 에 있다고 명시한다. linuxinfo.db 파일은 Forward Zone으로써 도메인에 대한 IP 정보를 가지고 있는 파일이다. 해당 도메인 네임을 IP로 바꿔주는 역할을 한다.

zone "31.219.211.in-addr.arpa" {
type master;
file "hansungbok.com.rev";
};

 

named.rev는 Reverse Zone으로써 이 서버가 관리하는 IP와 그 정보를 담당하는 파일 IP 도메인 네임을 찾아주는 역활을 담당한다.

zone "0.0.127.in-addr.arpa" {
type master;
file "named.local";

로컬 IP에 대한 정보를 담고 있다.


1) 하나의 named 로 여러개 도메인 관리하기

한 네임서버에서 여러개의 도메인에 대한 처리가 가능하다.

zone "ilovelinux.pe.kr" {
type master;
file "ilovelinux.pe.kr.zone";
};

위 내용을 추가한 후에 다음의 hansungbok.com.zone 과 같은 형식의 ilovelinux.pe.kr 파일을 작성하면 된다.


/var/named/hansungbok.com.zone

@ IN SOA ns.hansungbok.com. sbhan73.dreamwiz.com. (
20000302 ; Serial
36000 ; Refresh
3600 ; Retry
3600000 ; Expire
36000 ) ; Minimum

IN NS ns.linuxinfo.pe.kr.
IN A 166.104.27.137
IN MX 0 www3.hanyang.ac.kr.

ns IN A 211.219.31.204
www IN A 211.219.31.204
sungbok IN A 211.219.31.204
linux IN A 211.219.31.37
php IN CNAME sungbok.hansungbok.com

IN SOA ns.hansungbok.com. sbhan73.dreamwiz.com. (
980901 ; Serial
10800 ; Refresh(6h)
3600 ; Retry(15min)
3600000 ; Expire(7d)
43200 ) ; Minimum(12h)

이 부분은 없어서는 안되는 부분이다. 없거나 설정이 잘못되어 있으면 네임서버가 작동을 하지 않는다. 대소문자는 가리지 않는다. ns.hansungbok.com. 은 이 네임서버의 도메인명이다. Sbhan73.dreamwiz.com. 은 관리자의 이메일 주소이다. 일반적으로 메일 주소가 sbhan73@dreamwiz.com의 형태인데 sbhan73.dreamwiz.com. 라고 '.' 으로 표시가 되어 있다.

그 이유는 네임서버에서 @는 자기 자신(즉 여기선 linuxinfo.pe.kr)이 되기 때문이다.
자세히 보면 ns.hansungbok.com. 여기서 마직막에 '.' 이 들어가 있는걸 알 수 있다. 여기서 '.'은 최상위 도메인이다. 우리가 named.conf 파일에 도메인 네임을 적어준 것을 기억하기 바란다.

만약에 linuxinfo.pe.kr 이라고만 표기를 했다면 실제 네임서버는 ansungbok.com.hansungbok.com 으로 인식을 하게 될 것이다.

항상 네임서버를 구성할 때 '.'를 주의해서 봐야 한다.

'.' 하나 때문에 한참을 고생하는 경우가 허다하다. 도메인은 뒤에서부터 앞쪽으로 갈수록 하위 구조라는 것을 명심하기 바란다. 유닉스 디렉토리 구조에서 '/' 는 최상위 디렉토리이다. 이것에 해당하는 것이 도메인의 '.' 이다.


SOA 는 현재 Record 의 유형(type)을 지정한다.

SOA
도메인 정보에 대한 authority 를 지정한다.

Serial (20000302 ; Serial)
이 정보의 버전을 나타낸다. secondary 서버에서 primary 서버의 데이타를 가지고 올 때 우선 primary 서버에 serial 번호를 달라고 요청을 하게 된다. 이 시리얼 번호가 기존의 정보와 같다면 거기서 멈추고 버전이 높다면 새로운 정보로 가지고 온다. zone 파일의 내용을 수정했다면 시리얼을 올려주어야 한다. 보통 알아보기 쉽게 날짜로 사용을 한다.

Refresh (36000 ; Refresh )
secondary 측에서 새로운 정보를 요청 할 때까지의 시간을 지정한다. 지정한 시간 이후에 secondary 서버에서는 primary 서버로 갱신된 정보가 있는지를 문의하게 된다.

Retry (3600 ; Retry )
재시도를 하는 시간을 지정해준다. primary 서버에 접속을 할수 없으면 지정한 시간후에 다시 접속을 시도하게 된다.:ㅈ


Expire (3600000 ; Expire )
일정기간 이상 primary 서버에 접속하지 못한다면 이전에 가져왔던 정보들을 파기할 기간을 지정한다.

Menium TTL(Time to Live) (36000 ; Minimum) )
네임서버는 한번 찾았던 정보에 대해서 캐싱을 한다. 위에서 약간 언급했던 부분인데
www.hansungbok.com을 찾는 방법이 기억이 날 것이다. 브라우저의 요청 -> 최상위 네임서버 검색 -> ns.hansungbok.com -> www.hansungbok.com 이런 식으로 돌아간다는 것을 기억해주기 바란다. 그럼 매번 이런 방법을 거친다면 상당히 불편 할 것이다. 속도도 문제고 네트웍의 트래픽도 가중시킬 것이고, 이래서 네임서버들은 한번 요청했던 정보를 저장하고 있다. 이 시간이 짧으면 네임서버로 요청이 자주 들어올 것이고 (동적 IP에 도메인을 부여하는 곳이 이 시간이 짧다.) 시간이 길다면 오랫동안 정보가 저장이 되어 있기 때문에 변경이 되었을 때 바로 적용이 안 되는 경우가 생길 수 있다. 보통 하루정도의 시간을 두고 사용한다.

NS
네임 서버를 지정할때 쓰인다.
예) IN NS ns.hansungbok.com.

hansungbok.com.의 네임서버가 ns.hansungbok.com. 이라고 알려주는 역할을 한다.

A
도메인명 -> IP 주소를 지정할 때 쓰인다.
예) ns IN A 211.219.31.204
ns 만 적었다. 실제 네임서버 에서는 ns.linuxinfo.pe.kr 으로 인식을 한다. 시스템에 걸리는 부하를 분산하기 위해 네임서버를 여러 개 둘 수도 있다.

ns IN A IP.Address1
IN A IP.Address2
IN A IP.Address3

이처럼 하나의 도메인에 여러 개의 IP를 지정할 수 있다. Netscape 사와 MS 사의 홈페지에 몇 개의 IP 주소가 배당되어 있는지 nslookup 명령으로 다음과 같이 알아 볼 수 있다.
이렇게 해서 어떤 한 서버가 다운되어도 계속 적인 서비스가 가능하다.

[root@sungbok named]# nslookup www.netscape.com
Server: sungbok.hansungbok.com
Address: 211.219.31.204

Name: vwww-mv3.netscape.com
Address: 207.200.83.93
Aliases: www.netscape.com

[root@sungbok named]# nslookup www.microsoft.com
Server: hynetm.hanyang.ac.kr
Address: 166.104.27.6

Non-authoritative answer:
Name: microsoft.com
Addresses: 207.46.131.137, 207.46.131.30, 207.46.130.14, 207.46.130.149
207.46.130.45
Aliases: www.microsoft.com

[root@sungbok named]#

CNAME
별명(alias)를 지정할때 쓰인다.
예) php IN CNAME ns.hansungbok.com.
linux IN A 211.219.31.204 로 표시 하는 것과 같은 역할을 한다.
여기서도 '.'이 중요하다. 점하나 때문에 호스트 이름을 찾지 못할 것이다.

MX
Mail Exchanger 를 지정한다.
예) IN MX 0 mail.hansungbok.com.
이것은 메일 서버 자체를 포워드 하는 것이다. linuxinfo.pe.kr에서 sjang 이라는 사용자에게 계정을 발급하고 이 사용자에게 메일을 전달하기 위해서는 sjang@linuxinfo.pe.kr 로 메일을 보내면 된다. 이때 메일을 받게 되는 서버를 다르게 지정할 수 있다. 예제의 내용대로 하면 메일은 www3.hanyang.ac.kr 이라는 서버에 전달 되게 된다. 따라서, www3.hanyang.ac.kr 서버에 sjang 이라는 계정이 있어야 메일이 전달될 것이다. 이렇게 메일 서버를 다른 것으로 지정할 경우에 MX를 이용한다. 여러 개의 설정도 가능하다.
예) IN MX 0 mail.server.1
IN MX 10 mail.server.2
IN MX 100 mail.server.3
정해진 차례대로 시도를 한다.



/var/named/hansungbok.com.rev

@ IN SOA ns.hansungbok.com. sbhan73.dreamwiz.com (
20000302 ; Serial
36000 ; Refresh
3600 ; Retry
3600000 ; Expire
36000 ) ; Minimum

IN NS ns.hansungbok.com.


204 IN PTR www.hansungbok.com.
204.31.219.211 IN PTR php.hansungbok.com.
37.31.219.211 IN PTR linux.hansungbok.com.

PTR
IP -> 도메인명을 지정할때 쓰인다. 이 파일은 linuxinfo.db 파일에 반대라고 생각하면 된다. 각 IP를 도메인명으로 변환해 주는 역할이다.



/var/named/named.rev

@ IN SOA localhost. root.localhost. (
1997022700 ; Serial
28800 ; Refresh
14400 ; Retry
3600000 ; Expire
86400 ) ; Minimum
IN NS localhost.

1 IN PTR localhost.


/var/named/named.ca

; This file holds the information on root name servers needed to
; initialize cache of Internet domain name servers
; (e.g. reference this file in the "cache . <file>"
; configuration file of BIND domain name servers).
;
; This file is made available by InterNIC registration services
; under anonymous FTP as
; file /domain/named.root
; on server FTP.RS.INTERNIC.NET
; -OR- under Gopher at RS.INTERNIC.NET
; under menu InterNIC Registration Services (NSI)
; submenu InterNIC Registration Archives
; file named.root
;
; last update: Aug 22, 1997
; related version of root zone: 1997082200
;
;
; formerly NS.INTERNIC.NET
;
. 3600000 IN NS A.ROOT-SERVERS.NET.
A.ROOT-SERVERS.NET. 3600000 A 198.41.0.4
;
; formerly NS1.ISI.EDU.
;
. 3600000 NS B.ROOT-SERVERS.NET.
B.ROOT-SERVERS.NET. 3600000 A 128.9.0.107
;
; formerly C.PSI.NET
;
. 3600000 NS C.ROOT-SERVERS.NET.
C.ROOT-SERVERS.NET. 3600000 A 192.33.4.12
;
; formerly TERP.UMD.EDU
;
. 3600000 NS D.ROOT-SERVERS.NET.
D.ROOT-SERVERS.NET. 3600000 A 128.8.10.90
;
; formerly NS.NASA.GOV
;
. 3600000 NS E.ROOT-SERVERS.NET.
E.ROOT-SERVERS.NET. 3600000 A 192.203.230.10
;
; formerly NS.ISC.ORG
;
. 3600000 NS F.ROOT-SERVERS.NET.
F.ROOT-SERVERS.NET. 3600000 A 192.5.5.241
;
; formerly NS.NIC.DDN.MIL
;
. 3600000 NS G.ROOT-SERVERS.NET.
G.ROOT-SERVERS.NET. 3600000 A 192.112.36.4
;
; formerly AOS.ARL.ARMY.MIL
;
. 3600000 NS H.ROOT-SERVERS.NET.
H.ROOT-SERVERS.NET. 3600000 A 128.63.2.53
;
; formerly NIC.NORDU.NET
;
. 3600000 NS I.ROOT-SERVERS.NET.
I.ROOT-SERVERS.NET. 3600000 A 192.36.148.17
;
; temporarily housed at NSI (InterNIC)
;
. 3600000 NS J.ROOT-SERVERS.NET.
J.ROOT-SERVERS.NET. 3600000 A 198.41.0.10
;
; housed in LINX, operated by RIPE NCC
;
. 3600000 NS K.ROOT-SERVERS.NET.
K.ROOT-SERVERS.NET. 3600000 A 193.0.14.129
;
; temporarily housed at ISI (IANA)
;
. 3600000 NS L.ROOT-SERVERS.NET.
L.ROOT-SERVERS.NET. 3600000 A 198.32.64.12
;
; housed in Japan, operated by WIDE
;
. 3600000 NS M.ROOT-SERVERS.NET.
M.ROOT-SERVERS.NET. 3600000 A 202.12.27.33
; End of File

이 파일은 직접 만들 필요가 없다. 이 파일은 루트 네임서버에 대한 것들이다. ftp://FTP.RS.INTERNIC.NET/domain/named.ca에서 가져오기만 하면 된다.
지금까지 Prymiry 네임서버의 설정이었다. 보통은 Prymiry 네임서버만으로 운영을 하면 된다. 그러나, 대기업이나 학교 등에서는 각 부서별 또는 각 과별로 서브 도메인을 나누어 주고 각각에서 secondary 네임서버를 돌려주는 것이 더 효율적이다. 서버 부담을 분산시키는 점도 있고, 하위 도메인 관리에도 편리하기 때문이다.
혹시 이전 버전의 네임서버로 운영을 하고 있다면 bind패키지를 업그레이드를 한 후 named.boot파일을 named.conf로 변화 해주는 스크립트를 돌려주면 된다. 스크립트는 /usr/doc/bind-버전/named-bootconf.pl 에 있다. 이 스크립트를 실행한 후 /etc/named.conf 파일이 생성이 되었는지 확인해 보자. zone 파일들에 형식은 바뀌지 않았고 다만 /etc/named.conf 만 바뀌었을 것이다. 네임서버 설정이 제대로 되었는지 확인을 해보도록 하자. 설정이 마무리 되었으면 또는 zone(linuxinfo.db) 파일을 수정했다면 named를 재시작 해주어야 한다.

[root@www3 named]# /etc/rc.d/init.d/named restart
Shutting down named: [ OK ]
Starting named: [ OK ]
[root@www3 named]#


2). 네임서버 동작 확인

먼저 primary 네임 서버가 정상적으로 작동되는지 질의를 요청해서 확인해 보도록 한다.

/etc/resolv.conf 의 내용은 다음과 같이 설정한 네임서버로 설정한다. 이 것은 클라이언트에 대한 내용이므로 자세한 의미는 생략한다. nameserver 부분이 중요하다.

[root@www3 /root]# cat /etc/resolv.conf
search hansungbok.com
nameserver 211.219.31.204
[root@sungbok /root]#

지정한 네임서버가 제대로 동작하는 질의 요청을 해본다. nslookup 이라는 명령어가 있다. 이것 입력으로 도메인을 주면 IP 주소를 출력하고, IP를 입력하면 해당 도메인을 알 수 있게 해 준다.

[root@sungbok /root]# nslookup ns.hansungbok.com
Server: www.hansungbok.com
Address: 211.219.31.204

Server: www.hansungbok.com
Address: 211.219.31.204

[root@www3 /root]# nslookup linux.ilovelinux.pe.kr
Server: www.hansungbok.com
Address: 211.219.31.204

Non-authoritative answer:
Server: www.ilovelinux.pe.kr
Address: 211.219.31.204

[root@www3 /root]# nslookup 210.125.178.54
Server: www.hansungbok.com
Address: 211.219.31.204

Name: seminar.uos.ac.kr
Address: 210.125.178.54

[root@www3 /root]#

위와 같이 나온다면 정상적으로 작동되고 있는 것이다.

관련자료

댓글 0
등록된 댓글이 없습니다.
Today's proverb
해가 들면 어떻고, 바람이 불면 어떻고, 눈이 오면 어떠랴. 해가 들어주어도 고맙고, 바람이 불어주어도 고맙고, 눈이 와주어도 고마울 뿐. 그렇다, 고맙지 않은 것이 없다. 밤은 밤이어서 고맙고, 새벽은 새벽이어서 고맙고, 낮은 낮이어서 고맙다. 아, 고마운 삼라만상이여! (정채봉)