DNS 운용시 알아 두면 좋은 것

리눅스/DNS|2015. 1. 26. 17:31
반응형

1. 버전 알아 내기와 감추기

   1) 로컬 서버에서 확인

       # named -v

   2) nslookup 이용

       # nslookup

       > server kns.kornet.net
       Default Server:  kns.kornet.net
       Address:  168.126.63.1

       > set class=chaos
       > set type=txt
       > version.bind
       Server:  kns.kornet.net
       Address:  168.126.63.1

       VERSION.BIND    text = "Cyber World Leader Kornet!"
       >

       * 보통 보안을 위해서 위와 같이 변경을 합니다.

   3) dig 이용

       # dig @kns.kornet.net txt chaos version.bind

       ; <<>> DiG 8.3 <<>> @kns.kornet.net txt chaos version.bind
       ; (1 server found)
       ;; res options: init recurs defnam dnsrch
       ;; got answer:
       ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 44330
       ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0
       ;; QUERY SECTION:
       ;;      version.bind, type = TXT, class = CHAOS

       ;; ANSWER SECTION:
       VERSION.BIND.           0S CHAOS TXT    "Cyber World Leader Kornet!"

       ;; Total query time: 1 msec
       ;; FROM: ns.telate.com to SERVER: 168.126.63.1
       ;; WHEN: Tue Jun  7 14:39:20 2005
       ;; MSG SIZE  sent: 30  rcvd: 81
   4) 버전 감추기

       - named.conf 파일에 아래와 같이 넣어 줍니다.

          options { version "x.x.x"; }

          // 이렇게 하면 버전 정보가 x.x.x 로 출력 됨.

 

2. DNS 캐시

   1) rndc 또는 ndc(bind8) 명령으로 캐시 내용을 추출함.

       # ndc dumpdb

       이후 named_dump.db 파일을 열어서 확인 함.

   2) 윈도우 OS에서 확인

       c:> ipconfig /displaydns  --> 캐시 내용이 출력됨.

       c:> ipconfig /flushdns  --> 캐시를 초기화 함.

       * 윈도우가 멍청해서 가끔 잘못된 dns lookup을 할 경우가 있음으로 위의 명령을

          활용하면 유용합니다.

 

3. BIND에서 보안 옵션들

    1) recursion 방지

        named.conf 에  options { allow-recursion { 172.0.0.1; 192.168.0.0/24; };}; 추가 하면

        해당 네트워크나 IP에서만 recursion 커리를 할 수 있음.

        * recursion 을 막아 두면 해당 도메인에 대한 네임서버만 쿼리에 대하여 리스폰스 합니다.

    2) 존트랜스퍼 방지

        named.conf 에 options { allow-transfer { 192.168.0.1; }; }; 추가 하여

        slave 네임서버만 zone transfer를 할 수 있도록 함.

        * bind가 기본값이 zone transfer 가 되도록 되어 있음으로 slave서버가 없다면

          options { allow-transfer ( none; }; };  으로 셋팅 하시기 바랍니다.

    3) zone transfer 되는지 확인하기

         # dig @ns.test.co.kr test.co.kr axfr

         # nslookup

         > server ns.test.co.kr

         > ls -t test.co.kr
         [ns.test.co.kr]
         *** Can't list domain telate.com: Unspecified error
         >

         * 보통 위와 같이 나오면 zone transfer 되지 않는 것임

           (zone transfer 는 TCP에서 동작 함)

 

4.  dig 유틸리티 사용

   1) 기본 사용법

        dig [@server] domain [<query-type>] [<query-class>] [+<query-option>]
             [-<dig-option>] [%comment]

          - @server : 네임서버 주소 기본값은 /etc/resolv.conf 값

          - domain : 질의 하고자 하는 도메인 ( . 을 사용 하면 root 도메인, -x 역도메인)

          - query-type

              a : network address

              any :  모든 정보 커리 함

              mx : mail exchanger

              soa : zone 파일 등록 정보

              hinfo : 호스트 정보

              axfr : zone transfer

              txt : text 형태

          - query-class

              in : Internet class domain
              any : all/any class information

          - +query-option

              +tree : 계층 구조를 알 수 있음.

              +multiline : zone 파일 설정 그대로 보여 줌

              +vc  : TCP로 쿼리를 함.

           * 기타 man 도움말을 활용 하기 바람.

    2) 응용 예

       - root 네임서버 알아 내기

          # dig @a.root-server.net. . ns

       - 국내 kr 네임서버 알아 내기

          # dig @a.root-server.net. kr. ns

       - zone transfoer 되는지 확인하기

          # dig @ns.test.co.kr test.co.kr axfr

       - bind 버전 알아 내기

          # dig @kns.kornet.net txt chaos version.bind

       - 역도메인 알아 내기

          # dig -x 192.168.0.1

       - soa 정보 보기

          # dig test.co.kr soa +multiline

        - 네임 서버로 부터 응답을 찾아 오는 과정 보기

          # dig test.co.kr +tree

 

5. dnstop 유틸리티 사용

    # dnstop -s fxp0    --> 여기서 fxp0 는 NIC장치명 (리눅스에서는 eth0)

     1 new queries, 94 total queries                   Tue Jun  7 14:54:40 2005

     SLD                           count      %
     -------------------- --------- ------
     co.kr                          78   83.0
     floweris.com                 5    5.3
     daejeonflower.com        2    2.1
     tongdaemun-flower.co   2    2.1
     thru-the.net                  2    2.1
     hyoksung.com              1    1.1
     hanmin.net                   1    1.1
     ultradns.org                 1   1.1
     ultradns.net                 1    1.1
     gunchi.org                   1    1.1

 

6. zone 파일 오류 찾기

   -  bind를 디버깅 모드로 실행
       # named -d 1 &
       named.run 파일에 관련 디버깅 메시지가 기록됨

       이 파일을 분석하면 대부분의 문법 오류 등을 찾을 수 있음.

 

 

작성 : 마그마(필명) putter@naver.com

 
 


반응형

댓글()