본문 바로가기
HOWTO/IT | 컴퓨터

윈도용 네임서버 ISC BIND 설치하기

by Anakii 2008. 8. 25.

* 가장 먼저 해야 할 일은 네임서버를 돌릴 수 있는 도메인을 확보하는 일이다. 유동 IP환경에서 자주 바뀌는 아이피를 일정한 이름으로 가리켜 줄 도메인 서비스 중 무료인 것이 http://dnip.net 이다. 이 사이트로 가서 등록(Sign Up)하면 id.dnip.net 이라는 도메인을 무료로 받을 수 있다.

사용자 삽입 이미지

이렇게 받은 id.dnip.net 을 내 PC의 도메인이름으로 하고 ns.id.dnip.net 이라는 네임서버를 내 PC에 설치하면 내 PC가 쓸만한 네임서버가 된다.

리눅스에서 네임 서비스를 하는 데몬은 named인데 이것은 BIND라는 프로그램을 이용한다. 윈도에서도 같은 기능을 하는 서버를 설치할 수 있는데 바로
http://www.isc.org 에서 배포하는 윈도용 BIND이다. 2008년 8월 현재 최신 버전은 BIND 9.5.0-P2 이다.

[다운로드하기]

  1. 다운받은 BIND9.5.0-P2.zip 파일을 아무 곳이나 적당한 곳에 압축을 푼다.
  2. 압축을 풀어놓은 폴더에 들어가 BINDInstall.exe를 더블클릭하여 실행시키면 [BIND 9 Installer] 창이 열리는데 아래를 참고하여 입력상자에 입력한다.

    사용자 삽입 이미지

    Target Directory : BIND9을 설치할 폴더를 지정하는 부분. 여기에서는 C:\DNS라는 폴더에 설치하기로 한 것이다.
    Service Account Name : 서비스 계정 이름으로, named 를 쓰면 된다.
    Service Account Password : 적당한 암호를 입력한다.
    Confirm Service Account Password : 암호 확인을 위한 재입력
    나머지는 기본 상태대로 두고 [Install] 버튼을 클릭.
  3. 설치시작 전 폴더가 없으니 만들거냐고 물어보면 Y 그 이외의 할 일은 없다. 설치 중간에 비주얼C 컴포넌트를 설치하는 모습이 보인다.
    사용자 삽입 이미지 사용자 삽입 이미지
  4. 시스템 변수의 PATH 부분에 c:\dns\bin을 추가한다.
    사용자 삽입 이미지
    사용자 삽입 이미지
    사용자 삽입 이미지
  5. 윈도 BIND는 rdnc.key 파일과 rdnc.conf 파일이 etc폴더에 들어 있어야 한다. 아래와 같은 명령으로 이 두 파일을 생성한다. (먼저 c:\dns\bin 폴더로 이동한 뒤 명령을 입력)

    C:\Dns\bin>
    rndc-confgen -a
    C:\Dns\bin>
    rndc-confgen > C:\DNS\etc\rndc.conf
  6. 텍스트 편집기로 이 두 파일을 열고 rdnc.key 파일의 secret 부분의 내용(키값)을 rdnc.conf 의 secret 부분에 대체한다.

    [원래의 rdnc.conf 해당 부분]

    # Start of rndc.conf
    key "rndc-key" {
     algorithm hmac-md5;
     secret "DkOKMERNQqNHkZBgy1oT5Q==";  <--이 부분이 rdnc.key 에서 가져온 내용으로 수정될 부분
    };
  7. named.conf 만들기

    named.conf 파일은 아래와 같은 내용을 설정하는 가장 중요한 파일이다.

    (1) 각종 설정 파일들의 위치 / rndc로 named 제어를 허용 할 것인지 여부 / key 값 설정
    (2) 루트도메인(.)들을 지정하고 있는 파일 지정.  localhost의 IP 주소를 지정한 파일 지정
    (3) 127.0.0.1이 가리키는 도메인을 설정한 파일 지정
    (4) 하부 도메인(서브 도메인)들이 가리키고 있는 IP 주소를 지정한 파일 지정

    이 파일은 사용하고자 하는 네임서버의 용도에 맞게 메모장이나 텍스트 에디터를 이용하여 직접 만들어 주어야 한다.

    아래의 named.conf 파일 샘플을 참고하여 C:\DNS\etc\ 폴더에 named.conf 파일을 작성한다
    유의할 점은 공백 두 자 이상은 탭(Tab) 키를 이용하여 입력하여야 하며 주석문은 // 이다.
    아래의 예에서 오렌지색 글자만 자신의 환경에 맞게 수정하고 나머지는 그대로 입력하면 된다.

    C:\DNS\etc\named.conf 파일의 내용

    options {
     directory "C:\DNS\etc";
    };
    // 네임서버의 zone 파일들이 위치한 경로. 여기서는 c:\dns\etc

    controls {
     inet 127.0.0.1 allow { localhost; } keys { rndc-key; };
    };
    //인증 키 제어 부분

    zone "." IN {
     type hint;
     file "named.ca";
    };
    // 이 네임서버의 루트도메인(.)에 대한 정보는 named.ca라는 파일에 있다는 설정
    // 지정한 경로에 named.ca 파일이 존재해야 함

    zone "localhost" IN {
     type master;
     file "localhost.zone";                
     allow-update { none; };
    };
    // 이 네임서버의 localhost 도메인에 대한 정보는 localhost.zone 파일에 있다는 설정
    // etc 디렉터리에 localhost.zone 파일이 존재해야 됨

    zone "0.0.127.in-addr.arpa" IN {
     type master;
     file "named.local";
     allow-update { none; };
    };
    // localhost의 리버스 Domain에 대한 정보는 named.local 파일에 있다는 설정
    // named.local 파일 역시 /etc 디렉터리에 존재해야 됨

    include "C:\DNS\etc\rndc.key";
    // rndc.key 파일이 존재하고 있는 경로와 파일명

    zone "anakii.dnip.net" IN {    // anakii.dnip.net 은 zone name
    type master;
    file "anakii.dnip.net.zone"; // 도메인에서 ns를 제외하고 확장자로 .zone을 붙이는 것이 보통
    allow-update { key "rndc-key"; }; // rndc-key 값으로 zone 파일의 업데이트를 허용
    };

  8. 위와 같은 내용으로 etc 폴더에 named.conf 파일을 만들고 아래와 같은 명령으로 확인한다.

    c:\dns\bin\named-checkconf

    아무 반응이 없으면 설정 파일이 잘 만들어진 것이다.
  9. named.ca, localhost.zone, named.local 파일 만들기

    (1) named.ca 파일 만들기
    모든 네임서버는 반드시 최상위 도메인인 루트도메인에 대한 정보를 가지고 있어야 하는데 바로 named.ca 파일에 루트도메인에 대한 정보가 들어가 있다. 아래 링크된 INTERNIC 사이트에서 루트도메인에 대한 정보가 들어가 있는 named.root 파일에 마우스 우클릭하고 "다른 이름으로 대상 저장"을 선택한 뒤 etc 폴더에 named.ca란 이름으로 저장한다

    루트도메인파일 다운로드 링크 :
    ftp://ftp.rs.internic.net/domain/

    루트도메인 파일(named.root => named.ca)은 1년에 2번 정도 위의 URL에서 다운받아 업그레이드 해주는 것이 좋다고 한다

    (2) localhost.zone 파일 만들기
    localhost라는 도메인의 IP 주소는 내부 즉, 자기 자신을 가리키는 것으로써 루프 백(loop-back)을 의미한다. 어느 네임서버에서나 localhost는 127.0.0.1이라는 IP 주소를 가리켜야 하므로 아래의 내용과 똑같이 입력하여 localhost.zone 파일을 작성하면 된다.

    작성을 마친 다음 etc 디렉터리에 localhost.zone 이라는 파일명으로 저장한다.

    [localhost.zone 파일의 내용]
    $TTL 86400
    @    IN   SOA     @       root (
           42          ; serial
           3H         ; refresh
           15M       ; retry
           1W         ; expiry
           1D )       ; minimum
     IN    A     127.0.0.1
     IN    NS   @
     
    작성을 마친 후 zone 파일이 잘 만들어 졌는지 아래의 명령어로 확인한다.
    c:\dns\bin\named-checkzone localhost c:\dns\etc\localhost.zone

    zone localhost/IN: loaded serial 42
    라는 메세지가 나오면 OK!

    (3) named.local 파일 생성

    localhost 도메인의 리버스 Domain에 대한 정보를 설정한 파일로써 IP 127.0.0.1은 localhost 도메인을 가리키도록 설정한다. 이 파일 역시 별도로 수정할 필요가 없으며, 아래의 내용 그대로 입력하여 작성한 뒤 etc 폴더에 named.local 이라는 파일명으로 저장한다. (주의 : localhost 뒤에 있는 “.”을 반드시 넣어야 한다.)

    [C:\DNS\etc\named.local 파일의 내용]

    $TTL  86400
    @    IN    SOA        localhost.    root.localhost. (
                                2008083000 ; Serial
                                28800         ; Refresh
                                14400         ; Retry
                                3600000      ; Expire
                                86400 )       ; Minimum
           IN      NS        localhost.
    1     IN      PTR       localhost.

    작성을 마친 후 named.local 파일이 잘 만들어 졌는지 아래의 명령어로 확인한다.
    c:\dns\bin\named-checkzone named.local c:\dns\etc\named.local
    zone named.local/IN: loaded serial 2008083000
    라는 메세지가 나오면 OK!
  10. anakii.dnip.net.zone 만들기
    이 파일은 named.conf 안에서 anakii.dnip.net 을 관리하도록 설정한 파일이다. 이 zone파일의 일반적인 형태는 아래와 같다.

    [zone파일의 일반적인 형태. ; 는 주석을 의미한다]

    $TTL 43200
    @    IN    SOA    ns.anakii.dnip.net.    root.anakii.dnip.net. (
                            2008083000  ; 시리얼 값 (년월일시간)으로 대부분 셋팅
                            3H              ; 2차 네임서버가 1차 네임서버에 접속하는 시간
                            15M            ; 접속 실패 시 다시 시도할 시간 간격
                            1W              ; 1차 네임서버에서 데이터가 없다면 1주 이후에 지워진다.
                            1D )            ; 위에서 설정한 TTL 값과 같은 의미
    ;
    ; Name Server
          IN     NS      ns.anakii.dnip.net. ; 도메인을 소유한 DNS의 도메인(마지막 . 중요!)
          IN     MX 10  mail.anakii.dnip.net. ; 메일서버가 없다면 필요없다
          IN     A         61.252.247.181  ; 도메인이 찾아갈 IP 주소
    ;
    ; Host name
    ns   IN    A         61.252.247.181  ;
    ;
    ; Virtual Host
    www    IN    A   61.252.247.181  ;
    www.anakii.dnip.net의 IP주소
    mail      IN    A   61.252.247.181  ; mail의 IP주소
    ftp        IN    A   61.252.247.181  ;
    ftp의 IP주소
    *          IN    A   61.252.247.181  ; 모든 서브 도메인이 찾아갈 서버 ip 주소

    작성을 마친 후 zone 파일이 잘 만들어 졌는지 아래의 명령어로 확인한다.
    c:\dns\bin\named-checkzone anakii.dnip.net c:\dns\etc\anakii.dnip.net.zone

    zone anakii.dnip.net/IN: loaded serial 2008083000
    라는 메세지가 나오면 OK!
  11. 네임서버 동작 테스트 하기
    시작-실행 창에 cmd 를 입력하여 도스창을 띄우고 아래와 같이 입력하여 네임서버를 테스트해 본다
    C:\>nslookup ns.anakii.dnip.net [엔터]
    아래와 같이 제대로 내 PC 의 공인 아이피를 가리킨다면 성공!
    사용자 삽입 이미지

그 외 기타 유용한 정보.

(1) 범용 네임서버
203.248.252.2 : 데이콤 보라넷
168.126.63.1,2 : 코넷