서버/Linux III 2016. 3. 25. 11:50

Linux III - 10. DNS 서버

 

 

 

login as: root
root@192.168.1.100's password:
Last login: Fri Mar 25 11:50:45 2016 from 192.168.1.1
[root@main /root]#

login as: root
root@192.168.1.101's password:
Last login: Thu Mar 31 11:00:49 2016 from 192.168.1.1
[root@clone1 /root]#

 

 

 

 

1. Bind 9.8.2 패키지 설치 및 활성화

 

DNS 서버를 구축하기 위해서는 Bind 패키지가 설치되어 있어야 한다.

 

 

 - DNS 서버 구축에 필요한 Bind 패키지(bind-9.8.2-0.37.rc1.el6_7.7.x86_64) 설치 유무를 확인한다.

 

[root@main /root]# rpm -qa | grep bind
samba-winbind-3.6.23-12.el6.x86_64
bind-libs-9.8.2-0.30.rc1.el6.x86_64
PackageKit-device-rebind-0.5.8-23.el6.x86_64
bind-utils-9.8.2-0.30.rc1.el6.x86_64
samba-winbind-clients-3.6.23-12.el6.x86_64
ypbind-1.20.4-30.el6.x86_64
rpcbind-0.2.0-11.el6.x86_64

 

 

 

 - Bind 패키지가 없다면, 다음과 같은 방법을 통하여 설치하도록 한다.

 

[root@main /root]# yum -y install bind

~중간 생략~


Installed:
  bind.x86_64 32:9.8.2-0.37.rc1.el6_7.7

Dependency Updated:
  bind-libs.x86_64 32:9.8.2-0.37.rc1.el6_7.7
  bind-utils.x86_64 32:9.8.2-0.37.rc1.el6_7.7

 

 

 

 - Bind 패키지 설치가 완료되었다면, 설치 확인 및 서비스 상태를 확인한다.

 

[root@main /root]# rpm -qa | grep bind
bind-9.8.2-0.37.rc1.el6_7.7.x86_64
samba-winbind-3.6.23-12.el6.x86_64
PackageKit-device-rebind-0.5.8-23.el6.x86_64
bind-libs-9.8.2-0.37.rc1.el6_7.7.x86_64
bind-utils-9.8.2-0.37.rc1.el6_7.7.x86_64
samba-winbind-clients-3.6.23-12.el6.x86_64
ypbind-1.20.4-30.el6.x86_64

 

 

[root@main /root]# service named status           # /etc/rc.d/init.d/named status
rndc: neither /etc/rndc.conf nor /etc/rndc.key was found
named가 정지되었습니다

 

 

 

 - Named 서비스를 활성화 한다.

 

[root@main /root]# service named start             # /etc/rc.d/init.d/named start
Generating /etc/rndc.key:                                  [  OK  ]
named 시작 중:                                             [  OK  ]
[root@main /root]#

 

[root@main /root]# service named status
version: 9.8.2rc1-RedHat-9.8.2-0.37.rc1.el6_7.7
CPUs found: 4
worker threads: 4
number of zones: 19
debug level: 0
xfers running: 0
xfers deferred: 0
soa queries in progress: 0
query logging is OFF
recursive clients: 0/0/1000
tcp clients: 0/100
server is up and running
named (pid  3026)를 실행하고 있습니다..

 

 

 

 - 만약, 부팅시에도 Named 서비스를 활성화하려면, 다음과 같은 방법을 통하여 활성화한다.

 

[root@main /root]# chkconfig --list named
named           0:해제  1:해제  2:해제  3:해제  4:해제  5:해제  6:해제

 

[root@main /root]# chkconfig named on
[root@main /root]# chkconfig --list named
named           0:해제  1:해제  2:활성  3:활성  4:활성  5:활성  6:해제

 

 

 

 - 재부팅을 실시하여, Named 서비스 활성화 상태를 확인한다.


[root@main /root]# reboot

 

login as: root
root@192.168.1.100's password:
Last login: Thu Mar 31 11:00:42 2016 from 192.168.1.1


[root@main /root]# chkconfig --list named
named           0:해제  1:해제  2:활성  3:활성  4:활성  5:활성  6:해제


[root@main /root]# service named status
version: 9.8.2rc1-RedHat-9.8.2-0.37.rc1.el6_7.7
CPUs found: 4
worker threads: 4
number of zones: 19
debug level: 0
xfers running: 0
xfers deferred: 0
soa queries in progress: 0
query logging is OFF
recursive clients: 0/0/1000
tcp clients: 0/100
server is up and running
named (pid  1802)를 실행하고 있습니다..

 

 

 

 

2. Bind 관련 파일 및 DNS 서버 구성

  

 - Bind 패키지를 설치하면 다음과 같은 DNS 관련 파일을 이용하여 DNS 서비스를 운영한다.

 - CentOS 5.x 버전에서는 'caching-nameserver' 패키지도 설치해야 한다.

 - CentOS 6.x 버전에서는 Bind 9.8.2 패키지에 'caching-nameserver'가 포함되어 있다.

 

 

 1) 'named.conf' 파일 및 설정 실시

 

 - DNS 서버에 대한 설정 내용을 관리하는 파일이다.

 

[root@main /root]# ls /etc/named.conf
/etc/named.conf

 

 

[root@main /root]# vi /etc/named.conf

 

  1 //
  2 // named.conf
  3 //
  4 // Provided by Red Hat bind package to configure the ISC BIND named(8) DNS
  5 // server as a caching only nameserver (as a localhost DNS resolver only).
  6 //
  7 // See /usr/share/doc/bind*/sample/ for example named configuration files.
  8 //
  9
 10 options {
 11     listen-on port 53 { 127.0.0.1; };    <- 외부에서 53번 포트 접속에 대한 IP 주소 설정, any로 변경 실시
 12     listen-on-v6 port 53 { ::1; };
 13     directory   "/var/named";    <- 각 도메인의 zone 파일 위치 지정
 14     dump-file   "/var/named/data/cache_dump.db";  <- 정보가 갱신될때 저장하는 파일
 15         statistics-file "/var/named/data/named_stats.txt";  <- 통계파일이 생성되는 절대 경로와 파일이름 지정
 16         memstatistics-file "/var/named/data/named_mem_stats.txt";   <- 메모리 관련 통계파일이 생성되는

                                                                                                       절대 경로와 파일 이름 지정
 17     allow-query     { locahost; };     <- 외부에서 DNS 요청 허용에 대한 IP 주소 설정, any로 변경 실시
 18     recursion yes;
 19     dnssec-enable yes;
 20     dnssec-validation yes;
 21     dnssec-lookaside auto;
 22
 23     /* Path to ISC DLV key */
 24     bindkeys-file "/etc/named.iscdlv.key";
 25
 26     managed-keys-directory "/var/named/dynamic";
 27 };
 28
 29 logging {     <- 네임서버 실행시 디버깅에 참고할 로그 파일 생성 및 위치 지정
 30         channel default_debug {
 31                 file "data/named.run";
 32                 severity dynamic;
 33         };
 34 };
 35
 36 zone "." IN {    <- 루트 도메인에 대한 설정을 'named.ca'라는 파일에서 참조하는 설정
 37     type hint;   <- Type 설정(hint : 루트 도메인 지정, master : 1차 네임서버, slave : 2차 네임서버)
 38     file "named.ca";
 39 };
 40
 41 include "/etc/named.rfc1912.zones";
 42 include "/etc/named.root.key";
                                     

 : wq!

 

 

 

 - 구성이 완료되었으면, 'named.conf' 파일 내용을 체크하도록 한다.

 

[root@main /root]# named-checkconf /etc/named.conf

 

 

 

 

 2) 'named.rfc1912.zones' 파일 및 설정

 

 - DNS 서버에 대한 정방향 및 역방향 선언 내용을 관리하는 파일이다.

 

   정방향 : IP 주소를 문자로 표현하는 방법 (자주 사용하는 방법)

   역방향 : 문자를 IP 주소로 표현하는 방법

 


[root@main /root]# ls /etc/named.rfc1912.zones
/etc/named.rfc1912.zones

 

 

[root@main /root]# vi /etc/named.rfc1912.zones

 

  1 // named.rfc1912.zones:
  2 //
  3 // Provided by Red Hat caching-nameserver package
  4 //
  5 // ISC BIND named zone configuration for zones recommended by
  6 // RFC 1912 section 4.1 : localhost TLDs and address zones
  7 // and http://www.ietf.org/internet-drafts/draft-ietf-dnsop-default-local-zones-02.t    xt
  8 // (c)2007 R W Franks
  9 //
 10 // See /usr/share/doc/bind*/sample/ for example named configuration files.
 11 //
 12
 13 zone "localhost.localdomain" IN {   <- 로컬호스트 도메인에 대한 설정(기본 설정 유지 권장)
 14     type master;
 15     file "named.localhost";
 16     allow-update { none; };
 17 };
 18
 19 zone "localhost" IN {    <- 로컬호스트 도메인에 대한 설정(기본 설정 유지 권장)
 20     type master;
 21     file "named.localhost";
 22     allow-update { none; };
 23 };
 24
 25 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 {  <- IPv6 로컬호스트 루프백
 26     type master;                                                                                             (기본 설정 유지 권장)
 27     file "named.loopback";
 28     allow-update { none; };
 29 };
 30
 31 zone "1.0.0.127.in-addr.arpa" IN {    <- 로컬호스트에 대한 루프백 역방향 도메인 설정(기본 설정 유지 권장)
 32     type master;
 33     file "named.loopback";
 34     allow-update { none; };
 35 };
 36
 37 zone "0.in-addr.arpa" IN {    <- 제로호스트에 대한 루프백 설정(기본 설정 유지 권장)
 38     type master;
 39     file "named.empty";
 40     allow-update { none; };
 41 };

 42       // 정방향 설정 //
 43 zone "test.com" IN {              <- 도메인 이름 설정
 44     type master;                      <- 서버 타입 지정 (master, slave)
 45     file "test.com.zone";           <- zone 파일 이름 설정
 46     allow-update { none; };      <- 동기화할 slave 서버 IP 주소 지정 (없으면, none 으로 설정)

         allow-transfer { 172.20.1.X; }; <- Slave DNS 서버가 있다면, 설정 추가

 

47 };

 

 [참고] Slave DNS 서버

 

  zone "test.com" IN {

        type slave;

        file "/var/named/test.com.zone";

        masters { 172.20.1.1; };

        allow-update { none; };

};


 48       // 역방향 설정 //
 49 zone "1.20.172.in-addr.arpa" IN {
 50     type master;
 51     file "172.20.1.rev";
 52     allow-update { none; };
 53 };

 

: wq!                                           

 

 

 - 구성이 완료되었으면, 'named.rfc1912.zones' 파일 내용을 체크하도록 한다.


[root@main /root]# named-checkconf /etc/named.rfc1912.zones

 

 

 

 

 3) Bind Zone 파일


[root@main /root]# ls -l /var/named     (샘플 파일 #  ls -l /usr/share/doc/bind-9.8.2/sample/var/named/)
합계 28
drwxrwx--- 2 named named 4096 2016-03-31 11:09 data
drwxrwx--- 2 named named 4096 2016-03-31 14:10 dynamic
-rw-r----- 1 root  named 2075 2014-04-23 21:57 named.ca
-rw-r----- 1 root  named  152 2009-12-15 21:27 named.empty
-rw-r----- 1 root  named  152 2007-06-21 19:09 named.localhost
-rw-r----- 1 root  named  168 2009-12-15 21:27 named.loopback
drwxrwx--- 2 named named 4096 2016-03-16 22:25 slaves

 

 

 

 

 4) Bind Zone 파일 복사 및 퍼미션 그룹 변경

 

[root@main /root]# cd /var/named
[root@main /var/named]# cp named.localhost test.com.zone
[root@main /var/named]# cp named.localhost 172.20.1.rev

 


[root@main /var/named]# ls -l
합계 36
-rw-r----- 1 root  root   152 2016-04-04 11:33 172.20.1.rev
drwxrwx--- 2 named named 4096 2016-03-31 11:09 data
drwxrwx--- 2 named named 4096 2016-04-04 11:31 dynamic
-rw-r----- 1 root  named 2075 2014-04-23 21:57 named.ca
-rw-r----- 1 root  named  152 2009-12-15 21:27 named.empty
-rw-r----- 1 root  named  152 2007-06-21 19:09 named.localhost
-rw-r----- 1 root  named  168 2009-12-15 21:27 named.loopback
drwxrwx--- 2 named named 4096 2016-03-16 22:25 slaves
-rw-r----- 1 root  root   152 2016-04-04 11:33 test.com.zone

 

 

[root@main /var/named]# ps -ef | grep named | grep -v grep
named    16639     1  0 15:19 ?        00:00:00 /usr/sbin/named -u named

 

 

[root@main /var/named]# groups named
named : named

 

 

[root@main /var/named]# chown root.named test.com.zone
[root@main /var/named]# chown root.named 172.20.1.rev

 


[root@main /var/named]# ls -l
합계 36
-rw-r----- 1 root  named  152 2016-04-04 11:33 172.20.1.rev
drwxrwx--- 2 named named 4096 2016-03-31 11:09 data
drwxrwx--- 2 named named 4096 2016-04-04 11:31 dynamic
-rw-r----- 1 root  named 2075 2014-04-23 21:57 named.ca
-rw-r----- 1 root  named  152 2009-12-15 21:27 named.empty
-rw-r----- 1 root  named  152 2007-06-21 19:09 named.localhost
-rw-r----- 1 root  named  168 2009-12-15 21:27 named.loopback
drwxrwx--- 2 named named 4096 2016-03-16 22:25 slaves
-rw-r----- 1 root  named  152 2016-04-04 11:33 test.com.zone

 

 


 5) 정방향 'test.com.zone' 파일 설정


[root@main /var/named]# cat test.com.zone

 

$TTL 1D
@           IN SOA  @ rname.invalid. (
                                                            0         ; serial
                                                            1D       ; refresh
                                                            1H       ; retry
                                                            1W       ; expire
                                                             3H )    ; minimum
              NS      @
              A       127.0.0.1
              AAAA    ::1 

 

 


 [root@main /var/named]# vi test.com.zone

 

  1 $TTL 1D
  2 @        IN SOA  ns.test.com. root.test.com. (   
  3                                    0   ; serial
  4                                    1D  ; refresh
  5                                    1H  ; retry
  6                                    1W  ; expire
  7                                    3H )    ; minimum
  8            IN NS  ns.test.com.
  9            IN MX   10 mail.test.com.
 10            IN A    172.20.1.1
 11 ns       IN A    172.20.1.1
 12 www   IN A    172.20.1.1
 13 ftp       IN A    172.20.1.2
 14 mail     IN A   172.20.1.1

 15 centos IN A 172.20.1.4
 16 blog     IN CNAME centos

: wq!

 

 

 

 

 6) 역방향 '172.20.1.rev' 파일 설정

 

[root@main /var/named]# cat 172.20.1.rev

 

$TTL 1D
@           IN SOA  @ rname.invalid. (
                                                            0         ; serial
                                                            1D       ; refresh
                                                            1H       ; retry
                                                            1W       ; expire
                                                             3H )    ; minimum
              NS      @
              A       127.0.0.1
              AAAA    ::1 

 

 


 [root@main /var/named]# vi 172.20.1.rev

 

  1 $TTL 1D
  2 @  IN SOA  ns.test.com. root.test.com. (
  3                                    0   ; serial
  4                                    1D  ; refresh
  5                                    1H  ; retry
  6                                    1W  ; expire
  7                                    3H )    ; minimum

  8      IN MX 10 mail.test.com.
  9      IN NS   ns.test.com.
 10 1   IN PTR  ns.test.com.
 11 1   IN PTR  www.test.com.
 12 2   IN PTR  ftp.test.com.
 13 1   IN PTR  mail.test.com.
 

: wq!

 

 

 

 

 7) DNS 서버 지정 설정 변경

 

[root@main /var/named]# vi /etc/resolv.conf

 

  1 # Generated by NetworkManager
  2
  3
  4 # No nameservers found; try putting DNS servers into your
  5 # ifcfg files in /etc/sysconfig/network-scripts like so:
  6 #
  7 # DNS1=xxx.xxx.xxx.xxx
  8 # DNS2=xxx.xxx.xxx.xxx
  9 # DOMAIN=lab.foo.com bar.foo.com
 10 nameserver 172.20.1.1

 11 nameserver 168.126.63.1
 

: wq!

 

 

 

 

 8) Named 서비스 재시작

 

[root@main /var/named]# service named restart
named 정지 중: .                                           [  OK  ]
named 시작 중:                                             [  OK  ]

 

 

 

 

 9) Clone1에서 DNS 서버 지정 설정 변경

 

[root@clone1 /root]# vi /etc/resolv.conf

 

  1 # Generated by NetworkManager
  2
  3
  4 # No nameservers found; try putting DNS servers into your
  5 # ifcfg files in /etc/sysconfig/network-scripts like so:
  6 #
  7 # DNS1=xxx.xxx.xxx.xxx
  8 # DNS2=xxx.xxx.xxx.xxx
  9 # DOMAIN=lab.foo.com bar.foo.com
 10 nameserver 172.20.1.1

 11 nameserver 168.126.63.1

 

: wq!

 

 

 

 

 10) Clone1에서 정방향 DNS 테스트 실시

 

[root@clone1 /root]# nslookup ns.test.com
Server:         172.20.1.1
Address:        172.20.1.1#53

Name:   ns.test.com
Address: 172.20.1.1

 


[root@clone1 /root]# nslookup www.test.com
Server:         172.20.1.1
Address:        172.20.1.1#53

Name:   www.test.com
Address: 172.20.1.1

 


[root@clone1 /root]# nslookup ftp.test.com
Server:         172.20.1.1
Address:        172.20.1.1#53

Name:   ftp.test.com
Address: 172.20.1.2

 


[root@clone1 /root]# nslookup mail.test.com
Server:         172.20.1.1
Address:        172.20.1.1#53

Name:   mail.test.com
Address: 172.20.1.1

 


[root@clone1 /root]# nslookup blog.test.com
Server:         172.20.1.1
Address:        172.20.1.1#53

blog.test.com   canonical name = centos.test.com.
Name:   centos.test.com
Address: 172.20.1.4

 

 

 

 

 11) Clone1에서 역방향 DNS 테스트 실시


[root@clone1 /root]# nslookup 172.20.1.1
Server:         172.20.1.1
Address:        172.20.1.1#53

 

1.1.20.172.in-addr.arpa name = www.test.com.
1.1.20.172.in-addr.arpa name = mail.test.com.
1.1.20.172.in-addr.arpa name = ns.test.com.

 


[root@clone1 /root]# nslookup 172.20.1.2
Server:         172.20.1.1
Address:        172.20.1.1#53

 

2.1.20.172.in-addr.arpa name = ftp.test.com.

 


 

 

 12) DNS 레코드

 

 - 도메인을 설정할 경우, 꼭 '.' 을 마지막에 설정해야 한다. 만약, 마지막에 '.'을 설정하지 않으면 호스트 이름으로 처리한다. 

 

 

[root@main /var/named]# cat test.com.zone

  $TTL 1D          
  @       IN SOA  ns.test.com. root.test.com. (  
                                      0   ; serial
                                      1D  ; refresh
                                      1H  ; retry
                                      1W  ; expire
                                      3H )    ; minimum
             IN NS  ns.test.com.
             IN MX   10 mail.test.com.
             IN A    172.20.1.1
  ns        IN A    172.20.1.1
  www    IN A    172.20.1.1
  ftp        IN A    172.20.1.2
  mail      IN A    172.20.1.1

  centos  IN A    172.20.1.4

  blog     IN CNAME centos

 

 

 레코드

내용 

 ;

 주석 처리

 $TTL 1D

 도메인/IP 주소 정보를 캐시에 저장하는 시간

 

  - 10M: 10분

  - 1H : 1시간

  - 1D : 1일

  - 86400 : 24시간

  - 600 :10분

 

 @

 '/etc/named.rfc1912.zones' 파일에 정의된 test.com도메인 이름을 의미한다.

 @로 표기해도된다. 만약, 도메인으로 표기하려면, test.com. 으로 해야한다.

 IN

 클래스 이름으로 Internet를 의미한다. 가장 일반적으로 사용하는 레코드이다.

 SOA

 Start Of Authority 약자이며 권한을 의미한다.

  

  DNS 도메인명. 이메일주소. 

  ns.test.com. root.test.com.  

 

 각 영역에서 맨 처음에 설정되어 있는 기본 레코드이며,도메인 영역의 등록 정보 내용을 관리한다.

 

 

 ( ) 안에 있는 숫자들은 다음과 같은 시간을 의미한다.

 

 - serial : 일련 번호, 파일이 변경될때 카운트를 증가시킨다.

              상위 네임 서버(1차 넴서버)의 일련 번호가 높으면 DNS 정보를 업데이트한다.

              날짜 형식으로 사용하는 것을 권장함 (Ex : 2016040400)

 

 - refresh : 갱신 주기, 상위 네임 서버(1차 넴서버)에게 업데이트된 정보를 요청하는 시간

 - retry : 재시도 주기, 상위 네임 서버(1차 넴서버)에 문제가 발생할 경우, 재요청 시간

 - expire : 만료 주기, 상위 네임 서버(1차 넴서버)에 접속이 불가능할 경우, 이전 정보를 삭제하는 시간

 - minimum : 최소 주기, 정보가 삭제되는 시간(TTL 개념, 캐싱된 정보를 삭제하는 시간)

 

 NS

 Name Server의 약자이며, 설정된 도메인의 네임 서버 역할을 하는 시스템을 지정함 

만약, 2차 네임서버가 있다면, 2차 네임서버 도메인도 설정해야 함

 MX

 Mail Exchange의 약자이며, 메일 서버 도메인을 지정함

 10 mail.test.com.

 메일 서버의 우선 순위를 '10'을 설정함 (우선 순위는 값이 낮을 수록 높음)

 A

 Address의 약자이며, 호스트 이름에 대한 IP 주소를 지정함 (IPv6는 IN AAAA 형식)

 CNAME

 호스트 이름에 대한 Alias를 지정함 (Ex : 긴 호스트 네임을 대신해서 사용할 경우)

 PTR

 Pointer의 약자이며, 역방향 IP 주소에 대한 도메인을 지정함 

 

 

 

 

 

 13) main에서 HTTP 서비스 활성화 실시

 

[root@main /var/named]# cd

[root@main /root]#

[root@main /root]# service httpd status
httpd가 정지되었습니다


[root@main /root]# service httpd start
httpd (을)를 시작 중: httpd: Could not reliably determine the server's fully qualified domain name, using 172.20.1.1 for ServerName
                                                           [  OK  ]

 

 

 - 오류 메세지 해결 방법


[root@main /root]# vi /etc/hosts

 

  1 127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
  2 ::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
  3 172.20.1.1  test.com main main.com
  4 172.20.1.101 clone1 clone1.com
  5 172.20.1.111 clone2 clone2.com
 

: wq!

 

 

[root@main /root]# service httpd restart
httpd 를 정지 중:                                          [  OK  ]
httpd (을)를 시작 중:                                      [  OK  ]

 

 

[root@main /root]# vi /var/www/html/index.html

 

 1 <h1> Welcome to www.test.com <h1>
 

: wq!

 

 

 

 

 

 14) clone1 Xwindow에서 firefox를 이용하여 'www.test.com' 접속 실시

 

 

 

 

 

 

 

 

 

 - main에서 'index.html' 파일 삭제 실시

 

 

[root@main /root]# rm /var/www/html/index.html
rm: remove 일반 파일 `/var/www/html/index.html'? y

 

Posted by 김정우 강사(카카오톡 : kim10322)
,


Q