[이 문서에 기술된 내용은 CentOS 4.1이 아닌 다른 linux 서버에서는 정상적으로 동작하지 않을 수 있으며 이해를 위해서 카테고리의 다른 문서부터 순서대로 읽는 것이 좋습니다.]
만일 설치부터 필자를 계속 따라오신 분이라면 현재의 서버엔 BIND 9가 설치되어 있을 것이다.
확인해 보도록 하자.
# rpm -qa | grep bind
bind-libs-9.2.4-2
bind-utils-9.2.4-2
ypbind-1.17.2-3
bind-9.2.4-2
bind-chroot-9.2.4-2
네임서버도 설치되어 있나 확인해 보자.
# rpm -qa | grep name
caching-nameserver-7.3-3
이젠 서버에선 DNS를 설정할 준비가 끝났다.
아래 점섬내의 글은 BIND가 설치되지 않으신 분들만 보도록 하자~~
=======================================================================================
1. 설치
네임서버를 구축하기에 앞서 설치에 필요한 주요 패키지 목록을 확인해 보자.
bind-9.3.4-10.pl.el5 : bind의 기본 패키지.
bind-libs-9.3.4-10.pl.el5 : bind 서버패키지와 utils패키지에 의해 사용되는 라이브러리.
bind-utils-9.3.4-10.pl.el5 : dns 네임 서버를 질의하고 인터넷 호스트에 대한 정보를 찾는 유틸 모음이다. 이를 사용하여 주어진 호스트명에 ip주소를 결정할 수 있으며 등록된 도메인과 네트워크 주소에 관한 정보를 찾을 수 있다.
caching-nameserver-9.3.4-10.pl.el5 : bind운영에 필요한 환경설정파일 모음 패키지.
이외에 bind 개발관련 패키지나 zone파일을 db화 할 수 있는 패키지등 많은 관련 패키지들이 있으나 dns 설치,운영에 필요한 주요 피키지는 위의 네가지라 할 수 있겠다.
설치가 되어 있지 않다면 패키지 설치에 유용한 도구인 yum을 이용하여 설치해 주자.
#yum install bind
#yum install caching-nameserver
이렇게 설치가 끝났다면, dns 실행 준비가 된 것 입니다.
- CentOS 4.1 설치시 패키지선택에서 DNS 이름서버를 선택하면 위의 내용이 모두 설치됨.
(위와 같은 설치과정을 거칠 필요가 없음)
=======================================================================================
이해를 돕기위해 사용되는 예제에서 필자는 test.net 이란 가상의 도메인과 192.168.1.100 이란 공인IP를 사용하것으로 하겠다. (참고로 192.168.~ 로 시작되는 IP는 99% 공유기 IP이다.)
설마 아래의 내용을 보고 실제로 test.net으로 따라하시는 분은 없을거라 믿는다..
우선 도메인을 구입하기 위해서 whois.co.kr 에 접속했다.
test.net이란 도메인을 검색했더니 다행스럽게도 소유자가 없는 도메인으로 나와서
바로 회원으로 가입하고 1년 사용료 2만얼마를 내고 도메인을 구입했다.
네임서버를 지정하기 위해서 [내 도메인 관리]의 [호스트 관리] 메뉴로 들어가서...
ns.test.net 이란 호스트을 만들고 IP입력란에 192.168.1.100 라고 입력한후 호스트명 생성을 클릭.
[내 도메인 관리] - [네임서버 변경]으로 들어가서 1차 네임서버에 ns.test.net , 2차 네임서버는 whois에서 제공하는 네임서버명을 입력하고 저장했다.
(참고로 com 이나 .net은 외국도메인이라 적용되는데 평균 24시간정도가 소요된다.)
이제 다시 CentOS로 들어와서...
1.서버에서 도메인을 제일 먼저 찾는 곳
# vi /etc/hosts
=======================================================================================
127.0.0.1 test.net localhost
192.168.1.100 ns.test.net ns
=======================================================================================
위와 같이 바꾸도록 하자
2.서버에서 쓸 dns
# vi /etc/resolv.conf
=======================================================================================
domain test.net
search test.net
nameserver 192.168.1.100
nameserver 168.126.63.1
nameserver 168.126.63.2
=======================================================================================
3.도메인에 대한 ip를 찾을 때 참조할 순서
# vi /etc/host.conf
=======================================================================================
order hosts,bind
==> 초기 설치시 이렇게 되어 있으며, 의미는 /etc/hosts파일부터 찾고, bind에서 찾는다는의미
=======================================================================================
4.Zone 파일 및 케시 DNS서버에 대한 설정
# vi /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";
=======================================================================================
아래는 CentOS 6.2에서 실제 정상으로 시작이 수행된 파일의 내용이다.
=======================================================================================
//
// named.conf
//
// Provided by Red Hat bind package to configure the ISC BIND named(8) DNS
// server as a caching only nameserver (as a localhost DNS resolver only).
//
// See /usr/share/doc/bind*/sample/ for example named configuration files.
//
options {
listen-on port 53 { any; };
listen-on-v6 port 53 { ::1; };
directory "/var/named";
dump-file "/var/named/data/cache_dump.db";
statistics-file "/var/named/data/named_stats.txt";
memstatistics-file "/var/named/data/named_mem_stats.txt";
query-source port 53;
query-source-v6 port 53;
allow-query { any; };
recursion yes;
dnssec-enable yes;
dnssec-validation yes;
dnssec-lookaside auto;
/* Path to ISC DLV key */
bindkeys-file "/etc/named.iscdlv.key";
};
logging {
channel default_debug {
file "data/named.run";
severity dynamic;
};
};
zone "." IN {
type hint;
file "named.ca";
};
//include "/etc/named.rfc1912.zones";
// 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";
zone "test.net" IN {
type master;
file "test.net.zone";
allow-update { none; };
};
zone "0.0.127.in-addr.arpa" { //reverse domain - IP ~!!
type master;
file "test.net.rev";
allow-update { none; };
};
=======================================================================================
위 파일 내용들은 caching-nameserver에서 기본적으로 생성되는 것들이다. 대부분의 서버에서 별다른 설정하지 않고 사용하면 되고, 중요한 것은 다음 줄부터이다. test.net 이라는 도메인을 셋팅하도록 하겠다.
named.conf파일의 맨 아랫 줄에 아래의 내용을 추가한다.
=======================================================================================
zone "test.net" IN {
type master;
file "test.net.zone";
allow-update { none; };
};
zone "1.168.192.in-addr.arpa" { //reverse domain - IP가 역으로 입력되어 있는 것에 주목~!!
type master;
file "test.net.rev";
allow-update { none; };
};
=======================================================================================
zone 파일명은 test.net.zone으로 하였다.
위에서 추가한 도메인에 대한 zone 파일을 만들도록 하자..
# vi /var/named/chroot/var/named/test.net.zone
=======================================================================================
$TTL 86400
@ IN SOA ns.test.net. root.ns.test.net. (
2005101311 ; Serial
28800 ; Refresh
14400 ; Retry
3600000 ; Expire
86400 ) ; Minimum
IN NS ns.test.net.
IN MX 0 mail.test.net.
;
localhost IN A 127.0.0.1
@ IN A 192.168.1.100
www IN A 192.168.1.100
mail IN A 192.168.1.100
* IN A 192.168.1.100
=======================================================================================
# ln -s /var/named/chroot/var/named/test.net.zone /var/named/test.net.zone
(반드시 심볼릭 링크를 걸어야 한다~~!!!)
# vi /var/named/chroot/var/named/test.net.rev
=======================================================================================
$TTL 86400
@ IN SOA ns.test.net. root.ns.test.net. (
2005101312 ; Serial
28800 ; Refresh
14400 ; Retry
3600000 ; Expire
86400 ) ; Minimum
IN NS ns.test.net.
;
100 IN PTR ns.test.net.
100 IN PTR www.test.net.
100 IN PTR test.net.
=======================================================================================
위에서 100이란 숫자는 IP의 제일 마지막에 해당하는 숫자이다.
# ln -s /var/named/chroot/var/named/test.net.rev /var/named/test.net.rev
자.. 이제 모든 설정은 끝났다.. 사실 이제부턴 네임서버를 변경한 후 하루정도가 지나야 확실한 결과를 얻을 수 있다. 또한 방화벽을 설치했다면 외부에서 네임서버로 접근할 수 없으니 주의한다. 네임서버의 포트는 42로 방화벽에서 이 포트를 풀어야 한다.
설치와 설정이 끝났다면, DNS 서버를 시작하도록 한다.
(1) 시작
# /etc/rc.d/init.d/named start
*** 시작 시에 오류가 발생하는 경우,
/var/log/messages 를 살펴보고, /etc/named.conf 에서 설정한 파일명이 없는 경우,
/var/named/chroot/var/named/ 아래에 생성하여 주고,
/var/named/ 아래에 ln 명령으로 심볼릭 링크를 생성한다.
local에 관련된 오류는 아래의 파일내역을 참고해서 생성 후에 반드시, 심볼릭 링크를 생성하여 주고,
특히, local.ca 파일은 /var/named/chroot/var/named/ 아래로 mv 를 수행시켜 놓고,
동일한 방법으로 심볼릭 링크를 생성한 후, start를 수행하면 [ OK ]로 시작된다.
/var/named/chroot/var/named/named.local
=======================================================================================
$TTL 1D
@ IN SOA @ rname.invalid. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS @
A 127.0.0.1
AAAA ::1
;
1 IN PTR localhost
=======================================================================================
/var/named/chroot/var/named/named.local
=======================================================================================
$TTL 1D
@ IN SOA @ rname.invalid. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS @
A 127.0.0.1
AAAA ::1
;
localhost IN A 127.0.0.1
=======================================================================================
(2) 재시작
# /etc/rc.d/init.d/named reload
(3) 정지
# /etc/rc.d/init.d/named stop
(4) 서버시작시 자동으로 실행
# ntsysv
named 라는 서비스에 체크하고 OK로 저장하고 나오도록 한다.
(5) 호스트 네임 검사
# grep named /var/log/messages
(6) 설정한 도메인 확인하기
# nslookup
> test.net
Server: 168.126.63.1
Address: 168.126.63.1#53
Non-authoritative answer:
Name: test.net
Address: 192.168.1.100
> server 168.126.63.1
> set type=any
> test.net
--------------------------------------------------------------------------
/etc/vhosts 또는 resolv.conf를 수정 해 줘야 하는데 현재 웹서버를 호스트로 등록 하시면 되요.
다음에 /etc/named.caching-nameserver.conf를 수정하는데 처음 한 번만 수정 하면 다음에 수정 할일이 없습니다.
다음으로 zone 설정 파일에 도메인을 추가 합니다.
/etc/named.rfc1912.zones 도메인 추가 할 때마다 레코드를 추가 해 줘야 합니다.
zone "sir.co.kr" IN { type master; file "sir.co.kr.zone"; allow-update { none; };
sir.co.kr.zone이라는 파일에 도메인 정보를 넣게 되는데 새로 생성하시면 됩니다.
; 세미콜론 뒤에는 주석입니다. serial : 일련 번호 입니다. 존 파일이 수정 될 때마다 숫자가 커져야 합니다.
존 파일을 수정 했는데 이 숫자가 수정 전과 같거나 작으면 다른 네임서버들이 바뀐 내용을 읽어가지 않아요.
refresh : 이건 네임서버들이 이 존파일을 다시 읽어가는 시간입니다. 1H라고 하면 하시간에 한 번씩 이 존 파일을 참조합니다.
내용을 수정 하고 serial을 변경하지 않으면 refresh 시간 만큼 기다려야 합니다. 뒤에 M이나 H가 없으면 초단위입니다.
/var/named/chroot/var/named안에 존 파일을 생성하시고 /var/named에 sl로 심볼링크를 하세요.
존파일 권한이 root:named로 됐는지 꼭 확인 하셔야 합니다.
root로 존파일을 생성하면 root:root로 권한이 되는데 named를 아무리 실행해도 권한이 없어서 존파일을 열지 못하더라구요.
service named resstart 또는 service named start 이렇게 네임서버 실행하시고,
조금 있다가 nslookup으로 제대로 설정 됐는지 확인 해보세요.
나중에 화이트도메인 등록 할 때는 존파일 마지막에 한 줄 추가하는게 있는데 그건 kisa사이트에서 알려줍니다.
'Linux > CentOS' 카테고리의 다른 글
Apache,PHP,MySQL,Zend,OpenSSL,PEAR 설치 메모 (0) | 2012.04.09 |
---|---|
Gmail for CentOS (0) | 2012.04.03 |
CentOS에서 rpm 데이터베이스 문제로 yum을 사용할 수 없을때 (0) | 2012.03.09 |
Install Clam AntiVirus to protect from virus (0) | 2012.03.09 |
Linux용 백신관리자 (0) | 2012.03.09 |