japanese site
온라인강좌책메일다운로드동아리쇼핑기술지원기업정보갤러리동영상 블로그
『신개념 4단계 리눅스기술지원 시스템 공개』

※ 『무료 리눅스 배포판 배송서비스』 ※

 
8. DNS 오류 수정 도구
조회 : 9,291  




8. DNS 오류 수정 도구

8.1. NSLOOKUP

8.2. DIG
8.3. DNSWALK

8.1. NSLOOKUP

네임서버를 운영하고 관리하는데 있어 문제를 발견하고 해결하기 위해 Resolver의 입장으로 네임서버를 시험해볼 필요가 있다. 대부분의 시스템에 기본 설치되어 있는 nslookup은 dig와 함께 가장 널리 사용되는 네임서버 질의 도구로써, 도메인 메니저의 기본 무기중 하나이다.


    $ nslookup
    Default Server:  ns.nobreak.com
    Address:  210.105.79.2
    > exit

nslookup은 실행후 대화형 프롬프트 '>'를 표시하고 /etc/resolv.conf에 정의된 첫 번째 네임서버를 기본 질의 서버로 설정한다. nslookup은 BIND와 달리 하나의 서버만을 질의에 사용하기 때문에 'Default NS -> Timeout -> Error'와 같이 동작한다.

8.1.1. 도메인 네임 검색

nslookup은 기본적으로 입력된 도메인에 대해 A 레코드를 검색하고, IP 주소(in-addr.arpa)에 대해서는 PTR 레코드를 검색한다. set type=RR 설정으로 A 레코드 이외의 레코드 또한 검색할 수 있으며, RR(Resource Record)에는 A, ANY, CNAME, HINFO, MX, NS, PTR, SOA, TXT 등이 올 수 있다. 이중 ANY는 관련된 레코드들을 모두 출력하라는 약속 기호이다.

    > www.kr.freebsd.org.                 # IP 검색
    Name:    www.kr.freebsd.org
    Address:  150.183.110.39
    
    > ftp.kr.freebsd.org.
    Name:    www.kr.freebsd.org           # ftp는 www의 CNAME
    Address:  150.183.110.39
    Aliases:  ftp.kr.freebsd.org
    
    > 150.183.110.39                      # 도메인 검색
    Name:    www.kr.freebsd.org
    Address:  150.183.110.39
    
    > set type=MX                         # MX 레코드 검색
    > kr.freebsd.org.
    kr.freebsd.org  preference = 10, mail exchanger = mail.kr.freebsd.org
    
    > set type=NS                         # NS 레코드 검색
    > kr.freebsd.org.                     # 도메인 위임 확인
    kr.freebsd.org     nameserver = ns.kr.freebsd.org
    kr.freebsd.org     nameserver = ns2.kr.freebsd.org
    ns.kr.freebsd.org  internet address = 150.183.110.2
    ns2.kr.freebsd.org internet address = 150.183.110.3
    
    > 46.102.39.in-addr.arpa.             # 인버스 도메인 위임 확인
    kr.freebsd.org     nameserver = ns.kr.freebsd.org
    kr.freebsd.org     nameserver = ns2.kr.freebsd.org
    ns.kr.freebsd.org  internet address = 150.183.110.2
    ns2.kr.freebsd.org internet address = 150.183.110.3

8.1.2. 기본 쿼리 서버 변경

nslookup은 기본적으로 recurse 모드로 동작하기 때문에, 때론 해당 도메인의 Authority를 갖는 특정 네임서버에 직접 질의를 하여 Authoritative 응답(네임서버의 캐쉬에서가 아닌)을 확인 할 필요가 있다. server, lserver 명령으로 기본 질의 서버를 변경 할 수 있다. 두 명령은 주어진 네임서버의 주소(쿼리가 아닌)를 찾을 때 사용할 질의 서버의 차이인데, server 는 현재의 기본 서버를 통하고, lserver 는 시스템 기본 서버(nslookup 구동시 초기 설정되는)를 사용함이 다르다. lserver 명령은 타 네임서버로 스위칭 한 후, 다시 다른 네임서버로 스위칭하려 하는데, 현재의 네임서버가 동작하지 않아 해당 네임서버의 주소를 검색하지 못할 때 사용한다. 다음을 보자.


    $ nslookup
    Default Server:  ns.nobreak.com
    Address:  210.105.79.2

nslookup 구동시의 기본 서버 ns.nobreak.com 이 lserver 명령에서 주어진 NS의 주소를 찾기위한 질의 서버가 된다.

    > server ns.jp.freebsd.org.        # 기본 서버 변경
    Default Server:  ns.jp.freebsd.org
    Address:  199.100.7.25
    
    > server ns.nobreak.com.
    *** Can't find address for server ns.nobreak.com: Non-existent host/domain

ns.jp.freebsd.org를 통해 ns.nobreak.com을 찾을 수가 없다. 이때에는 lserver 명령으로 시스템 기본 서버를 통해 ns.nobreak.com 의 주소를 검색한다.

    > lserver ns.nobreak.com.
    Default Server:  ns.nobreak.com
    Address:  210.105.79.2

루트 네임서버를 질의 서버로 하고자 할 때는, 간단히 root 명령을 사용할 수 있다.

    > root
    Default Server:  a.root-servers.net
    Address:  198.41.0.4

8.1.3. 네임 서버처럼 질의하기

네임서버는 Resolver의 요청을 처리하기 위해, 네임스페이스를 검색하며, 여러 네임서버와 통신을 하는데, nslookup으로 동일한 과정을 밟아보도록 하자. 네임서버가 인터넷상에서 어떻게 동작하며, 네임서버들 간에는 어떤 사건들이 발생하고, 여러분을 위해 무엇을 하는지, 구체적인 느낌을 받을 수 있을 것이다.

Figure 8-1. 네임서버처럼 질의하기

네임서버처럼 질의하기

    (1)
    > set norecurse     # Iterative 모드로 전환
    > www.kr.freebsd.org.
    Server:  ns.nobreak.com
    Address:  210.105.79.2
    
    Name:    www.kr.freebsd.org
    Served by:
    - H.ROOT-SERVERS.NET
              128.63.2.53
              ORG
    - B.ROOT-SERVERS.NET
              128.9.0.107
              ORG
    ...

ORG. 가 관리되는 루트 서버들의 목록을 레퍼런싱 해준다.

    (2)
    > server h.root-servers.net.
    > www.kr.freebsd.org.
    Server:  h.root-servers.net
    Address:  128.63.2.53
    
    Name:    www.kr.freebsd.org
    Served by:
    - WHO.CDROM.COM
              204.216.27.3
              FREEBSD.ORG
    - NS1.CRL.COM
              165.113.1.36
              FREEBSD.ORG
    - NS2.CRL.COM
              165.113.61.37
              FREEBSD.ORG
    
    (3)
    > server who.cdrom.com.
    > www.kr.freebsd.org.
    Server:  who.cdrom.com
    Address:  204.216.27.3
    
    Name:    www.kr.freebsd.org
    Served by:
    - ns.kr.freebsd.org
              150.183.110.2
              kr.freebsd.org
    - ns2.kr.freebsd.org
              150.183.110.3
              kr.freebsd.org
    
    (4)
    > server ns.kr.freebsd.org.
    > www.kr.freebsd.org.
    Server:  ns.kr.freebsd.org
    Address:  150.183.110.2
    
    Name:    www.kr.freebsd.org
    Address:  150.183.110.39

8.1.4. Zone Transfer

해당 도메인의 Zone에 대한 복사본을 얻기위해, Primary로부터 Zone 데이터베이스를 끌어오는 작업을 Zone Transfer라 한다. 이 작업은 주로 Secondary NS 측에서 이루어지며, 때때로 얼마나 많은 수의 호스트가 등록되어 있는지 혹은 Zone의 문법적 오류를 검사하기 위해 관리자가 수동으로 조작하기도 한다. Zone Transfer는 Authority를 갖는 네임서버에 직접 질의하여야 하므로, nslookup 상에서 해당 NS로 질의 서버를 변경한후, ls 명령을 사용한다.

    > server ns.kr.freebsd.org.
    > ls -t A kr.freebsd.org.      # A 레코드 출력
     kr.freebsd.org.                server = ns.kr.freebsd.org
     kr.freebsd.org.                server = ns2.kr.freebsd.org
     mail                           150.183.110.32
     mqueue                         150.183.110.33
     www                            150.183.110.39
     www2                           150.183.110.40
    
    > ls -d kr.freebsd.org.        # 모든 레코드 출력
     kr.freebsd.org.                SOA   ns.nobreak.com hostmaster.kr.freebsd.org.
                                    (1999031501 21600 1800 1209600 86400)
     kr.freebsd.org.                NS    ns.nobreak.com
     kr.freebsd.org.                NS    ns2.nobreak.com
     kr.freebsd.org.                MX    10   mail.kr.freebsd.org
     kr.freebsd.org.                MX    20   mqueue.kr.freebsd.org
     cvsup                          CNAME www.kr.freebsd.org
     mail                           A     150.183.110.32
     mqueue                         A     150.183.110.33
     ftp                            CNAME www.kr.freebsd.org
     ftp2                           CNAME www2.kr.freebsd.org
     ftp3                           CNAME ftp.free.nobreak.com
     www                            A     150.183.110.39
     www                            HINFO Pentium-200  FreeBSD 2.2.8
     www                            TXT  "Korea FreeBSD Users Group"
     www2                           A     150.183.110.40
     www2                           HINFO Pentium-133MHz  FreeBSD 2.2.8
     www2                           TXT  "Korea FreeBSD Users Group"
    
    > ls -t MX kr.freebsd.org > MX-kr.freebsd.org   # 파일로 저장
    > view MX-kr.freebsd.org                        # 파일 내용 확인

BIND의 경우 named-xfer라는 외부 프로그램을 사용해 Zone Transfer를 수행한다. 네임서버의 입장에서 부트 파일에 Secondary 설정이 있을 경우의 처리과정을 살펴보자.


    secondary       kr.freebsd.org  210.105.79.2    sec-kr.freebsd.org

BIND는 secondary 명령을 만나면 내부적으로 다음과 같이 동작한다.


    loop(Interval == TTL) {
            named-xfer -z kr.freebsd.org -f /var/named/sec-kr.freebsd.org -s Current_Serial 210.105.79.2
            switch ( $? ) {      // named-xfer 는 환경 변수 '$?'에 결과를 복귀함
                    case 0 : OK; // 시리얼이 같음, Zone Transfer가 필요치 않음
                    case 1 : OK; // 시리얼이 증가했음, Zone Transfer가 성공적으로 수행됨
                    case 2 : ERROR; // 네임서버를 찾을 수 없음
                                    // 혹은 네임서버가 도메인의 Authority를 갖지 않음
                    case 3 : ERROR: // 시리얼이 감소했음, 기존의 백업카피 유지
            }
            primary  kr.freebsd.org  sec-kr.freebsd.org
    }

보안의 이유로 허락된 곳(예: Secondary NS's IP)에서만 Zone Transfer를 허용하고자 한다면, Primary NS의 부트파일에 다음과 같은 옵션을 준다. (Zone Transfer만을 제한하는 것이기 때문에, 호스트에 대한 개별 쿼리는 허용된다)


    xfrnets  210.105.79.3&255.255.255.255  210.105.80.128&255.255.255.128

이것은 BIND-4의 설정예인데, IP 210.105.79.3과 210.105.80.129-254 에서만 Zone Transfer를 허용하라는 의미이다. BIND-4에서는 개별 IP와 서브넷으로 나누어진 블럭에 대해 "IP&Mask"의 형식으로 목록을 작성하며, 클래스 전체를 허용하고자 할 경우엔 210.105.79.0 과 같이 마스크를 생략하여도 된다.


    options {
            allow-transfer { localnets; 210.105.79.3; };
    };

BIND-8의 경우에 해당 서버가 속한 네트워크와, 210.105.79.3만을 허용한 예이다. localnets는 예약어이며 다른 예약어로는 any, none, localhost 가 있다.

8.1.5. 초기화 파일 .nslookuprc

nslookup은 실행시 ~/.nslookuprc 파일이 존재하면, 내용을 읽어 옵션을 조정한다. 매번 설정하는 옵션이 있다면, 본 파일을 통해 간편화할 수 있겠다.

    * .nslookuprc 파일 예
    set type=NS
    set nosearch
    set debug

8.2. DIG

Dig(Domain Information Groper)의 사용법을 조금만 짚어보도록 하자. nslookup과의 기능적 차이는 크게 없지만, 사용이 간결하고, 출력이 상세하여, Shell script등에서 주로 사용된다. 다음은 ns.kornet.ne.kr을 통해 www.nobreak.com의 A 레코드를 검색한 결과이다.


    $ dig [@네임서버] 도메인 [쿼리타입] [+쿼리옵션]
    $ dig  @ns.kornet.ne.kr  www.nobreak.com  A
    ;; ANSWER SECTION:
    www.nobreak.com.        16h12m36s IN CNAME  ns.nobreak.com.
    ns.nobreak.com.         1d19h12m27s IN A  210.105.79.2
    ;; AUTHORITY SECTION:
    nobreak.com.            22h17m35s IN NS  ns.nobreak.com.
    nobreak.com.            22h17m35s IN NS  ns2.nobreak.com.
    ;; ADDITIONAL SECTION:
    ns.nobreak.com.         1d19h12m27s IN A  210.105.79.2
    ns2.nobreak.com.        1d1h46m58s IN A  210.105.79.3

DIG는 쿼리에 대한 결과를 ANSWER SECTION에, 해당 도메인의 인증을 갖는 네임서버 정보를 AUTHORITY SECTION에, 그리고, 글루레코드 등이 있을 경우 그에대한 정보를 ADDITIONAL SECTION에 출력하여 준다.


8.3. DNSWALK

Dnswalk는 Perl로 제작된 스크립트로써 존재하지 않는 호스트를 가르키는 MX, PTR이 없는 A, 잘못된 CNAME, 유효하지 않은 이름문자, 누락된 트레일링 도트, 불필요나 글루 레코드, Lame Delegation 등 Zone 데이터베이스의 다양한 오류를 찾아준다. 미처 발견치 못한 문제점을 진단하는데 도움이 될 것이다. Dnswalk의 최신 버젼은 다음 주소에서 얻을 수 있다.


    $ dnswalk -raFl freebsd.org.
    Checking freebsd.org.
    Getting zone transfer of freebsd.org. from ns2.iafrica.com...done.
    SOA=implode.root.com    contact=hostmaster.freebsd.org
    FAIL: Cannot get SOA record for pt.freebsd.org from zeus.ci.ua.pt
    (lame?): Connection refused
    BAD: lv.freebsd.org NS ns.fasts.com: lame NS delegation
    BAD: eu.freebsd.org NS server.zsb.th-darmstadt.de: unknown host
    WARN: irc3.freebsd.org CNAME irc.nocturnal.net: CNAME (to nocturnal.net)
    WARN: ns.th.freebsd.org A 203.154.230.20: no PTR record
    WARN: irc2.freebsd.org CNAME va.i-Plus.net: unknown host
    1 failures, 3 warnings, 1 errors.

Dnswalk는 검사를 수행하기 위해 해당 도메인을 Zone Transfer 한 후 내부적으로 Dig와 Resolver 루틴을 사용한다. Delegation된 도메인을 따라가며 검사를 행하기 때문에 거대 도메인을 관리한다면 한번쯤 사용해봄직 하다.



[원글링크] : https://www.linux.co.kr/home2/board/subbs/board.php?bo_table=lecture&wr_id=281


이 글을 트위터로 보내기 이 글을 페이스북으로 보내기 이 글을 미투데이로 보내기

 
(주)오픈버드
저작권 : 인터넷 솔루션 개발 전문 기업 (주)오픈버드 제공
.............http://www.openbird.com



 
   
 


『신개념 4단계 리눅스기술지원 시스템 공개』

CentOS 리눅스 전문서적 국내최초출시

 
회사소개 | 보도기사 | 채용안내 | 광고안내 | 이용약관 | 개인정보취급방침 | 책임한계와 법적고지 | 불편사항 신고하기 | 사이트맵
ㅇ 서울 : 서울특별시 강남구 노현로79길 66, 402호(역삼동,청송빌딩)  ㅇ 부산 : 부산광역시 해운대구 우동 1470 에이스하이테크21 914호
ㅇ 대표 : 1544-8128 ㅇ부산직통 : 051-744-0077 ㅇ서울직통 : 02-856-0055 ㅇ FAX : 02-6280-2663
ㅇ 사업자번호 : 128-86-68239 ㅇ 통신판매업 신고번호 : 2013-부산금정-0035호 ㅇ 개인정보책임자 : 이재석
ㅇ 상호명 : (주) 수퍼유저 ㅇ 대표자 : 박성수
Copyright ⓒ (주)수퍼유저. All rights reserved.

 아 이 디
 비밀번호
회원 가입 | 비밀번호 찾기

블로그~
 
▷ DNS
설치&운영
powered by DNS
설정,zone 파일
Tip&Tech
개념&기타
책제목
리눅스서버관리실무바이블v3.0


저자 박성수
페이지수 2,032 pages
펴낸곳(주)수퍼유저

리눅스 서버 구축 및 관리에 필요한 거의 모든 부분과 전반적인 실무 기법들을 다루고 있음
책제목
리눅스보안관리실무(2/E)


저자홍석범
페이지수 820 pages
펴낸곳(주)수퍼유저

리눅스 보안에 관련된 내용을 종합적으로 쓴 책. 저자의 명성 그대로 보안관련의 모든 내용이 그대로 담겨져 있다.