본문 바로가기

StoreHouse/Server

RedHat 9 에서DNS 설정

RedHat Linux 9 기반의 강좌를 쓰기 시작한지두 오래 된 것 같은데. ^^ 많은 사람들의 요청으로 DNS 강좌 까지 쓰게 되었습니다. 커다란 흐름은 DNS 강좌 까지이며, 필요한 강좌의 요청이 많거나 꼭 필요하다고 생각 드는 강좌를 올리도록 하겠습니다.
DNS 서버를 직접 운영한다는 것은 조금 위험부담과 서버 이전에 있어 문제가 가장 크기 때문에 같은 서버에 DNS를 같이 운영하는 것은 별로 좋은 방법은 아닙니다. 하지만, 본 강좌를 보시구 계시는 분들 대부분은 한 대의 서버에 DNS 까지 운영하시려고 할 것입니다. 물론 커다란 전문 지식 보단 간단하고 빨리 설치 해서 운영하는 것이 목적일 것입니다. 설치에서 운영까지 또 몇가지 팁에 대해서 써 내려 가도록 하겠습니다.
DNS 는 도메인을 --> ip로 , ip를 도메인으로 바꾸는 역할을 합니다. 대부분 도메인을 ip로 바꾸려고 사용합니다. 하나의 도메인은 여러 ip를 가질 수 있고, 여러 도메인은 하나의 ip를 가질 수 있습니다. (본 강좌는 ip==> 도메인 으로 바뀌는 부분에 대해서는 언급하지 않겠습니다.)
사용자의 pc에서 www.superuser.co.kr 이라고 입력하면, PC에 설정된 대표 DNS에 접속해서 도메인에 대한 ip를 찾으려고 할 것입니다. DNS 는 superuser.co.kr의 서브 도메인인 www.superuser.co.kr 의 ip를 찾아서 알려주게 됩니다.

** 참고. 국내 대표 DNS입니다. (다른 것이 있으면 본 강좌의 마지막 부분에 나오는 주소로 메일 한 통 부탁합니다.^^)
한국통신 도메인 kornet.net : DNS 서버 168.126.63.1, 168.126.63.2
천리안/보라홈넷 도메인 chollian.net : DNS 서버 164.124.101.2
두루넷 도메인 thrunet.com : DNS 서버 210.117.65.1, 210.117.65.2
하나로통신 도메인 hanafos.net : DNS 서버 131.107.1.7
드림라인 도메인 dream.net : DNS 서버 210.181.4.25

1. 설치
설치는 간단하게 rpm 설치 하는 법만 설명하도록 하겠습니다.
RH9에서 DNS와 관련된 패키지는 다음과 같습니다. (bind9)
bind-9.2.1-16 DNS (도메인 이름 시스템) 서버.
bind-devel-9.2.1-16 bind DNS 개발을 위해 필요한 파일들과 라이브러리들이 포함되어 있습니다.
bind-utils-9.2.1-16 DNS 네임 서버들을 질의(query)하는 유틸리티.
caching-nameserver-7.2-7 캐싱 네임 서버를 설정하는데 필요한 설정 파일들.
redhat-config-bind-1.9.0-13 Red Hat DNS 설정 도구.

위 패키지들 중에 bind-devel-9.2.1-16 는 설치하지 않도록 하겠습니다. ^^; 개발에 필요한 것이기 때문이죠.
위 패키지들을 rpm -qa | grep bind 해서 확인하시고 없으면 . 다음과 같이 설치하세요

[root@test root]# rpm -Uvh http://ftp.superuser.co.kr/pub/redhat/9/RPMS/bind-utils-9.2.1-16.i386.rpm
http://ftp.superuser.co.kr/pub/redhat/9/RPMS/bind-utils-9.2.1-16.i386.rpm(을)를 설치합니다.
경고: /var/tmp/rpm-xfer.alMSwn: V3 DSA signature: NOKEY, key ID db42a60e
준비 중... ########################################### [100%]
1:bind-utils ########################################### [100%]

[root@test root]# rpm -Uvh http://ftp.superuser.co.kr/pub/redhat/9/RPMS/bind-9.2.1-16.i386.rpm
http://ftp.superuser.co.kr/pub/redhat/9/RPMS/bind-9.2.1-16.i386.rpm(을)를 설치합니다.
경고: /var/tmp/rpm-xfer.nQzU46: V3 DSA signature: NOKEY, key ID db42a60e
준비 중... ########################################### [100%]
1:bind ########################################### [100%]

[root@test root]# rpm -Uvh \
http://ftp.superuser.co.kr/pub/redhat/9/RPMS/redhat-config-bind-1.9.0-13.noarch.rpm
http://ftp.superuser.co.kr/pub/redhat/9/RPMS/redhat-config-bind-1.9.0-13.noarch.rpm(을)를 설치합니다.
경고: /var/tmp/rpm-xfer.zzLRVz: V3 DSA signature: NOKEY, key ID db42a60e
준비 중... ########################################### [100%]
1:redhat-config-bind ########################################### [100%]

[root@test root]# rpm -Uvh \
http://ftp.superuser.co.kr/pub/redhat/9/RPMS/caching-nameserver-7.2-7.noarch.rpm
http://ftp.superuser.co.kr/pub/redhat/9/RPMS/caching-nameserver-7.2-7.noarch.rpm(을)를 설치합니다.
경고: /var/tmp/rpm-xfer.uVhcKH: V3 DSA signature: NOKEY, key ID db42a60e
준비 중... ########################################### [100%]
1:caching-nameserver ########################################### [100%]

이렇게 설치가 끝났다면, dns 실행 준비가 된 것 입니다.

2. 초기 셋팅
설치는 간단했지만, 이제부터 조금 길어질 것입니다. 최대한 간단히 설명하도록 하겠습니다.
(1) /etc/hosts 파일 (서버에서 도메인을 제일 먼저 찾는 곳)
형식 : 아이피 도메인 알리아스
127.0.0.1 localhost localhost.localdomain
이렇게 되어있기 때문에 localhost 라고 입력하면 127.0.0.1을 찾는 것입니다.

(2) /etc/resolv.conf (서버에서 쓸 dns)
search 도메인 : 여기에는 보통 자기 도메인 또는 localhost를 적습니다.(3개까지 가능)
nameserver 아이피 : 서버에서 사용할 dns를 적습니다. 주로 위에서 설명들인 대표 dns를 적습니다.(3개까지)
예)
search localhost
nameserver 168.126.63.1
nameserver 168.126.63.2

(3) /etc/host.conf (도메인에 대하 ip를 찾을 때 참조할 순서)
order hosts,bind ==> 초기 설치시 이렇게 되어 있으며, 의미는 /etc/hosts파일부터 찾고, bind에서 찾는다는의미

(4) /etc/named.conf
options {
directory "/var/named"; // zone 파일을 저장할 디렉토리
// query-source address * port 53; // DNS 서버의 ip와 포트 설정 (기본)
controls { //==> 127.0.0.1 에서 rndc로 접속시 컨트롤 가능하다는 의미
inet 127.0.0.1 allow { localhost; } keys { rndckey; };
};
// 캐시 네임 서버 설정
zone "." IN {
type hint;
file "named.ca";
};
// localhost 에 대한 설정
zone "localhost" IN {
type master;
file "localhost.zone";
allow-update { none; }; //다이나믹 하게 업데이트를 허용할것인지 설정한다. 대부분 none
};
// 127.0.0.X 에 대한 역 도메인
zone "0.0.127.in-addr.arpa" IN {
type master;
file "named.local";
allow-update { none; };
};
include "/etc/rndc.key";

위 파일 내용들은 caching-nameserver-7.2-7, redhat-config-bind-1.9.0-13 패키지를 깔면 생성되는 것들입니다. 대부분의 서버에서 별다른 설정하지 않고 사용 하시면 됩니다.

중요한 것은 다음 줄부터입니다. 0link.co.kr 이라는 도메인을 셋팅해 보도록 하겠습니다.

zone "0link.co.kr" IN { type master; file "0link.co.kr.zone"; allow-update { none; }; };
위와같이 추가 합니다.
zone 파일명은 0link.co.kr.zone으로 하였습니다.

(5) /var/named/*
이 디렉토리는 존 파일 및 케시DNS서버에 대한 파일... 등등등 이 들어가지만, 손대지 않도록합니다.
위에서 추가한 도메인에 대한 zone 파일을 만들어 보도록 하겠습니다.
/var/named/0link.co.kr.zone
$TTL 86400
@ IN SOA ns.0link.co.kr. root.0link.co.kr. (
2004062300 ; 시리얼값 (년월일시간)으로 대부분 설정합니다.
3H ; 2차 네임서버가 1차 네임서버에 접속하는 시간
15M ; 접속 실패시 다시 시작할 시간 간격
1W ; 1차 네임서버에 데이터가 없다면 1주 이후에 지워진다.
1D ) ; 위에서 설정한 TTL값과 같은 의미
;
IN NS ns.0link.co.kr. ; 도메인을 소유한 DNS의 도메인
IN MX 10 mail.0link.co.kr. ; 메일을 보낼 도메인 또는 주소
IN A 210.114.223.194 ; 도메인이 찾아갈 IP주소
www IN A 210.114.223.194 ; www.0link.co.kr 도메인이 찾아갈 IP주소
mail IN A 210.114.223.194
* IN A 210.114.223.194 ; 모든 서브 도메인이 찾아갈 서버 IP

처음 줄의 $TTL(Time To Live)은 아주 중요합니다. 다른 DNS 서버에서 이 도메인에 대한 조회를 한 다음 , 그 데이터를 보관할 시간입니다. 86400은 86400초를 의미하고 계산해 보시면 하루 정도가 됩니다. 기본으로 이 값을 많이 사용합니다. 하지만 서버이전을 계획하고 계시다면, 2~3일 전에 400 정도로 바꾸어 두고 시작하시기 바랍니다.
그리고 모든 값들을 수정후에는 꼭 시리얼 값을 바꾸어 설정된 값보다 큰값으로 설정해 주시기 바랍니다.

3. DNS 운영
설치와 설정이 끝났다면, DNS 서버를시작해야 합니다.
(1) 시작
[root@test root]# /etc/rc.d/init.d/named start
named 를 시작 합니다: [ 확인 ]

(2) 재시작
[root@test root]# /etc/rc.d/init.d/named reload
named를 재시작 하고 있습니다: [ 확인 ]

(3) 정지
[root@test root]# /etc/rc.d/init.d/named stop
named 를 정지함:
이렇게 되면서 정지가 되지 않았습니다.
[root@test root]# ps -ef | grep named
named 17585 1 0 22:39 ? 00:00:00 [named]
root 17728 17314 0 22:42 pts/2 00:00:00 grep named

bind 는 아래 명령어를 사용해서 정지 시킬 수 있으나 먹지 않더군요(권장사항인데...)
[root@test root]# rndc stop
그래서 할 수 없이 깔끔하게 프로세스를 죽였입니다.
[root@test root]# killall named
[root@test root]# ps -ef | grep named
root 17757 17314 0 22:43 pts/2 00:00:00 grep named


(4) 서버 부팅시 자동 실행
아래와같이 ntsysv 명령어로 설정합니다.



(5) 설정한 도메인 확인하기 (Windows XP의 NSLOOKUP 이용)
Microsoft Windows XP [Version 5.1.2600]
(C) Copyright 1985-2001 Microsoft Corp.

C:\Documents and Settings\doly>nslookup
Default Server: kns.kornet.net
Address: 168.126.63.1
> server ns.superuser.co.kr
Default Server: ns.superuser.co.kr
Address: 211.220.193.181
> set debug <== 디버그 모드로 설정
> 0link.co.kr
Server: ns.superuser.co.kr
Address: 211.220.193.181
------------
Got answer:
HEADER:
opcode = QUERY, id = 3, rcode = NOERROR
header flags: response, auth. answer, want recursion, recursion avail.
questions = 1, answers = 1, authority records = 1, additional = 1
QUESTIONS:
0link.co.kr, type = A, class = IN
ANSWERS:
-> 0link.co.kr
internet address = 210.114.223.149
ttl = 400 (6 mins 40 secs)
AUTHORITY RECORDS:
-> 0link.co.kr
nameserver = ns.kebia.net
ttl = 400 (6 mins 40 secs)
ADDITIONAL RECORDS:
-> ns.kebia.net
internet address = 211.220.193.181
ttl = 64800 (18 hours)
------------
Name: 0link.co.kr
Address: 210.114.223.149
> ls -t MX 0link.co.kr < == 메일 레코드인 MX 레코드 조회
[ns.superuser.co.kr]
Received AXFR message: questions=1, answers=14
0link.co.kr. 400 IN MX 0 mail.0link.co.kr


이렇게 운영중인 도메인에 대한 값을 조회 해 볼 수 있습니다.


4. 마치며..
DNS 서버는 다른 서버들과 마찬가지로 어려운 부분입니다. 본강좌는 단순히 설치 강좌이며, 한 없이 부족함을 느낄 것입니다. 수퍼유저코리아 사이트에 좋은 자료들이 많으니 이것 저것 많이 보시고 응용해 보시기 바랍니다.
혹시 본 강좌에 대한 오타 및 건의 사항이 있으면, 메일 한통 보내주기 바란다. 메일주소는 doly 골뱅이superuser.co.kr 이다. 메일 주소를 무단 수집해서 스팸메일을 보내는 이를 막기 위해서 위와 같이 표기했으며, 골뱅이 부분은 @ 치환하면 된다.
이상... 수퍼유저 운영자 doly ... 2004년 더운 6월

출처 슈퍼유저