본문 바로가기

Linux Server 구축/1-1. DNS Server

DNS(Domain Name System) Server 구축


DNS Server 구축


1. DNS Server를 구축하기 위해 필요한 패키지를 다운 및 설치한다.

bind-9.3.4-6.P1.el5.i386.rpm
bind-chroot-9.3.4-6.P1.el5.i386.rpm 
bind-libs-9.3.4-6.P1.el5.i386.rpm
bind-utils-9.3.4-6.P1.el5.i386.rpm
caching-nameserver-9.3.4-6.P1.el5.i386.rpm

패키지 설치 확인
[root@localhost ~]# rpm -qa | grep bind
bind-9.3.4-6.0.2.P1.el5_2
ypbind-1.19-8.el5
bind-libs-9.3.4-6.0.2.P1.el5_2
bind-chroot-9.3.4-6.0.2.P1.el5_2
bind-utils-9.3.4-6.0.2.P1.el5_2
[root@localhost ~]# rpm -qa | grep caching
caching-nameserver-9.3.4-6.0.2.P1.el5_2

패키지 설치
1. RPM을 이욯해서 설치
# rpm -Uvh 파일명

2. YUM을 이용해서 설치
# YUM install bind*
# YUM install caching-nameserver

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

2. DNS의 환경설정파일

- 참고
bind-9.2 버전까지는 /etc/named.config 파일을 사용하였지만
bind-9.3 버전부터는 /etc/named.caching-namedserver.conf 파일을 사용하고
                    /etc/named.rfc1912.zones 파일을 포함하고 있다.


/etc/named.caching-nameserver.conf
- 네임서버의 주 환경설정 파일
- named 데몬이 작동시 참조하는 파일로 도메인별 zone 파일을 지정한다.
- /var/named/chroot/etc에 원본 파일이 있고 /etc/named/에 있는 파일은 링크파일이다.
- /etc/named.conf 와 같은 파일이다.
- /etc/named.conf 파일과 같은 파일이다.

환경설정
#vi /etc/named.caching-nameserver.conf
//
// named.caching-nameserver.conf
//
// Provided by Red Hat caching-nameserver package to configure the
// ISC BIND named(8) DNS server as a caching only nameserver
// (as a localhost DNS resolver only).
//
// See /usr/share/doc/bind*/sample/ for example named configuration files.
//
// DO NOT EDIT THIS FILE - use system-config-bind or an editor
// to create named.conf - edits to this file will be lost on
// caching-nameserver package upgrade.
//
options {

//      listen-on port 53 { 127.0.0.1; };
        listen-on port 53 { any; };
- 네임서버의 포트번호와 접근할 수 있는 IP를 설정하는 지시자로써
기본적으로는 127.0.0.1(루프백IP) 즉, 자신만이 53번 포트에 접속을 허용하고 있다.
만약 외부에서 네임서버로의 접근을 허용해야 한다면 허용 Ip부분에 any를 입력하여 외부와의 연결을 허용하도록 한다.
   
//      listen-on-v6 port 53 { ::1; };
- IPv6하의 네임서버 운영을 설정하는 것으로 현재는 필요하지 않으므로 기본설정 뽀는 주석처리 한다.(여기서는 주석처리)

        directory       "/var/named";
- DNS의 zone파일의 경로를 지정한다. 기본 설정은 /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";
- 메모리 관련 통계파일이 생성되는 경로 및 파일명을 지정한다.

        query-source    port 53;
//      query-source-v6 port 53;
- 네임서버의 쿼리를 받아들일 소스포트를 설정하는 것으로 기본 설정은 53포트이다.

//      allow-query     { localhost; };
        allow-query     { any; };
- 네임서버의 쿼리를 허용할 IP 혹은 IP대역을 설정하는 것으로 외부와의 쿼리 허용을 위하여 any를 입력한다.

};
logging {
        channel default_debug {
                file "data/named.run";
                severity dynamic;
        };
};
- 디버깅시 참고할 수 있는 로그파일을 생성하는 경로를 지정한다.

view localhost_resolver {
//      match-clients      { localhost; };
//      match-destinations { localhost; };
        match-clients      { any; };
        match-destinations { any; };
- 로컬 리졸버 사용을 허용할 클라이언트를 지정하는 지시자로 외부에 허용하기 위하여 any를 입력한다.

        recursion yes;
//      recursion no;
- 외부에서 현재의 네임서버를 지정하여 사용할 수 있게 하느냐, 사용할 수 없게 하느냐를 설정하는 지시자로
네임서버의 보안상 no로 설정하지만 yes를 해야 인터넷에 연결된다.

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

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

2-1. Zone 파일 설정

Forward zone 과 Reverse zone
- Forwaerd zone : Demain -> IP로 매칭시켜주는 것
- Reverse zone : IP -> Domain으로 매칭시켜주는 것

#vi /etc/named.rfc1912.zones
- IPv4부분에 아래의 두 설정을 추가시켜 준다.-
zone "server3.co.kr" IN {      - zone "데이터베이스 또는 도메인 주소" IN
        type master;       - 1차 네임 서버를 의미, slave는 2차 네임서버를 의미미
        file "server3.zone";       - 존 파일명을 설정한다. Forward zone
        allow-update { none; };      - 2차 네임서버를 운영하지 않는다면 none을 입력
};

zone "33.10.10.in-addr.arpa" IN {
        type master;
        file "server3.rzone";      - Reverse zone
        allow-update { none; };
};

- 위쪽은 IPv4에 관한 설정 -

- 아래쪽은 IPv6에 관련된 설정 -
zone "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.ip6.local";
        allow-update { none; };
};

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

3. Zone 파일 환경설정

3-1. Zone파일 생성

-참고
/var/named/에 있는 파일들은 링크파일이고
/var/named/chroot/var/named/에 있는 파일들이 원본파일이기 때문에 이 폴더에 아래 두 파일을 추가생성해 준다. 

[root@server3 named]# pwd
/var/named/chroot/var/named

[root@server3 named]# ls -l
-rw-r----- 1 root  named  198  5월 25  2008 localdomain.zone
-rw-r----- 1 root  named  426  5월 25  2008 named.local

[root@server3 named]# cp localdomain.zone server3.zone
[root@server3 named]# cp named.local server3.rzone
 
[root@server3 named]# ls -l
-rw-r----- 1 root  named  198  5월 25  2008 localdomain.zone
-rw-r----- 1 root  named  426  5월 25  2008 named.local
-rw-r----- 1 root  root   426 12월 10 15:46 server3.rzone
-rw-r----- 1 root  root   198 12월 10 15:46 server3.zone

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

3-2. 퍼미션 설정 -> server3.zone, server3.rzone 퍼미선 설정

[root@server3 named]# chown root.named server3.zone
[root@server3 named]# chown root.named server3.rzone

[root@server3 named]# ls -l
-rw-r----- 1 root  named  198  5월 25  2008 localdomain.zone
-rw-r----- 1 root  named  426  5월 25  2008 named.local
-rw-r----- 1 root  named  485 12월 10 16:01 server3.rzone
-rw-r----- 1 root  named  238 12월 10 15:58 server3.zone

- 참고
cp 명령어를 파일처리 할때 -p 옵션(원본파일의 소유권, 그룹, 허가권,퍼미션을 복사)을 쓰면 퍼미션 설정을 안해줘도 된다.
[root@server3 named]# cp -p localdomain.zone server3.zone
[root@server3 named]# cp -p named.local server3.rzone

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

3-3. Forward zone 파일 설정

[root@server3 named]# cp -p localdomain.zone server3.zone
[root@server3 named]# vi /var/named/chroot/var/named/server3.zone 파일 생성 및 설정

$TTL    86400
@               IN SOA  server3.co.kr. root.server3.co.kr. (
                                        42              ; serial (d. adams)
                                        3H              ; refresh
                                        15M             ; retry
                                        1W              ; expiry
                                        1D )            ; minimum
                IN NS           server3.co.kr.
                IN A            10.10.33.3
www             IN A            10.10.33.3

- 참고
SOA는 Start of Authority의 약자로 server3.co.kr 도메인 네임 서버에 대한 모든 정보를 가지고 있으며,
관리자는 root@server3.co.kr 이라는 메일로 설정하고 있다.
여기서 주의 할 사항은 도메인이름을 적은 다음에 항상 닷(.) 루트 도메인을 표시하여야 한다는 점이다.
또한 관리자의 메일 설정에서 @는 특수문자로 인식하기 때문에 @를 사용하지 않고 닷(.)을 사용하고 있는 점을 기억하도록 하자.

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

3-4. Reverse zone 파일 설정

[root@server3 named]# cp -p named.local server3.rzone
[root@server3 named]# vi /var/named/chroot/var/named/server3.rzone 파일 생성 및 설정  

$TTL    86400
@       IN      SOA     server3.co.kr. root.server3.co.kr.  (
                                      1997022700 ; Serial
                                      28800      ; Refresh
                                      14400      ; Retry
                                      3600000    ; Expire
                                      86400 )    ; Minimum
        IN      NS      server3.co.kr.
3       IN      PTR     server3.co.kr.
3       IN      PTR     www.server3.co.kr.

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

4. /etc/hosts 파일 설정

#vi /etc/hosts
# Do not remove the following line, or various programs
# that require network functionality will fail.
::1     localhost6.localdomain6 localhost6
127.0.0.1       server3 localhost.localdomain   localhost   -  기본설정

#10.10.33.3     server3   - 추가설정으로 주석처리를 한다.
- 주석처리를 한 이유.
현재 강의 실 전체가 10점대의 네트워크 대역을 쓰고 있기 때문에 이 IP주소를 주석처리하지 않으면
DNS 우선순위(/etc/host.conf의 설정 : hosts,bind 순) 에 따라서 /etc/hosts파일에 있는 이 주소를 통해 네임서버가 동작할 수 있기 때문에
네임서버가 제대로 동작하는지를 알수 없다. 그렇게 때문에 확인차 주석처리를 한다. 실사용시에는 주석처리를 안해도 된다.

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

5. /etc/resolv.conf 파일 설정

#vi /etc/resolv.conf
#nameserver 168.126.63.1   - 기본 KT DNS Server 주소로 주석처리 한다.
nameserver 10.10.33.3       - 자신의 IP주소를 기준으로 DNS Server 주소를 추가해준다.  

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

6. DNS Server 서비스를 시작한다.

#service named start
named를 시작 중:                                           [  OK  ]

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

7. DNS Server가 제대로 작동하는지 확인

- 참고
데몬(DNS Server)이 실행된 후 제대로 작동이 됐는지 확인하는 명령어
#tail /var/log/messages

7-1.
#netstate -nat 
  - DNS Server의 기본 포트인 53번 포트를 확인
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address               Foreign Address             State     
tcp        0      0 192.168.29.1:53             0.0.0.0:*                   LISTEN     
tcp        0      0 192.168.189.1:53            0.0.0.0:*                   LISTEN     
tcp        0      0 192.168.33.3:53             0.0.0.0:*                   LISTEN     
tcp        0      0 10.10.33.3:53               0.0.0.0:*                   LISTEN     
tcp        0      0 127.0.0.1:53                0.0.0.0:*                   LISTEN     

7-2.
#ping server3.co.kr

PING server3.co.kr (10.10.33.3) 56(84) bytes of data.
64 bytes from www.server3.co.kr (10.10.33.3): icmp_seq=1 ttl=64 time=0.021 ms
64 bytes from www.server3.co.kr (10.10.33.3): icmp_seq=2 ttl=64 time=0.028 ms
64 bytes from www.server3.co.kr (10.10.33.3): icmp_seq=3 ttl=64 time=0.029 ms
64 bytes from www.server3.co.kr (10.10.33.3): icmp_seq=4 ttl=64 time=0.029 ms

--- server3.co.kr ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3001ms
rtt min/avg/max/mdev = 0.021/0.026/0.029/0.007 ms

7-3.
#nslookup server3.co.kr
- DNS Server가 잘 작동하는지 확인
Server:         10.10.33.3
Address:        10.10.33.3#53

Name:   server3.co.kr
Address: 10.10.33.3

7-4.
#nslookup www.server3.co.kr
- DNS Server가 잘 작동하는지 확인
Server:         10.10.33.3
Address:        10.10.33.3#53

Name:   www.server3.co.kr
Address: 10.10.33.3

7-5.
# nslookup 10.10.33.3 - DNS Server가 잘 작동하는지 확인
Server:         10.10.33.3
Address:        10.10.33.3#53

3.33.10.10.in-addr.arpa name = www.server3.co.kr.
3.33.10.10.in-addr.arpa name = server3.co.kr.

7-6.
# nslookup www.daum.net  - www.daum.net에 대해서 DNS Server가 제대로 작동하는지 확인(인터넷 연결 확인)
Server:         10.10.33.3
Address:        10.10.33.3#53

Non-authoritative answer:
www.daum.net    canonical name = daumtop.daum.akadns.net.
Name:   daumtop.daum.akadns.net
Address: 211.32.117.30
Name:   daumtop.daum.akadns.net
Address: 211.115.77.212
Name:   daumtop.daum.akadns.net
Address: 211.115.77.213
Name:   daumtop.daum.akadns.net
Address: 211.115.77.214
Name:   daumtop.daum.akadns.net
Address: 211.115.115.211
Name:   daumtop.daum.akadns.net
Address: 222.231.51.40
Name:   daumtop.daum.akadns.net
Address: 222.231.51.77
Name:   daumtop.daum.akadns.net
Address: 222.231.51.78
 
-----------------------------------------------------------------------------------------------------

8. 재부팅 후에도 DNS Server를 작동시키기

#ntsysv
[*]named - ntsysv에서 named(DNS Server 서비스 추가)

'Linux Server 구축 > 1-1. DNS Server' 카테고리의 다른 글

보조네임서버구축 (Secondary Name Server)  (0) 2008.12.11
DNS 도메인 추가2  (0) 2008.12.11
DNS 도메인 추가1  (0) 2008.12.11
DNS 관련 명렁어  (0) 2008.12.11