IT기술/Linux

9-1 DNS서버 구축

dobbby 2013. 9. 13. 12:35
반응형

● DNS 서버 구축


  - DNS 서버 : HostName(ComputerName+Domain)을 ip주소로 변환하는 서버

    => 외부 DNS 서버 : 도메인을 이용하여 도메인DB(.도메인)의 정보를 활용해 

 도메인에 대한 내부 DNS 서버명과 ip 주소를 응답해 주는 서버

       ex) domainname.com   =>  ns.domainname.com : 172.16.5.107


    => 내부 DNS 서버 : 도메인 그룹에 등록된 ComputerName에 대한 ip 주소를 응답해 주는 서버

       ex) www.domainname.com    =>   www : 172.16.5.99


  - DNS 서버 구축 방법

    1. 도메인 구입 후 . 도메인에 도메인에 대한 정보(내부 DNS서버명과 ip주소)를 등록

       ex) domainname.com   =>  ns.domainname.com : 172.16.5.107

           domainname.co.kr  =>  ns.domainname.com : 172.16.5.107


    2. DNS 서버 프로그램 설치

       ]# rpm -qa | grep bind     => 설치 유무 확인

       ]# yum -y install bind     => yum 명령을 이용해 bind 설치 

       ]# rpm -qa | grep bind

       bind-9.3.4-10.P1.el5       => bind 프로그램




    3. DNS 서버 환경설정 => zone(영역)을 생성

      1) forward zone(순방향 영역) : 도메인(호스트명)을 ip 주소로 변환하는 정보를 가지고 있는 영역

         => 도메인의 갯수만큼 생성

        

      2) reverse zone(역방향 영역) : ip 주소를 도메인(호스트명)으로 변환하는 정보를 가지고 있는 영역

         => 1개만 생성(생략 가능)


      ]# vi /etc/named.conf    =>  zone를 만들어 주는 환경설정 파일 

      options {         => 서버옵션 지정영역

    directory "디렉토리명"; => zone 파일이 저장되어야 할 디렉토리

      };  


      zone "정보" IN {                   => 영역 지정

      type {hint|master|slave};   => zone의 형태 지정

             masters { 1차DNS주소; };    => master(1차 DNS서버의 ip주소) : 2차 DNS 서버 설정(type이 salve인 경우)만 사용                file "파일명";              => zone에서 사용할 파일 : zone file

             allow-update { key; };      => 2차 DNS에서 1차 DNS 참조시 인증하기 위한 key 값

      };

      ....


        => 정보 : 도메인 - forward zone

                  ip주소 - reverse zone                      


        => type : hint - zone 파일을 다운로드 받는 zone인 경우

                  master = zone파일을 직접 생성하는 zone인 경우(1차 DNS 서버)

                  slave = zone파일을 1차 DNS의 zone파일을 복사하는 zone인 경우(2차 DNS 서버)


        => zone 파일 : zone의 상세정보를 저장하고 있는 파일

                       zone에서 설정할 값이 같은 경우 같은 zone파일을 사용해도 된다.

 

    ex) ]# vi /etc/named.conf

         options {

directory "/var/named";

         }; 


         zone "." IN {        => forward zond : .도메인

       type hint;

                file "named.ca";     => zone 파일 : . 도메인의 ip주소 정보가 저장된 파일

         };         


         zone "domainname.com" IN {    =>  forward zone : domainname.com 도메인

type master;

file "domainname.com.zone";

allow-update { none; };

};

 

         zone "domainname.co.kr" IN {    =>  forward zone : domainname.co.kr 도메인

type master;

file "domainname.co.kr.zone";

allow-update { none; };

};


         zone "5.16.172.in-addr.arpa" IN {   => reverse zone : 172.16.5 네트워크 그룹 

type master;

file "domainname.rev";

allow-update { none; };

         };





4. zone 파일 생성    =>  /var/named  디렉토리에서 생성

       : zone 파일은 레코드 단위로 데이타를 표현


     1) .도메인에 대한 zone 파일  

         named.ca 파일은 다운로드  =>  wget 명령(URL 자원 다운로드 명령) 활용

          : 외부 DNS 서버 구축


        ]# wget ftp://ftp.internic.net/domain/named.root 

        ]# mv named.root /var/named/named.ca    => 파일 이동 후 파일명 변경  




     2) reverse zone 파일  => domainname.rev

       ※ zone 파일 맨 처음은 TTL 시간을 작성해 준다.

         형식) $TTL  시간(초)  =>  zone 파일의 정보를 클라이언트가 기억하도록 요청하는 시간

       

       SOA 레코드 => 모든 zone 파일의 가장 먼저 선언되는 레코드

                  => 도메인에 대한 권한이 있음을 알리는 레코드 및 2차 DNS가 1차 DNS를 참조하기 위한 시간 설정


        형식)  도메인      IN    SOA    내부DNS서버명  도메인관리자이메일주소  (

시리얼번호  

참조시간

재참조시간

포기시간

정보삭제시간 )  


           => 도메인 대신 @을 사용해도 된다.

           => 도메인 마지막에는 반드시 .를 붙인다.  


               ex) ns.domainname.com.


           => 도메인 관리자 이메일에는 @을 사용할 수 없다  


               ex) ocj.domainname.com   => @ 대신 .을 사용


           => 시리얼번호 : 2차 DNS 서버가 1차 DNS 서버의 Zone파일을 참조할 경우  

    1차 DNS 서버의 Zone 파일의 변경 유무를 확인하는 값 - 일반적으로 날짜 및 시간 정보를 활용

             참조시간 : 2차 DNS서버가 1차 DNS서버를 반복적으로 참조하는 시간

             재참조시간 : 2차 DNS서버가 1차 DNS서버를 참조하기 위해 요청에 대해 응답이 없는 경우 다시 요청하기 위한 시간

             포기시간 : 2차 DNS서버가 1차 DNS서버를 참조할 때 반복적인 요청에 응답이 계속 없을 경우 포기하는 시간=>서버중지               정보삭제시간 : 1차 DNS서버의 정보를 2차 DNS 서버 cache에 저장하는 시간


       NS 레코드  => 모든 zone 파일에 선언되며 SOA 레코드 아래 선언 

           =>  도메인을 관리하기 위한 내부 DNS서버명 지정

         형식)  도메인    IN     NS     내부DNS서버명

               => 도메인은 SOA 레코드에서 @를 사용한 경우 생략 가능

               => NS 레코드는 여러 개 선언 가능(1차 DNS 서버는 여러 개 선언)


        PTR 레코드  =>  reverse zone에만 존재하는 레코드

               => ip 주소는 호스트명으로 변경하는 정보를 가진 레코드

         형식) ip주소 IN     PTR     호스트명


       ex) ]# cd /var/named

           ]# vi domainname.rev 

           $TTL 86400

           @       IN      SOA     ns.domainname.com. ksy.domainname.com.   (                   2013091314

                           28800

                           14400

                           3600000

                           86400   )

                   IN      NS      ns.domainname.com.

           100     IN      PTR     domainname.com.

 




     3) forward zone 파일  => domainname.com.zone  또는 domainname.co.kr.zone

        ※ forward zone파일은 reverse zone 파일과 동일하게 TTL, SOA 레코드 및 ns 레코드로 시작된다. 


        MX 레코드  => 일반적으로  forward zone 파일에 선언한다. 

                   => 도메인을 이용한 메일 서버명을 지정(메일서버를 구출할 경우 반드시 선언해야 되는 레코드)


         형식)  도메인   IN      MX   숫자    메일서버명


        ※ 숫자 : 메일 주서버 및 메일 보조서버들을 구분하는 값

           => 값이 적은 것이 메일 주서버

           주서버 :  메일을 받아 계정에게 전달

           보조서버 : 주서버가 고장날 것을 대비하여 만든 서버

                      주서버가 고장난 경우 


        A 레코드  => forward zone 파일에만 설정

                  => 호스트명을 ip주소로 변경하기 위한 정보를 저장한 레코드


         형식)  호스트명    IN      A     ip주소     


       CNAME 레코드  =>  기존 호스트명에 대한 alias명을 지정


         형식)  호스트명    IN     CNAME    기준호스트명 


      ex) ]# vi domainname.com.zone 

          $TTL 86400

          @       IN      SOA     ns.domainname.com. ksy.domainname.com.   (

                          2013091314

                          28800

                          14400

                          3600000

                          86400   )


                  IN      NS      ns.domainname.com.


                  IN      MX      5       mail.domainname.com.


                  IN      A       172.16.5.107

          www     IN      A       172.16.5.107

          cafe    IN      A       172.16.5.107

          blog    IN      A       172.16.5.107

          www2    IN      CNAME   www

          ns      IN      A       172.16.5.107

          mail    IN      A       172.16.5.107

          ftp     IN      A       172.16.5.107

          mysql   IN      A       172.16.5.107





          ]# vi domainname.co.kr.zone

          $TTL 86400

          @       IN      SOA     ns.domainname.com. ksy.domainname.com.   (

                          2013091314

                          28800

                          14400

                          3600000

                          86400   )


                  IN      NS      ns.domainname.co.kr.


                  IN      A       172.16.5.107

          www     IN      A       172.16.5.107

          ns      IN      A       172.16.5.107





    5. DNS 서버 프로그램을 실행 =>  named 이용하여 관리

      ]# service named start     =>  실행

      ]# ps -xa | grep named     =>  실행 여부 확인

      ]# chkconfig --level 2345 named on   => 부팅시 자동 실행되도록 변경

      ]# chkconfig --list | grep named    

      named           0:해제  1:해제  2:활성  3:활성  4:활성  5:활성  6:해제


 실패가 떨어진다면...




] # vi /etc/sysconfig/selinux




- SELINUX= enforcing disabled 로 바꿔주고 reboot 한다




다시 해보니 된다.




    6. DNS 서버에 대한 요청 응답 확인

      ]# nslookup www.domainname.com    =>  요청 

        => ip주소로 응답  


      ※ 도메인에 대한 .도메인 등록이 되어 있지 않기 때문에 응답이 없다.

         (잘못된 응답이 발생할 수도 있다.)




         ]# vi /etc/resolv.conf

         nameserver  210.181.1.24 

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

                           └ 172.16.5.107으로 변경 => 현재 서버의 ip주소로 변경 






         ]# nslookup www.domainname.com

         Server:         172.16.5.107

         Address:        172.16.5.107#53


         Name:   www.domainname.com

         Address: 172.16.5.107


      ※ 응답이 없을 경우 /etc/named.conf 또는 zone 파일에 오류가 발생된 경우

          =>  변경 후 named 재실행



반응형