Skip to content

조회 수 7675 추천 수 0 댓글 0
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄

Bind 8.x 버전대의 DNS 서버를 오래전 설치 이후로 변경없이 사용해오다 최근에 와서, 불규칙적으로 특정 사이트로의 query가 불가능 하게 되는 등 DNS서버에 몇가지 문제가 발생, 이를 해결하기위해 조사를해보니 가장 최선의 방법이 Bind 버전 업그레이드라는 것을 알게되었다.

 

그리하야 이번에는 Bind 9.x 버전으로의 업그레이드에 대해 알아보겠다.

정확히는 새로운 OS와 Bind를 설치하니 업글보다는 신규설치에 가깝지만 기존 configuration을 그대로 가져다 쓰니 그냥 업그레이드라고 지칭하겠다.

 

◎시나리오

Solaris 8에 OS에 내장된 bind8 을 사용하는 DNS를 Solaris 10에 bind 9 패키지를 설치하여 DNS를 업그레이드 한다

* 장비: Sunfire V880

* OS: Solaris 10 (sparc)   --> 최신버전의 Bind를 설치하기 위해 최신 revision의 OS를 추천한다.

* Domain name: test.co.kr

* Bind 8.x 대에서 9.x 대로의 업그레이드를 가정함

 

 

 

1. 기존 DNS configuration backup

기존의 zone file등을 그대로 사용해야 하기에 아래 파일들을 따로 저장해둔다.

- /etc/named.conf

- /var/named 디렉토리 안의 모든 파일들

2. 필요한 Bind package 다운로드

Solaris 에도 사용가능한 내장된 Bind(in.named)가 있으나 보다 최신의 고성능(?) DNS 환경을 구성하기 위해 따로 Bind를 다운로드해서 따로 설치해주자(현재 최신버전 기준이므로 Bind 버전등은 본 내용과 다를 수 있음)

 

- http://www.sunfreeware.com 에 접속

bind-9.5.0p2-sol10-sparc-local.gz 를 다운로드한다. (그외에 dependency 관계에 있는 package 설치는 필수!! openssl-0.9.8j, libiconv, libintl, libxml2, zlib, 그리고 gcc-3.4.6 or libgcc-3.4.6 )

3. Bind 9.x 설치

- bind-9.5.0p2-sol10-sparc-local.gz 를 임의의 디렉토리에 복사하고 압축을 풀어준다

# gunzip bind-9.5.0p2-sol10-sparc-local.gz

- 위 파일이 존재하는 디렉토리에서

# pkgadd -d ./bind-9.5.0p2-sol10-sparc-local

- 추가적으로 편의상 위 패키지가 설치된 곳을 profile 을 수정하여 PATH 변수에 추가해주면 좋다(/usr/local/sbin:/usr/local/bin)

4. DNS configuration 이전

아까 backup 해두었던 DNS configuration 을 원래 있던 동일한 디렉토리에 복원한다.

- /etc/named.conf

- /var/named 아래의 file들

- 추가적으로 /var/named 안에 named.root 파일이 있는데 이 파일은 도메인 네임 체계의 최상위 구역을 나타내는데 ftp://ftp.rs.internic.net/domain/ 에서 최신의 것을 다운받아 그대로 복사해주자(수정할 필요 X)

5. Bind 9 에 맞추어 configuration 수정

Bind 8과 9의 환경설정 파일의 문법(?)은 약간의 차이만 있고 거의 비슷하다.

 

◀ /etc/named.conf

 

* 보통 아래와 같은 형식이다. 나중에 설명할 rndc-key 등을 제외한 원래 설정들은 대부분 그대로 사용가능하다.  본 내용은 DNS 신규 구성이 아닌 업그레이드이므로 자세한 설명은 생략... 더 자세한 내용을 알고 싶으시면 인터넷의 많은 자료들을 참조하시길.... (DNS의 세계는 너무 심오하도다 ㅜㅜ)

options {
        directory "/var/named";          // configuration file들의 위치
        allow-recursion {any;};
        allow-query {any;};
        allow-query-cache {any;};
        // query-source address * port 53;
};

 

zone "." IN {                   //루트 도메인 설정
        type hint;
        file "named.root";            //name.root 파일을 이용한다
};

zone "0.0.127.in-addr.arpa" IN {         // [역방향] zone 127.0.0.1
        type master;               // 마스터 DNS로 작동
        file "zone-0.0.127.in-addr.arpa";     // zone file은 zone-0.0.127.in-addr.arpa를 참조
};


zone "test.co.kr" IN {              // [정방향] test.co.kr에 대한 정보
        type master;
        file "zone-test.co.kr";          // 이 파일을 참조한다
};

.
.
.

◀ RNDC

bind 9은 8과는 달리 보안이 강화되어 기존 named.conf를 그대로 쓸경우 DNS가 정상적으로 작동하지 않는등 문제가 발생할 수 있다. rndc는 네임서비스를 관리하는 데몬으로 Bind 9 구동에 필수아래와 같은 설정들을 해주어야 한다.

 

▣ rndc-key configuration

아래 내용을 /etc/named.conf에 추가 해주어야 하는데...

key "rndc-key" {                                            --> 키이름(네임서버간 사용할 공유키)
        algorithm hmac-md5;                             --> 알고리즘 종류
        secret "2Qnrut5Th4dSNtPQ6Dz1xg==";      --> 키 값
};

키값을 얻는 방법은

# /usr/local/sbin/dnssec-keygen -a [알고리즘 종류] -b [암호길이,bit] -n HOST [키이름]

위의 예제를 적용하면

# /usr/local/sbin/dnssec-keygen -a hmac-md5 -b 128 -n HOST rndc-key

위와 같이 실행하면 Krndckey.+157+13384.key , Krndckey.+157+13384.private와 같은 파일이 생성되는데 Krndckey.+157+13384.key 파일을 에디터로 열어보면

# vi Krndckey.+157+13384.key
rndckey. IN KEY 512 3 157 2Qnrut5Th4dSNtPQ6Dz1xg==

에서 2Qnrut5Th4dSNtPQ6Dz1xg==를 복사하여 키값으로 적용하면 된다.

 

◀ zone 파일 수정

Bind 8에서는 상관없으나 Bind 9에서는 반드시 $TTL 구문이 맨위에 기술 되어야 한다. 그렇지 않으면 DNS동작이 불가하다.

※ $TTL 이란?? - DNS쿼리에 대한 결과를 받아갔을 경우 결과값을 캐쉬에 저장하는 시간을 의미한다. TTL이 3600초로 설정된 www.test.com 이라는 도메인에 최초 쿼리를 해서 응답 값을 가지고 오면, 이 값은 DNS서버나 사용자 PC의 캐쉬(메모리)에 3600초를 시작으로 매초마다 시간이 감소 되다 0이 되면 메모리에서 사라지게된다. 이 TTL값은 너무 크게 주면 DNS 서버가 받는 쿼리에 대한 부하는 적어지지만 갱신주기가 느려지기 때문에 IP가 변경 되어 DNS에서 수정을 할 경우 전파 되는 시간이 길어진다. 반대로 너무 적게주면 DNS서버의 부하는 커지는 반면 전파되는 시간은 짧아진다. 이 점을 감안하여 적절한 값을 설정하는 것이 좋다. [아래 refresh와의 차이점] Refresh는 1차와 2차 네임서버가 Zone Transfer 를 이용해 동기화 할 경우 어느 주기마다 동기화를 할지 정해주는 시간이다. 예를 들어 3600초로 설정을 하게되면 1시간마다 동기화를 시도하게 된다. RFC1912 에 의한 권장 SOA Refresh Time은 20분~2시간 또는 2시간

 

예> #vi /var/named/zone-test.co.kr

$TTL 8H

@               IN      SOA     ns.test.co.kr.        administrator.test.or.kr. (
                                20090316      ;serial
                                21600           ;refresh (6h)
                                1800             ;retry  (30m)
                                604800          ;expire (14d)
                                3600)            ;mininum (1d)

                IN      NS      ns.test.co.kr.

;
;  Zone records
;

                           IN      MX      10      raptor
solaris                  IN      A       193.1.1.6
imsi                      IN      A       193.1.1.7

◀ /etc/hosts 와 /etc/resolv.conf 변경 / 확인

# vi /etc/hosts

127.0.0.1       localhost      
192.168.1.10      ns1     ns.test.or.kr loghost      ->     zone 파일에 맞추어 수정

 

#vi /etc/resolv.conf

nameserver 192.168.1.10        ->    DNS 서버 자신의 IP
nameserver 168.216.63.1        ->    상위 DNS IP

6. DNS 서비스 구동

OS에 내장된 in.named(svc:/network/dns/server:default)가 아닌 /usr/local/sbin/named 를 구동해야 한다.

1> in.named 구동 확인

# svcs -a | grep dns/server
disabled        2월_22  svc:/network/dns/server:default          ->   disable 상태인지 확인

 

만약 enable 이면 해당 서비스를 disable 한다.

 

# svcadm disable svc:/network/dns/server:default

※ 기존 구동중인 in.named도 중지 한다. (kill -9 [in.named PID])

2> named 구동

# /usr/local/sbin/named

 

# ps -ef | grep named
    root   722     1   0   2월 22 ?           1:44 /usr/local/sbin/named       -> named 가 구동됨

※ 부팅 시 자동으로 실행되도록 하기위해서는 위설정에서 /usr/local/sbin/named를 rc스크립트로 작성하여 부팅시 실행 되도록 하거나 또는 /usr/sbin/named 를 /usr/loacl/sbin/named에 링크를 걸어주고 svc:/network/dns/server를 활성화 해주면 된다.


  1. dnstop 설치

    Date2014.01.19 ByADMINPLAY Views5270
    Read More
  2. [DNS] Bind 9.x 로 업그레이드 하기

    Date2013.09.09 ByADMINPLAY Views7675
    Read More
  3. DNS 기본 동작 설명

    Date2012.07.30 ByADMINPLAY Views12214
    Read More
  4. DNS의 3가지 메시지 타입

    Date2012.07.30 ByADMINPLAY Views9967
    Read More
  5. [Contents Networking] [문제의 답] Google DNS와 Akamai CDN

    Date2012.07.30 ByADMINPLAY Views9290
    Read More
  6. [DNS] 응답의 종류: Non-authoritative Answer

    Date2010.09.02 ByADMINPLAY Views22238
    Read More
  7. 각 ISP 업체별 DNS 서버목록 입니다.

    Date2010.03.10 ByADMINPLAY Views17955
    Read More
  8. RedHat 8에 bind-9.3.2 소스설치

    Date2010.01.25 ByADMINPLAY Views17937
    Read More
  9. DNS 포워더 설정

    Date2010.01.05 ByADMINPLAY Views19346
    Read More
  10. DNS 싱크홀 (악성 봇 감염)

    Date2009.12.08 ByADMINPLAY Views23665
    Read More
  11. DNS 의 Cache Poisoning 취약점

    Date2009.12.08 ByADMINPLAY Views21131
    Read More
  12. lame server resoving

    Date2009.12.08 ByADMINPLAY Views17550
    Read More
  13. 서브도메인 유출 방지방법

    Date2009.11.11 ByADMINPLAY Views19146
    Read More
  14. DNS 개념을 위한 상식용어

    Date2009.11.04 ByADMINPLAY Views30875
    Read More
  15. bind 세부로그 남기기- named.conf logging설정 예제

    Date2009.10.31 ByADMINPLAY Views23623
    Read More
  16. CentOS5,Fedora7 네임서버 설정법

    Date2009.10.31 ByADMINPLAY Views18811
    Read More
  17. 'could not set file modification time' 와 같은 오류 메...

    Date2009.10.20 ByADMINPLAY Views19894
    Read More
  18. 네임서버 named.conf 파일과 zone파일 체크 방법

    Date2009.07.31 ByADMINPLAY Views17962
    Read More
  19. DNS TCP53, UDP53 용도

    Date2009.06.04 ByADMINPLAY Views18636
    Read More
  20. 인버스 도메인 신청,위임 및 서브도메인 위임

    Date2009.03.29 ByADMINPLAY Views17831
    Read More
Board Pagination Prev 1 2 Next
/ 2

Copyright ADMINPLAY corp. All rights reserved.

abcXYZ, 세종대왕,1234

abcXYZ, 세종대왕,1234