메뉴 건너뛰기

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

단축키

Prev이전 문서

Next다음 문서

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

단축키

Prev이전 문서

Next다음 문서

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


DNS서버 설치 준비사항

1. 도메인 주소

DNS서버를 구축하기 위해서 도메인 주소를 확보한다. 일반적으로 도메인주소는 도메인 대행업체에서 구입하게 되는데 각각의 대행업체들은 구입한 도메인을 자신들의 네임서버에 존파일을 등록해둔다. 대행업체의 ns.xxxx.xxx 와 같은 형태로 네임서버를 공지하고 있을것이다. 대행업체들의 설정메뉴들을 보면(예 가비아) 호스트관리메뉴가 있는데 이 곳에 호스트 등록을 함으로써 기본으로 제공하는 네임서버를 이용하지 않고 자신이 구축한 네임서버를 이용할 수 있게 된다.


호스트 등록의 경우 경우에 따라 1~3일의 기간이 소요 될 수 있다.


2. TCP/UDP 프로토콜 port 53

DNS서버는 애플리케이션 프롵토콜중의 하나인 DNS 프로토콜을 사용한다. DNS 프로토콜은 네트워크를 경유하여 DNS 구현요소 간에 DNS 질의(DNS Query)와 응답(DNS Response)을 수행하히기 위한 클라이언트/서버 모델의 애플리케이션 프로토콜이다. 


DNS 프로토콜은 TCP 및 UDP 포트번호 53번을 사용한다. DNS 질의의 대부분은 UDP 포트 53번을 사용하여 질의와 응답이 이루어진다. 그러나 UDP 헤더 이후의 DNS 헤더를 포함한 DNS 메시지 영역의 길이가 512 바이트를 초과하는 경우에는 TCP 53번 포트를 사용하는 TCP 연결을 통한 DNS 질의와 응답이 이루어지는 매커니즘이 존재한다. 또한 동일한 도메인 존을 가지고 있는 네임서버간의 도메인 존 데이터 송수신을 위한 존 트랜스퍼(Zone Transfer)를 수행하는 경우에는 많은 데이터 전송요청이 이루어지므로 TCP 53번을 사용한다.


고로 방화벽 및 공유기에서 TCP/UDP 53번 포트를 개방한다.


iptables를 활성화 해둔 경우 아래와 같이 포트오픈

# iptables -A INPUT -p udp -m state --state NEW --dport 53 -j ACCEPT

# iptables -A INPUT -p tcp -m state --state NEW --dport 53 -j ACCEPT

# service iptables save

# service iptables restart


3. Bind 설치 방법 결정

Bind를 소스설치 할 것인지 yum 혹은 rpm을 이용한 설치를 할 것인지를 선택한다. 이 글에서는 yum을 이용한 설치를 진행한다.


소스 설치시 다운로드 방법

www.isc.org > Software - Bind 메뉴를 클릭해서 원하는 버전의 Bind버전을 tar.gz 형식을 다운로드한다.


DNS서버 설치

DNS서버의 기능을 제공하는 대표적인 소프트웨어가 BIND이다. BIND는 버전에 따라 설정 파일(/etc/named.conf)의 항목이 다를 수 있기 때문에 버전 9 이외의 BIND를 사용할 때는 주의해야 한다.


Bind 설치여부 확인

# rpm -qa | grep bind


Bind 설치

# yum -y install bind-*


===========================================================================================================================================

 Package                           Arch                     Version                                        Repository                 Size

===========================================================================================================================================

Installing:

 bind                              x86_64                   32:9.8.2-0.17.rc1.el6_4.4                   updates                4.0 M

 bind-chroot                    x86_64                   32:9.8.2-0.17.rc1.el6_4.4                   updates                71 k

 bind-devel                     x86_64                   32:9.8.2-0.17.rc1.el6_4.4                   updates                378 k

 bind-dyndb-ldap             x86_64                  2.3-2.el6                                         base                    68 k

 bind-libs                        x86_64                  32:9.8.2-0.17.rc1.el6_4.4                    updates               878 k

 bind-sdb                        x86_64                  32:9.8.2-0.17.rc1.el6_4.4                    updates               306 k

 bind-utils                        x86_64                  32:9.8.2-0.17.rc1.el6_4.4                   updates               182 k

Installing for dependencies:

 portreserve                       x86_64                0.0.4-9.el6                                       base                    23 k

 postgresql-libs                  x86_64                8.4.13-1.el6_3                                  base                    200 k


Transaction Summary

===========================================================================================================================================

Install       9 Package(s)


설치 확인
# rpm -qa | grep bind
bind-dyndb-ldap-2.3-2.el6.x86_64
bind-devel-9.8.2-0.17.rc1.el6_4.4.x86_64
bind-libs-9.8.2-0.17.rc1.el6_4.4.x86_64
bind-9.8.2-0.17.rc1.el6_4.4.x86_64
bind-sdb-9.8.2-0.17.rc1.el6_4.4.x86_64
bind-chroot-9.8.2-0.17.rc1.el6_4.4.x86_64
bind-utils-9.8.2-0.17.rc1.el6_4.4.x86_64

Bind 관련해서 국내 검색결과나 서적들을 보면 caching-nameserver 관련 패키지를 설치하라고 하던데 현재의 Bind 버전에서는 이를 기본 bind 패키지에 포함시키는듯 싶다. 따로 설치하려고해도 이미 설치되어 있다고 나온다. 리눅스 관련 국내서적들이 출간된지 최소 5~6년이 지난 시점이다 보니 최신의 패키지들에 대한 구성이나 설정법이 상이할 수 있다.   


1. bind Jail(chroot) 설정

yum으로 설치했을 경우, 디렉토리 구조를 살펴보면 /var/named/chroot 구조가 생긴다.


bind의 데몬파일은 named인데 이 named 서비스를 시작하지 않은 경우에는 마치 chroot가 작용하지 않는듯이 /var/named  디렉토리와 /etc 디렉토리에 설정파일들이 존재하고 있다. 이때 named 서비스를 시작하게 되면 자동으로 /var/named/chroot/var/named 디렉토리와 /var/named/chroot/etc 디렉토리에 각종 설정파일들이 자동으로 생겨난다. 이 파일들은 ls -la 로 살펴보면 링크파일이 아니다. 추측컨데 기본 위치에서 서비스가 시작될때마다 복사해오고 종료하면 삭제하는 듯 싶다. bind-chroot 관련해서 정보를 찾기 어렵기에 정확한 진의를 판별하기가 어렵다.


/etc/named.conf 파일을 수정하고 named 서비스를 시작(재시작)하면 수정한 내용이 그대로 적용되어 /var/named/chroot/etc/named.conf 에 똑같은 내용이 반영된다. 다른 파일들도 마찬가지다.

2. named.conf 설정

# vi /etc/named.conf

        listen-on-v6 port 53 { ::1; };


        // 각 도메인의 zone 파일의 위치를 지정한다.

        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";


        // 네임서버 쿼리를 허용할 IP 혹은 IP 대역을 설정

        // allow-query     { localhost; };

        allow-query     { any; };


  // 이 구문을 추가하지 않으면 warning 을 봄

  empty-zones-enable no;


        recursion yes;


        dnssec-enable yes;

        dnssec-validation yes;

        dnssec-lookaside auto;


        /* Path to ISC DLV key */

        bindkeys-file "/etc/named.iscdlv.key";


        managed-keys-directory "/var/named/dynamic";

};


// 네임서버 실행에 있어서 디버깅시 참고 할 수 있는 로그파일생성 위치 지정

logging {

        channel default_debug {

                file "data/named.run";

                severity dynamic;

        };

};


// 루트도메인에 대한 설정을 named.ca라는 파일에서 참조하라는 설정

// type 값은 hint(루트도메인을 지정), master(1차 네임서버), slave(2차 네임서버)

zone "." IN {

        type hint;

        file "named.ca";

};


include "/etc/named.rfc1912.zones";

include "/etc/named.root.key";


3. named.rfc1912.zones 설정

# vi /etc/named.rfc1912.zones

//

// ISC BIND named zone configuration for zones recommended by

// RFC 1912 section 4.1 : localhost TLDs and address zones

// and http://www.ietf.org/internet-drafts/draft-ietf-dnsop-default-local-zones-02.txt

// (c)2007 R W Franks

//

// See /usr/share/doc/bind*/sample/ for example named configuration files.

//


// 로컬호스트 도메인에 대한 설정으로 기본 설정을 그대로 사용

zone "localhost.localdomain" IN {

        type master;

        file "named.localhost";

        allow-update { none; };

};


// 로컬호스트 도메인에 대한 설정으로 기본 설정을 그대로 사용

zone "localhost" IN {

        type master;

        file "named.localhost";

        allow-update { none; };

};


// ipv6에 대한 로컬 호스트 루프백 설정으로 기본 설정을 그대로 사용

zone "1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.ip6.arpa" IN {

        type master;

        file "named.loopback";

        allow-update { none; };

};


// 로컬호스트에 대한 루프백 인버스 도메인 설정으로 기본 설정을 그대로 사용

zone "1.0.0.127.in-addr.arpa" IN {

        type master;

        file "named.loopback";

        allow-update { none; };

};


// 제로호스트에 대한 루프백 설정으로 기본 설정을 그대로 사용

zone "0.in-addr.arpa" IN {

        type master;

        file "named.empty";

        allow-update { none; };

};


// uzuro.com 도메인

zone "uzuro.com" IN {

        type master;

        file "uzuro.com.zone";

        allow-update { none; };

};


zone "789.456.123.in-addr.arpa" IN {    // 자신의 IP주소의 마지막을 뺀 주소를 역순으로

        type master;

        file "uzuro.com.rev";

        allow-update { none; };

};


4. zone 파일 생성과 reverse 파일 생성

/var/named 디렉토리의 named.localhost 파일을 복사해 사용한다.

# cp /var/named/named.localhost /var/named/uzuro.com.zone

# cp /var/named/named.localhost /var/named/uzuro.com.rev


복사시 소유권이 변경되니 소유권을 다시 정정해준다.

# chwon root.named /var/named/uzuro.com.zone

# chown root.named /var/named/uzuro.com.rev


uzuro.com의 zone 파일을 수정한다. 수정할때 $TTL 값을 짧게 설정해서 당분간은 변경내용이 바로바로 등록되도록 한다.

# vi uzuro.com.zone

; uzuro.com.zone

$TTL 10M

@       IN SOA  ns.uzuro.com. webmaster.uzuro.com. (

                                        0       ; serial

                                        1D      ; refresh

                                        1H      ; retry

                                        1W      ; expire

                                        3H )    ; minimum

        IN NS   ns.uzuro.com.

        IN MX   10 mail.uzuro.com.

        IN A    123.456.789.00     


ns      IN A    123.456.789.00  

mail    IN A    123.456.789.00  

blog    IN A    123.456.789.00  

music   IN A    123.456.789.00  

game    IN A    123.456.789.00  

howto   IN A    123.456.789.00  

www     IN A    123.456.789.00  

ftp     IN A    123.456.789.00  

uzuro.com. IN TXT "v=spf1 ip4:123.456.789.00  ~all"


;(세미콜론)
주석을 의미함.

$TTL
Time To Live의 약자로 uzuro.com의 호스트 이름을 질의해 갔을 때, 질의해 간 다른 네임서버가 해당 IP주소를 캐시에 저장하는 기간(3H - 3시간, 1D - 1일, 10M - 10분, 8600 - 24시간, 600 - 10분)

@
/etc/named.rfc1912.zones에 정의된 uzuro.com을 의미함, uzuro.com.으로 고쳐써도 됨

IN
클래스 이름으로 internet을 의미함

SOA
Start Of Authority의 약자로 권한의 시작을 뜻함. 
또한, 괄호 안의 숫자는 시간을 의미하는데 차례로 serial(버전 정보),
refresh(상위 네임 서버에게 업데이트된 정보를 요청하는 간격),
retry(상위 네임 서버에 문제 발생시 재접속 간격), 
expire(상위 네임 서버에 접속 못할 경우 이전의 정보를 파기하는 간격),
minimum(이 시간 이후에 정보가 삭제됨)을 말함.
H는 Hour, D는 Day, W는 Week의 약자임

NS
Name Server의 약자로 설정된 도메인의 네임 서버 역할을 하는 컴퓨터를 지정함

MX
Mail Exchanger의 약자로 메일 서버 컴퓨터를 설정함

IN MX   10 mail.uzuro.com.
10 은 메일주소의 우선순위를 위한 숫자

A
호스트 이름에 상응하는 IP주소를 지정함

CNAME
호스트 이름에 대한 별칭을 부여할 때 사용함

uzuro.com. IN TXT "v=spf1 ip4:123.456.789.00   ~all"
위 메일발송IP를 위조하여 보내온 메일은 수신자의 메일서버의 정책에 따라 판단하라 라는 뜻이다.
SPF는 메일발신서버 인증 중 하나로서 소유하신 도메인의 SPF 레코드를 확인하거나, SPF 레코드 작성을 도와주는 곳입니다 https://www.kisarbl.or.kr/spf/spfWizard_step1.jsp


리버스파일을 수정한다. 리버스파일은 제대로 설정하더라도 회선을 대여받고 있는 ISP 업체에서 막아두고 있을 것이다. ISP업체에서는 이를 고정IP 를 사용하는 사용자에 한하여 리버스도메인을 등록해 준다. 메일서비스의 경우 이 리버스도메인을 지원해야 정상적인 전송이 되는 경우가 있다. 

KT DNS 서비스 운용지원 https://dms.kornet.net/jsp/login.jsp


# vi uzuro.com.rev

; uzuro.com.rev

$TTL 10M

@       IN SOA  ns.uzuro.com. webmaster.uzuro.com. (

                                        0       ; serial

                                        1D      ; refresh

                                        1H      ; retry

                                        1W      ; expire

                                        3H )    ; minimum

        IN NS   ns.uzuro.com.

00     IN PTR  ns.uzuro.com.

00     IN PTR  mail.uzuro.com.




5. 서비스 시작과 등록

named 서비스를 등록한다.

# chkconfig named on


named 서비스를 시작한다.

# service named start


named 관련 설정 파일들을 수정한 후에는 named 서비스를 재시작해준다.

# service named restart



파일 체크

named.conf, named.rfc1912.zones 파일 설정 검사

아무런 메세지도 나오지 않는다면 정상

# named-checkconf /etc/named.rfc1912.zones

# named-checkconf /etc/named.conf



zone 파일 설정 검사

# named-checkzone [도메인명] [존파일 절대경로 위치]

# named-checkzone uzuro.com /var/named/uzuro.com.zone

zone uzuro.com/IN: loaded serial 0

OK


네임서버 응답확인

# dig @server domain query-type query-class

query-type 값

a        : 네트워크주소를 의미함

any     : 지정한 도메인의 모든 정보를 의미함

mx      : 지정한 도메인의 메일서버 정보를 의미함

ns       : 네임서버를 의미함

soa     : SOA 정보를 의미함

hinfo    : HINFO 레코드에 대한 정보를 의미함  


# dig @8.8.8.8 uzuro.com any

; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.17.rc1.el6_4.4 <<>> @8.8.8.8 uzuro.com any

; (1 server found)

;; global options: +cmd

;; Got answer:

;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 62493

;; flags: qr rd ra; QUERY: 1, ANSWER: 4, AUTHORITY: 0, ADDITIONAL: 0


;; QUESTION SECTION:

;uzuro.com.                     IN      ANY


;; ANSWER SECTION:

uzuro.com.              490     IN      SOA     ns.uzuro.com. webmaster.uzuro.com. 0 86400 3600 604800 10800

uzuro.com.              490     IN      NS      ns.uzuro.com.

uzuro.com.              490     IN      MX      10 mail.uzuro.com.

uzuro.com.              490     IN      A       xxx.xxx.xxx.xx


;; Query time: 38 msec

;; SERVER: 8.8.8.8#53(8.8.8.8)

;; WHEN: Tue Jun 25 00:49:39 2013

;; MSG SIZE  rcvd: 127



# host uzuro.com ns.uzuro.com

Using domain server:

Name: ns.uzuro.com

Address: xxx.xxx.xxx.xx#53

Aliases:


uzuro.com has address xxx.xxx.xxx.xx

uzuro.com mail is handled by 10 mail.uzuro.com.



리버스 설정을 검사한다. 현재는 domain.ns.kornet.net에 막혀 있다. 문의해야한다.

# dig @8.8.8.8 00.789.456.123.in-addr.arpa PTR

; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.17.rc1.el6_4.4 <<>> @8.8.8.8 00.789.456.123.in-addr.arpa PTR

; (1 server found)

;; global options: +cmd

;; Got answer:

;; ->>HEADER<<- opcode: QUERY, status: NXDOMAIN, id: 9117

;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 0


;; QUESTION SECTION:

;00.789.456.123.in-addr.arpa.   IN      PTR


;; AUTHORITY SECTION:

789.456.123.in-addr.arpa. 1799  IN      SOA     789.456.123.in-addr.arpa. domain.ns.kornet.net. 2006062800 43200 3600 604800 43200


;; Query time: 235 msec

;; SERVER: 8.8.8.8#53(8.8.8.8)

;; WHEN: Tue Jun 25 01:19:15 2013

;; MSG SIZE  rcvd: 101



# nslookup uzuro.com 8.8.8.8

Server:         8.8.8.8

Address:        8.8.8.8#53


Non-authoritative answer:

Name:   uzuro.com

Address: 123.456.789.00



set q= 의 값으로 A, ANY, CNAME, HINFO, MX, PX, NS, PTR, SOA, TXT, WKS, SRV, NAPTR등 

# nslookup

> set q=MX

> uzuro.com

Server:         168.126.63.1

Address:        168.126.63.1#53


Non-authoritative answer:

uzuro.com       mail exchanger = 10 mail.uzuro.com.


Authoritative answers can be found from:

uzuro.com       nameserver = ns.uzuro.com.

mail.uzuro.com  internet address = 123.456.789.00

ns.uzuro.com    internet address = 123.456.789.00





List of Articles
번호 제목 글쓴이 날짜 조회 수
21 웹기획자를 꼭 필요한 파워목업 프로그램 file 조쉬 2016.08.23 3585
20 아파치 SSL 보안서버 , 보안서버인증서 : 윈도우서버 file 조쉬 2016.04.05 4346
19 win 2003 smtp 587 설정 조쉬 2015.07.01 2840
18 iis 6.0 업로드 및 다운로드 용량 제한 조쉬 2015.07.01 3197
17 IIS 구성 정보 백업/복구 이전하기 조쉬 2015.07.01 3089
16 Subversion으로 소스코드 관리하기 file 조쉬 2015.04.20 3254
» DNS서버(네임서버) 설치 조쉬 2014.04.29 3912
14 윈도우 실행 명령어 모음 조쉬 2014.02.27 4966
13 DNS 백업 및 복원하기 조쉬 2014.02.27 3205
12 Windows 에서 route 사용하기 조쉬 2014.02.27 3068
11 DIR 명령어 조쉬 2014.02.27 2895
10 DOS 명령어 조쉬 2014.02.27 2996
9 windows 방화벽 실행 오류시 복구방안 조쉬 2014.02.27 3002
8 윈도우 프로세스 조회 사이트 조쉬 2014.02.27 3312
7 windows tasklist 사용법 조쉬 2014.02.27 4068
6 windows 2003 server mmc 스냅인 오류 조쉬 2014.02.27 3333
5 iis7 설정 backup & restore(복원) 하기 조쉬 2014.02.27 3210
4 Window FindStr 사용방법 조쉬 2014.02.27 3049
3 windows 방화벽 실행 오류시 복구방안 조쉬 2014.02.27 3561
2 xcopy 사용방법 조쉬 2014.02.27 2827
Board Pagination Prev 1 ... 2 Next
/ 2

하단 정보를 입력할 수 있습니다

© k2s0o1d4e0s2i1g5n. All Rights Reserved