본문 바로가기

Windows Server

DNSLint 유틸리티에 대한 설명

DNSLint에는 DNS(Domain Name System)가 HTML 보고서를 기록하고 생성하는지 확인하는 세 가지 기능이 있습니다. 세 가지 기능은 다음과 같습니다.

  • dnslint /d: 이 기능은 "불완전 위임" 및 기타 관련 DNS 문제를 유발할 수 있는 원인을 진단합니다.
  • dnslint /ql: 이 기능은 여러 DNS 서버에서 사용자 정의된 DNS 레코드 집합을 확인합니다.
  • dnslint /ad: 이 기능은 Active Directory 복제에 특별히 사용된 DNS 레코드를 확인합니다.
DNSLint는 명령줄 유틸리티이며 구문은 다음과 같습니다.

dnslint /d domain_name | /ad [LDAP_IP_address] | /ql input_file
[/c [smtp,pop,imap]] [/no_open] [/r report_name]
[/t] [/test_tcp] [/s DNS_IP_address] [/v] [/y]

DNSLint를 실행할 때는 /d, /ad 또는 /ql을 지정해야 합니다. 다른 스위치는 선택 사항입니다.
/d 스위치를 사용하여 도메인 이름 테스트를 요청합니다. 이 스위치는 불완전 위임 문제를 해결할 때 유용합니다.

  • 테스트할 도메인 이름을 지정해야 합니다.
  • /d 스위치는 /ad 스위치와 함께 사용할 수 없습니다.
/ad 스위치를 사용하여 Active Directory 테스트를 요청합니다.
  • /ad 스위치는 AD 포리스트 복제에 사용되는 DNS 레코드를 확인합니다.
  • 기본적으로 로컬 시스템의 LDAP 서비스가 사용됩니다.
  • 원격 LDAP 서버 IP 주소를 지정할 수 있습니다(옵션).
  • 유효한 IP 주소만 허용되며 이름은 허용되지 않습니다.
    일반적으로 이것은 Active Directory 도메인 컨트롤러입니다.
  • /ad 스위치는 /s 옵션과 함께 사용해야 합니다. 여기서 /s는 AD 포리스트 루트의 _msdcs 영역에 대해 인증된 DNS 서버의 IP 주소를 지정합니다.
  • /ad 스위치는 /d 또는 /c와 함께 사용할 수 없습니다.
/ql 스위치를 사용하여 목록에서 DNS 쿼리 테스트를 요청합니다.
  • /ql 스위치는 텍스트 입력 파일에 지정된 DNS 쿼리를 보냅니다.
  • 입력 파일의 경로와 이름을 지정해야 합니다.
  • /ql 스위치는 A, PTR, CNAME, SRV 및 MX 레코드 쿼리를 지원합니다.
  • 다음을 실행하여 예제 입력 파일을 만듭니다.

    dnslint /ql autocreate

  • /ql 스위치는 /d, /ad 또는 /c와 함께 사용할 수 없습니다.
참고:
  • /d, /ad/ql은 함께 사용할 수 없습니다.
  • /c/ad 또는 /ql과 함께 사용할 수 없습니다.
  • /ad를 사용할 때는 /s도 지정해야 합니다.
옵션 스위치

/c를 사용하여 전자 메일 서버에서 연결 테스트를 요청합니다.
  • /c 스위치는 발견되는 전자 메일 서버에서 SMTP, POP 및 IMAP 포트를 테스트합니다.
  • 기본적으로 세 포트(SMTP, POP 및 IMAP)를 모두 테스트합니다. 하나를 지정하거나 조합을 지정할 수 있습니다. 여러 포트의 조합을 지정하려면 /c pop,imap,smtp와 같이 쉼표로 구분된 목록을 사용합니다.
보고서가 자동으로 열리지 않도록 하려면 /no_open을 사용합니다. /no_open 스위치는 스크립트에서 유용합니다.
/r 스위치를 사용하여 만들려는 보고서 이름을 지정합니다.
  • .htm 파일 확장명이 보고서 이름에 자동으로 추가됩니다.
  • 보고서는 HTML 형식으로 만들어집니다. 기본 이름은 Dnslint.htm입니다.
  • 기본 위치는 현재 디렉터리입니다.
InterNIC Whois 조회를 무시하려면 /s 스위치를 사용합니다.
  • InterNIC를 쿼리하여 IP 주소를 구하는 대신 DNS 서버 IP 주소를 지정할 수 있습니다.
  • /s 스위치는 제공된 IP 주소를 사용하여 DNS 레코드 검사를 시작합니다.
  • 유효한 IP 주소만 허용되며 이름은 허용되지 않습니다.
  • 이 옵션을 사용하여 InterNIC에서 지원하지 않는 도메인 이름을 검사합니다.
  • /ad를 사용하는 경우 /s를 사용하여 AD 포리스트의 루트 도메인에 있는 _msdcs 하위 도메인에 대해 인증된 DNS 서버를 지정해야 합니다.
  • /ad를 사용할 때는 /s localhost를 실행하여 로컬 시스템이 AD 테스트에서 찾은 레코드를 확인할 수 있는지 판단할 수 있습니다.
/t를 사용하여 텍스트 파일로 출력을 요청합니다.
  • 텍스트 파일의 이름은 .htm 보고서 이름과 동일하지만 파일 확장명은 .txt입니다.
  • 텍스트 파일은 .htm 보고서 파일과 같은 디렉터리에 만들어집니다.
/test_tcp를 사용하여 TCP 포트 53을 테스트하도록 요청합니다.
  • 기본적으로 UDP 포트 53만 테스트합니다.
  • /test_tcp 옵션은 TCP 포트 53이 쿼리에 응답하는지 검사합니다.
  • /test_tcp 옵션은 /ql과 함께 사용할 수 없습니다.
/v를 사용하여 화면에 자세한 출력을 요청합니다.
/y를 사용하여 확인 없이 기존의 보고서 파일을 덮어씁니다. /y 스위치는 스크립트에서 유용합니다.
필요한 매개 변수

DNSLint를 실행하려면 다음 세 가지 매개 변수 중 하나를 사용해야 합니다.
  1. /d는 도메인 이름 테스트에 사용합니다.
  2. /ad는 Active Directory 복제 테스트에 사용합니다.
  3. /ql은 쿼리 목록에 지정된 테스트에 사용합니다.
/d(도메인 이름 테스트) 스위치를 사용하여 특정 DNS 도메인 이름을 테스트합니다. 이 스위치를 사용하면 "불완전 위임" 문제 및 기타 관련 DNS 문제를 진단할 수 있습니다. 테스트하는 도메인 이름은 인터넷에 사용하기 위해 등록한 이름이거나 개인 네임스페이스에 사용되는 이름일 수 있습니다. 개인 네트워크의 도메인 이름이나 3 수준 이상의 깊이를 가진 인터넷에 등록된 도메인 이름을 테스트할 때는 /s 옵션을 사용해야 합니다.
/ad(Active Directory 테스트) 스위치를 사용하여 Active Directory 포리스트 복제를 담당하는 DNS 레코드를 테스트합니다. /ad 스위치 뒤에 이 테스트에 사용되는 LDAP 서버의 IP 주소를 지정합니다. 일반적으로 이것은 Active Directory 도메인 컨트롤러입니다. DNSLint가 도메인 컨트롤러에서 실행 중인 경우 이 스위치의 기본값은 127.0.0.1이므로 IP 주소는 필요하지 않습니다.
/ql(쿼리 목록 테스트) 스위치를 사용하여 텍스트 입력 파일에 지정된 DNS 레코드를 테스트합니다. 스위치 바로 뒤에 텍스트 입력 파일의 전체 경로와 이름을 지정합니다. dnslint /ql autocreate를 실행하여 In-dnslint.txt라고 하는 예제 텍스트 입력 파일을 생성합니다. 이 파일에는 필요한 형식에 대한 설명이 들어 있습니다. 이 파일을 템플릿으로 사용하여 다른 입력 파일을 만들 수 있습니다.
추가 옵션 스위치

/v(세부 정보 표시) 스위치는 "세부 정보 표시 모드"를 설정합니다. 이 스위치를 설정하면 DNSLint는 데이터를 수집하는 데 사용하는 단계를 화면에 출력합니다. 이 출력을 파일로 보낼 수 있습니다 예를 들어 dnslint /v /d msn.com이라고 지정할 수 있습니다.
기본적으로 DNSLint가 생성하는 보고서 이름은 Dnslint.htm입니다. /r(보고서) 스위치를 사용하면 DNSLint가 생성하는 보고서 파일의 이름과 위치를 지정할 수 있습니다. 테스트한 도메인 이름이나 DNS 서버와 동일한 이름을 보고서 이름으로 지정할 수 있습니다. 보고서는 HTML 형식이기 때문에 ".htm" 파일 확장명이 보고서 이름에 자동으로 추가됩니다.
기본적으로 DNSLint는 보고서 파일이 생성된 후에 보고서 파일의 .htm 파일과 연결된 프로그램을 사용하여 자동으로 열려고 시도합니다. 일반적으로 .htm 확장명의 기본 연결 프로그램은 Microsoft Internet Explorer입니다. DNSLint를 사용하여 보고서 형식을 HTML 이외의 다른 형식으로 변경하는 방법은 없습니다.
보고서 파일을 쓰는 위치를 정의하려면 보고서 파일의 전체 경로와 이름을 지정하십시오. DNSLint는 로컬 드라이브 경로와 UNC(범용 명명 규칙) 경로를 모두 지원합니다. 예를 들어 dnslint /d msn.com /r c:\reports\reskit 명령은 C:\Reports 폴더에 Reskit.htm이라는 보고서를 만듭니다. dnslint /d mydom.local /r \\server1\reports\mydom 명령은 server1이라는 원격 시스템의 Reports 공유 폴더에 보고서를 만듭니다. 보고서 이름은 Mydom.htm입니다.
/t(텍스트) 스위치를 지정하면 DNSLint는 텍스트 보고서와 HTML 보고서를 생성합니다. 텍스트 보고서 파일 이름은 파일 확장명이 .txt인 것을 제외하고 .htm 보고서와 같으며 .htm 파일과 같은 폴더에 만들어집니다. 예를 들어 dnslint /d msn.com /r c:\reports\reskit /t 명령은 C:\Reports 폴더에 두 개의 보고서를 만듭니다. 한 보고서는 Reskit.htm이고 다른 보고서는 Reskit.txt입니다.
기본적으로 DNSLint는 생성하려는 파일과 이름이 같은 보고서 파일이 대상 폴더에 이미 있는 것을 발견하면 해당 파일을 덮어쓸 것인지 묻습니다. /y 옵션을 사용하면 DNSLint가 덮어쓸 것인지 묻지 않고 기존의 보고서 파일을 덮어쓸 수 있습니다. 이 옵션을 사용하면 .htm 파일과 옵션 .txt 파일을 모두 덮어씁니다.
dnslint /y /d msn.com /r c:\reports\reskit /t 명령은 C:\Reports 폴더에 두 개의 보고서를 만듭니다. 한 보고서는 Reskit.htm이고 다른 보고서는 Reskit.txt입니다. 사용자에게 묻지 않고 기존의 보고서 파일을 덮어씁니다.
/no_open 스위치는 보고서가 생성된 후에 DNSLint가 보고서를 자동으로 열지 않도록 합니다. 이 옵션은 보고서를 즉시 검토하지 않거나 DNSLint가 실행된 시스템에서 검토하지 않으려는 경우 스크립트에서 DNSLint를 사용할 때 유용합니다. 예를 들어 dnslint /y /d msn.com /no_open 명령은 사용자에게 묻지 않고 기존의 보고서를 같은 이름으로 덮어쓰는 Dnslint.htm이라는 보고서를 생성합니다. DNSLint는 보고서가 완료되면 보고서를 자동으로 열지 않습니다.
/test_tcp(TCP 포트 53 테스트) 옵션은 /d를 사용하는 경우 TCP 포트 53을 테스트할 것을 요청합니다. 현재 인터넷에서 대부분의 DNS 서버는 TCP 포트 53에 대한 가능한 공격을 피하기 위해 이 포트에 대해 DNS 쿼리를 허용하지 않습니다. 기본적으로 DNSLint를 실행할 때 UDP 포트 53만 테스트합니다. /test_tcp 옵션을 지정하면 DNSLint가 TCP를 통해 단일 DNS 쿼리를 보내고, 응답을 받았는지 보고하도록 합니다.
/test_tcp 옵션은 /d/ad와 함께 사용할 수 있습니다. 그러나 /test_tcp 옵션은 /ql 또는 /ad /s localhost 조합과 함께 사용할 수 없습니다. /ql 기능을 사용하면 TCP 포트 53을 입력 파일에서 직접 테스트할 수 있습니다. /ad /s localhost 기능은 로컬로 구성된 DNS 서버가 Active Directory 포리스트 복제에 사용된 DNS 레코드를 확인할 수 있는지 테스트합니다. 대신 /ad /s ip_addr을 사용하여 TCP 포트 53 연결을 테스트할 수 있습니다. 여기서 ip_addr은 Active Directory 도메인의 루트에 있는 _msdcs 영역에 대해 인증된 DNS 서버의 IP 주소입니다.
예는 다음과 같습니다.

dnslint /d microsoft.com /v /test_tcp

/c(연결 테스트) 스위치는 지정된 도메인 이름에 대해 DNS 서버를 검사하면서 발견되는 모든 전자 메일 서버에서 잘 알려진 전자 메일 포트를 테스트하도록 요청합니다. SMTP(Simple Mail Transfer Protocol), POP3(Post Office Protocol 버전 3) 및 IMAP4(Internet Message Access Protocol 버전 4)가 지원됩니다. 기본적으로 /c 스위치를 지정하면 DNSLint는 발견되는 각 전자 메일 서버의 세 포트 모두에 연결을 시도합니다. 즉, SMTP용 TCP 포트 25, POP용 TCP 포트 110 및 IMAP용 TCP 포트 143에 연결하려고 합니다.
DNSLint는 각 포트의 상태 즉, "수신 중(Listening)", "수신 중이지 않음(Not Listening)" 또는 "응답 없음(No Response)" 중 하나를 보고합니다. DNSLint가 포트가 수신 중인 것을 발견하는 경우 포트로부터 응답이 반환되면 이 응답을 반환합니다. 예를 들어 SMTP 포트가 수신 중인 경우 일반적으로 다음과 같은 SMTP 프로토콜 사양과 호환되는 응답을 반환합니다.
220 mailsrv.reskit.com Microsoft ESMTP MAIL Service, Version: 5.0.2195.3705 ready at Mon, 13 May 2002 17:08:36 -0700
포트가 "수신 중이지 않음"으로 보고되면 쿼리 중인 전자 메일 서버가 재설정 플래그가 설정된 상태에서 TCP 패킷으로 응답했음을 나타냅니다. 이것은 포트에서 수신 중인 서비스나 프로그램이 없다는 것을 나타냅니다.
대상 전자 메일 서버가 연결 시도에 응답하지 않으면 "응답 없음"이 보고됩니다. 이것은 대상 서버가 작동하고 실행 중이라고 가정하면 대상 서버 또는 DNSLint를 실행 중인 클라이언트와 대상 서버 사이에서 포트가 필터링되고 있음을 나타냅니다.
dnslint /y /v /c /d msn.com 명령은 사용자에게 묻지 않고 기존의 보고서를 같은 이름으로 덮어쓰는 Dnslint.htm이라는 보고서를 생성합니다. /c 옵션이 지정되기 때문에 다음과 같은 추가 섹션이 표준 DNSLint 보고서 맨 아래에 추가됩니다.

Network Connectivity Tests
E-mail server: smtp-gw-4.msn.com
IP address: 207.46.181.13
SMTP response:
220 cpimssmtpa18.msn.com Microsoft ESMTP MAIL Service, Version:
5.0.2195.4905 ready at Tue, 14 May 2002 09:26:06 -0700
POP response: NO RESPONSE (possibly filtered)
IMAP response: NO RESPONSE (possibly filtered)

참고:
하나 이상의 POP 서버가 응답하지 않았습니다.
하나 이상의 IMAP 서버가 응답하지 않았습니다.
대상 전자 메일 서버가 전자 메일 포트 중 하나에서 연결 시도에 응답하지 않으면 DNSLint는 연결을 3회 재시도합니다. 이것은 TCP 클라이언트의 표준 동작입니다. "응답 없음" 상태라고 나타내기까지 DNSLint는 세 번의 개별 TCP 연결 시도동안 대기하기 때문에 이 프로세스로 인해 보고서 완료가 늦어질 수 있습니다. DNSLint 작업을 최적화하기 위해 매번 세 포트를 모두 검사하는 대신 검사할 전자 메일 포트를 지정할 수 있습니다.
기본적으로 /c 옵션이 지정되면 세 개의 TCP 포트(25, 110, 143)를 모두 검사합니다. 그러나 /c 옵션 뒤에 검사할 포트를 지정할 수 있습니다. /c 옵션 바로 뒤에 쉼표로 구분된 목록을 지정하십시오. 유효한 포트인 smtp,pop,imap만 지정하십시오. 이러한 세 포트의 조합이 가능합니다. 예를 들어 dnslint /d reskit.com /c smtp 명령은 SMTP 포트(TCP 포트 25)만 검사하도록 지정합니다.
dnslint /d reskit.com /c pop,smtp 명령은 SMTP 포트(TCP 포트 25)와 POP 포트(TCP 포트 110)만 검사하도록 지정합니다.
dnslint /d reskit.com /c imap,pop 명령은 IMAP 포트(TCP 포트 143)와 POP 포트(TCP 포트 110)만 검사하도록 지정합니다.
/s(서버) 스위치는 /d/ad 기능과 함께 사용할 수 있습니다. /s 스위치는 여러 가지 용도로 사용할 수 있지만 한 종류의 데이터, 즉 DNS 서버의 유효한 IP 주소(한 가지 예외가 있음)만 사용합니다.
/d를 지정하면 /s 옵션은 DNSLint가 기본적으로 수행하는 InterNIC Whois 조회를 무시합니다. 결과적으로 DNSLint는 개인 네트워크와 인터넷에서 3 수준 이상의 깊이를 가진 도메인 이름에서 테스트를 실행할 수 있습니다. 또한 DNSLint는 InterNIC에서 지원하지 않는 도메인 이름도 테스트할 수 있습니다. 이 문서가 작성된 시점에는 InterNIC에서 .biz, .com, .coop, .edu, .info, .int, .museum, .net 및 .org 도메인에 대한 Whois 조회를 지원했습니다.
/ad를 사용할 때는 /s 스위치를 통해 Active Directory 포리스트 복제에 사용되는 DNS 레코드가 등록된 하위 도메인에 대해 인증된 DNS 서버의 IP 주소를 지정합니다. 일반적으로 이것은 Active Directory 포리스트의 루트에 있는 _msdcs 하위 도메인입니다. 예를 들어 Active Directory 포리스트의 루트가 myad.reskit.com이라면 이 도메인을 호스팅하는 DNS 서버도 Active Directory 복제에 사용된 DNS 레코드가 등록되어 있는 _msdcs.myad.reskit.com 영역에 대해 인증될 수 있습니다. 또한 _msdcs.myad.reskit.com 영역을 다른 DNS 서버에 위임할 수 있습니다. 그러나 DNS 인프라가 설계되었어도 _msdcs.myad.reskit.com 영역에 대해 인증된 DNS 서버를 지정하는 데 /s 옵션이 사용됩니다.
/s 옵션은 유효한 IP 주소를 지정해야 합니다. 이 규칙의 유일한 예외는 다음 조합의 경우입니다.

dnslint /ad /s localhost

"localhost"는 유효한 IP 주소가 아닙니다. 이 매개 변수를 /ad /s 조합에서 지정하면 DNSLint는 Active Directory 포리스트 복제에 사용된 DNS 레코드를 확인하는 로컬 시스템(DNSLint를 실행하는 시스템)의 기능을 테스트합니다. 재귀적 DNS 쿼리를 로컬 시스템의 구성된 DNS 서버로 보내 로컬 시스템이 Active Directory 포리스트 복제에 사용되는 DNS 레코드를 확인할 수 있는지 검사합니다. 이 방법은 특정 도메인 컨트롤러에서 Active Directory 복제 문제를 해결할 때 유용할 수 있습니다.
일반적으로 이 프로세스 동안 로컬 시스템의 구성된 DNS 서버를 모두 쿼리하지는 않습니다. 로컬 시스템의 DNS Server 목록 맨 위에 있는 DNS 서버가 응답하지 않을 경우 목록의 다음 서버가 사용되도록 기본 DNS 클라이언트 확인자가 관찰됩니다.