Skip to content

조회 수 7290 추천 수 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를 활성화 해주면 된다.


List of Articles
번호 제목 글쓴이 날짜 조회 수
29 dnstop 설치 ADMINPLAY 2014.01.19 4998
» [DNS] Bind 9.x 로 업그레이드 하기 ADMINPLAY 2013.09.09 7290
27 DNS 기본 동작 설명 2 file ADMINPLAY 2012.07.30 11913
26 DNS의 3가지 메시지 타입 1 ADMINPLAY 2012.07.30 9682
25 [Contents Networking] [문제의 답] Google DNS와 Akamai CDN ADMINPLAY 2012.07.30 9045
24 [DNS] 응답의 종류: Non-authoritative Answer ADMINPLAY 2010.09.02 21935
23 각 ISP 업체별 DNS 서버목록 입니다. ADMINPLAY 2010.03.10 17692
22 RedHat 8에 bind-9.3.2 소스설치 ADMINPLAY 2010.01.25 17720
21 DNS 포워더 설정 ADMINPLAY 2010.01.05 18883
20 DNS 싱크홀 (악성 봇 감염) file ADMINPLAY 2009.12.08 23377
19 DNS 의 Cache Poisoning 취약점 ADMINPLAY 2009.12.08 20855
18 lame server resoving ADMINPLAY 2009.12.08 17334
17 서브도메인 유출 방지방법 ADMINPLAY 2009.11.11 18923
16 DNS 개념을 위한 상식용어 ADMINPLAY 2009.11.04 29025
15 bind 세부로그 남기기- named.conf logging설정 예제 ADMINPLAY 2009.10.31 23209
14 CentOS5,Fedora7 네임서버 설정법 file ADMINPLAY 2009.10.31 18567
13 'could not set file modification time' 와 같은 오류 메... file ADMINPLAY 2009.10.20 19649
12 네임서버 named.conf 파일과 zone파일 체크 방법 ADMINPLAY 2009.07.31 17506
11 DNS TCP53, UDP53 용도 ADMINPLAY 2009.06.04 18333
10 인버스 도메인 신청,위임 및 서브도메인 위임 ADMINPLAY 2009.03.29 17568
Board Pagination Prev 1 2 Next
/ 2

Copyright ADMINPLAY corp. All rights reserved.

abcXYZ, 세종대왕,1234

abcXYZ, 세종대왕,1234