Server Admin

본문 바로가기
사이트 내 전체검색


RedHat Linux >> Server Administration for Redhat Linux
[목차]
제2장 DNS 서버

    2. Bind-8 설치하기


네임 서버를 운영하기 위해서 서버측 데몬 프로그램이 필요하다. BIND(berekeley Internet Name Daemon)는 데이터베이스의 관리가 쉽고, 유닉스 계열에서 네임 서버 데몬으로 가장 널리 사용되고 있는 검증된 도구중 하나이다. 배포처인 ISC(Internet Software Consortium)에서 BIND의 최신 버전을 확인할 수 있으며, BIND에 대한 정보를 구할 수 있다. 가장 최신 버전은 BIND 9 rcl이지만, 정식 버전은 BIND 8.2.2 P5이다.

가. 패키지 설치

직접 소스를 구해서 컴파일하여 설치할수도 있지만, 많이 사용하는 레드햇 계열의 리눅스 배포판을 기준으로 설명하자면 <표1>에서 보는 바와 같이 적어도 세 개의 패키지가 필요하다. 설치는 rpm-Uvh 패키지명을 통해 하면 된다. 패키지는 국내 리눅스 배포판이나 국외 리눅스 배포판에서 찾을수 있다.

#rpm -Uvh bind-8.2.2_P5-9.i386.rpm

#rpm -Uvh bind-utils-8.2.2_P5-i386.rpm

#rpm -Uvh bind-nameserver-6.2-2.noarch.rpm

-----------------------------------------------------------------------------------

패키지 설명

-----------------------------------------------------------------------------------

bind-8.2.2_P5-9.i386.rpm bind 기본 패키지(필수)
bind-utils-8.2.2_P5-i386.rpm DNS네임 서버 쿼리를 위한 명령어(필수)
bind-devel-8.2.2_P5-9.i386.rpm 프로그램 개발을 위한 헤더파일(선택)
bind-nameserver-6.2-2.noarch.rpm cache 파일 및 설정 파일 (필수)

-----------------------------------------------------------------------------------


나. 소스 컴파일을 통한 설치

먼저 http://www.isc.org/products/BIND사이트를 방문하여 BIND 최신 버전의 소스코드를 받아 옶니다. 이미 여러분의 컴퓨터에 rpm패키지로 BIND가 설치되어 있다면 rpm -e 명령을 이용해서 지워줍니다.

지울 때 나중에 Run-level 스크립트 파일을 사용하기 위해 백업하면, 나중에 사용할 수 있다.

# cd /etc/rc.d/init.d
# cp named named.backup

# cd /etc
# cp named.conf named.conf.backup

# cd /var
# cp -r named named.backup

 

# rpm -qa| grep bind

bind-devel-8.2.2_P7-1
bind-8.2.2_P7-1
bind-utils-8.2.2_P7-1

# rpm -e bind-devel
# rpm -e bind-utils
# rpm -e bind

error: removing these packages would break dependencies:
        bind is needed by caching-nameserver-7.0-6
# rpm -e caching-nameserver

# rpm -e bind

#

 

bind-8.2.4버전의 소스를 이용하여 설치해 보겠다.

# mkdir bind-8.2.4

# mv bind-src.tar.gz bind-8.2.4/

# cd bind-8.2.4/

# tar xvfz bind-src.tar.gz

src라는 디렉토리가 만들어지고, 그안에 압축이 풀린다.

# cd src

# less INSTALL

# make stdlinks

/usr/obj/named디렉토리에 설치할 경우에 입력한다.

# make clean

# make depend

# make all

# make install

 

# cd /etc/rc.d/init.d

# cp named.backup named

# cd /etc/

# cp named.conf.backup named.conf

# cd /var

# cp -r named.backup named

named 데몬을 실행할 수 있는 사용자 추가하기

# groupadd -g 25 named

# useradd named -u 25 -g 25 -d /var/named -s /bin/false

 

다. nsswitch.comf 설정

네임서버와 관계 있는 행은 hosts부분입니다. files는 /etc/hosts파일을 가리키며, dns는 네임서버를 의미합니다.

# vi /etc/nsswitch.conf

... 생략

# Legal entries are:
#
#       nisplus or nis+         Use NIS+ (NIS version 3)
#       nis or yp               Use NIS (NIS version 2), also called YP
#       dns                     Use DNS (Domain Name Service)
#       files                   Use the local files
#       db                      Use the local database (.db) files
#       compat                  Use NIS on compat mode
#       hesiod                  Use Hesiod for user lookups
... 생략

hosts:      files nisplus nis dns

부분을

hosts:      files dns nisplus nis

와 같이 수정합니다.

 

라. named.comf 설정

패키지를 설치했다면 수정해야 하는 설정 파일들이 있다 그중 named.conf는 bind의 네임 데몬 프로그램인 named의 환경을 설정해 주는 파일이다.

리눅스에서 설정 파일들이 그러하듯 /etc 디렉토리 밑에 있다. 아직 아무 것도 고치지 않았다면, 설정은 cache only 서버로 동작할 수 있도록 되어 있다.

named.conf를 보면 두 개의 zone이 정의되어 있다 이 두 zone 설정은 임의로 수정해선 안된다. 이 두 zone 설정은 primary나 secondary에 포함되어 있어야 하는 기본 zone이다.

# vi /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 "176.230.211.in-addr.arpa" {
type master;
file "named.rev";
};
//
zone "leelab.co.kr" {
type master;
file "named.default";
};
//
 

 

type으로 보면 hint, master가 있는데, 이외에도 slave가 있다. hint는 루트 도메인을 관리하는 최상의 도메인 서버의 데이터를 가지고 있는 캐시 파일을 지정할 때 사용한다. file "named.ca"라고 되어 있는 named.ca가 캐시 파일이다. 캐시 파일은 ftp.rs.internic.net/domain/named.root에서 배포하는 것으로, named.root를 named.ca로 이름만 바꿨을 뿐이다. 정기적으로 이 캐시 파일을 갱신할 필요가 있다. 그러나 그렇게 자주 바뀌지는 않는다. 일년에 한두 번 갱신만 해주어도 충분하다. master는 primary를 slave는 secondary를 의미한다.

directory "/var/named"; 라고 된 부분이 있는데, 이곳이 zone 파일의 위치를 지정하는 곳이다. file 다음에 오는 것들은 모두 directory에서 지정한 곳에서 찾게 된다.

zone 다음을 살펴보면 "."은 앞서 설명했던 루트도메인을 의미한다. 루트도메인은 생략해서 사용한다고 했지만 네임 서버 설정에선 생략할 수 없지 않겠는가. 그런데 두 번째 zone을 보면 낯선 것이 있다. 0.0.127.in-addr.arpa라고 된 부분인데, 이는 로컬 IP인 127.0.0.x에 대한 설정이다. reverse zone설정은 IP를 거꾸로 적으며, IP뒤에 .in-addr.arpa라고 적는다.

forward와 reverse라는 말이 나오는데, forward는 네임->IP로, reverse는 IP->네임으로 변환해 주는 것을 뜻한다. 즉, forward zone이라는 것은 네임을 IP로 변환해 주기 위한 데이터를 가지고 있는 zone파일이고, reverse zone은 반대로 IP를 네임으로 변환해 주기 위한 데이터를 가지고 있는 zone파일이다. 그러나 일반적으로 reverse zone에 대한 설정은 없는 경우가 많다.

만약, leelab.co.kr이라는 네임이 211.230.176.x 대의 IP를 사용한다고 가정해 보자. 그렇다면 leelab.co.kr의 primary 네임 서버의 named.conf에 forward zone과 reverse zone으로서 추가될 내용이다.

 

/etc/named.conf에 추가할 부분

zone "176.230.211.in-addr.arpa" {
type master;
file "named.rev";
};
//
zone "leelab.co.kr" {
type master;
file "named.default";
};
//

secondary 네임 서버의 named.conf을 보면 primary와 다른 것이 없으나, masters { primary의 IP; };라는 것이 추가된다. 이는 primary에서 zone 파일을 가져와 file에 지정된 이름으로 저장하는 것을 의미한다. 다음은 secondary 로서 leelab.co.kr에 대한 named.conf에 추가되어야 할 내용이다.

/etc/named.conf에 추가할 부분

zone "leelab.co.kr" IN {
type slave;
file "name.rev-sec";
masters { 211.230.176.1; };
};

zone "176.230.211.in-addr.arpa" IN {
type slave;
file "named.default-sec";
masters { 211.230.176.1; };
};

 

마. zone 파일 설정

도메인에 대한 데이터를 가지고 있는 파일인 zone파일에 대해 알아보겠다. named.ca는 ftp.rs.internic.net/domain/named.root로서 이 파일을 named.ca라고 이름만 살짝 바꾼 것이 아니라 internic에서 배포하는 파일이다.

named.local은 로컬호스트에 대한 reverse zone파일이다. 필요하다면 수정해도 되지만, 특별히 수정할 필요는 없다. 이것은 127.0.0.x을 lacalhost로 매핑해 주는 역할만 한다.

이제 우리가 만들어야 할 파일은 두 개이다. name.rev과 named.default 파일이다. 이는 primary에만 만들면 되며, secondary는 primary에서 가져오니 만들어줄 필요가 없다. 그중 named.default은 다음과 같다.

 

# vi /var/named/named.default

@ IN SOA ns.leelab.co.kr. root.ns.leelab.co.kr. (

           2000080100     ;Serial
           10800          ;Refresh
           1800           ;Retry
           3600000        ;Expire
           43200          ;Minimm
)

          IN NS ns.leelab.co.kr.
          IN NS ns2.leelab.co.kr.
          IN MX 10 mail

ns        IN A 211.230.176.1
ns2       IN A 211.230.176.2
www       IN A 211.230.176.3
mail      IN A 211.230.176.3
          IN HINFO "Linux Server"
ftp       IN CNAME www

zone 파일의 1열을 보면 '@'이 있다. 이는 leelab.co.kr.을 뜻한다. IN은 클래스명이고, SOA는 레코드로 해당 도메인이 leelab.co.kr에 대해 네임 서버가 인증된 자료를 갖고 있음을 나타낸다. root.lab.co.kr은 root@leelab.co.kr을 뜻하는 것으로, 네임 서버 관리자의 이메일 주소이다. 이메일 주소가 root.leelab.co.kr과 같이 @이 아닌 (.)으로 구분한다는 것을 주의하기 바란다. 또한 각 도메인의 끝엔 (.) 루트도메인이 꼭 포함된다는 것도 잊지 말자.

다음으로 Serial, Refresh, Retry, Expire, Minimum을 보면 Serial을 제외한 네 개의 필드는 초 단위의 시간을 뜻한다. 각각에 대한 의미는 다음과 같다.

Serial : Secondary가 zone 파일의 수정 여부를 알 수 있도록 하기 위한 것이다. serial의 표기는 YYYYMMDDNN형식으로 하며, secondary는 이를 통해 primary보다 작으면 zone을 재전송 받는다.

Refresh: Primary측의 zone데이터베이스 수정 여부를 secondary가 검사하는 주기이다.

Retry : Secondary측에서 Primary의 연결이 안될 때 재시도하는 시간 주기이다.

Expire : 오래된 백업 카피 자료의 유효기간으로, secondary는 이 기간이 만료되면 더 이상 유효하지 않다고 본다.

Minimum : 다른 네임 서버가 본 zone에 기술된 자료를 가지고 갔을 경우 그 자료에 대한 유효기간이다.

레코드엔 NS(Name Server), A(Address),CNAME(Canonical Name), MX(Mail eXchanger), PTR(Pointer) 그리고 그 외 HINFO, TXT, RP 등과 같은 것들이 있다. NS는 네임 서버를 지정할 때 사용한다. 또는 다른 네임 서버로 서브 도메인을 위임할 때도 사용하는데, 이에 대한 것은 생략하겠다. A와 CNAME은 도메인에 IP를 부여할 때 사용한다. CNAME의 경우 위에서 보는 바와 같이 www와 ftp가 같은 IP를 공유할 때 이용한다. 그러나 A만을 이용하여 같은 IP를 공유해도 된다.(아래)

www       IN A 211.230.176.3

ftp       IN A 211.230.176.3

CNAME 레코드를 사용할 때 주의할 점이 있는데, 이는 MX, NS등의 레코드에 CNAME으로 설정된 도메인을 넣어서는 안된다.

ftp       IN CNAME www ;(x)
          IN MX mail

power     IN MX 10 mail ;(x)
          IN CNAME ns

MX는 메일 라우팅을 지정할 때 사용하며, MX 다음에 오는 수는 작을수록 우선 순위가 높다. PTR은 reverse zone에서 사용하는 것으로, IP 주소에 대해 도메인명을 매핑해 줄 때 사용한다. 이는 중복을 허용하지 않는다. 그 외 HINFO, TXT는 정보를 표시할 때 사용하며, RP는 담당자의 정보를 갖는다. 그러나 이러한 HINFO, TXT, RP와 같은 레코드는 보안을 이유로 사용하지 않는 경우도 있다.

reverse zone 파일인 named.rev은 다음과 같다.

 

# vi /var/named/named.rev

@ IN SOA ns.leelab.co.kr. root.ns.leelab.co.kr.      (
                2000080100         ;Serial
                10800                 ;Refresh
                1800                   ;Retry
                3600000              ;Expire
                43200                 ;Minimum
)
                IN NS ns.leelab.co.kr.
                IN NS ns2.leelab.co.kr.

1              IN PTR ns.leelab.co.kr.
2              IN PTR ns2.leelab.co.kr.
3              IN PTR www.leelab.co.kr.

 

바. resolve.conf

resolve.conf는 네임 서버가 설치되지 않았더라도 인터넷을 사용하기 위하여 설정해주는 네트웍 기본 설정 중 하나이다. 여기서는 도메인 네임 서버에 맞게 수정한다고 생각하고 언급하겠다.

/etc/resove.conf

search leelab.co.kr
nameserver 211.230.176.1
nameserver 211.230.176.2

 

[목차]

개인정보취급방침 서비스이용약관 모바일 버전으로 보기 상단으로

TEL. 063-469-4551 FAX. 063-469-4560 전북 군산시 대학로 558
군산대학교 컴퓨터정보공학과

Copyright © www.leelab.co.kr. All rights reserved.