dig & nslookup

■ dig

-특정 네임서버로 질의
dig @8.8.8.8 google.com

-특정 레코드 질의
dig @8.8.8.8 mx google.com
dig @8.8.8.8 txt google.com
dig @8.8.8.8 ns google.com
dig @8.8.8.8 ptr google.com
A, AAAA, CNAME, MX, TXT, NS, SOA, SRV, CAA, PTR, NSEC, NSEC3, RRSIG, RP 등이 지원되며 기본값은 A

-IP주소만 간단히 확인
dig google.com +short

-DNS 질의 추적
dig google.com +trace

-Zone-Transfer를 허용하는지 체크 (실패가 정상)
dig google.com AXFR

-결과 읽기

dig 커맨드시 SECTION 위 아래로 다양한 정보가 출력된다.

DNS에 대해 자세히 공부할 경우, 이 다양한 정보를 알고 있는 것이 좋다.
DNS 헤더에 대한 정보가 출력된다.

->>HEADER<<-
opcode : 유형
QUERY : Standard Query (정상 질의응답)
IQUERY : Inverse Query
STATUS : Status
NOTIFY : NOTIFY 메시지
UPDATE : Dynamic UPDATE 메시지

status : 응답 코드
NOERROR : 정상
FORMERR : Format 에러. (잘못된 Field 값을 집어넣은 경우)
SERVFAIL : 서버 에러. (HTTP의 500계열 에러 느낌)
NXDOMAIN : 없는 도메인(Non-Existent Domain). 해당 네임서버에 해당 Zone 없음.
REFUSED : 거절. (해당 Client 요청 무시)

flags (중요!!!)
flag 정보는 알아두면 정말 유용하다.

qr : Query/Response (Query->0 / Response->1, DNS 헤더 참고)
aa : Authoritative (해당 응답은 Authoritative 서버로부터 온 응답)
tc : Truncated (DNS 헤더의 tc bit)

rd : Recursion Desired (해당 질의가 Recursive 한 경우)
ra : Recursion Available (해당 질의가 RD 가능한지)

QUERY / ANSWER / AUTHORITY / ADDTIONAL
각각 DNS 헤더의 SECTION 값을 출력한다. 자세한 건 DNS 헤더 참고
QUERY : 질의
ANSWER : 응답
AUTHORITY : 해당 Zone의 Authoritative Server 정보
ADDITIONAL : 부가적인 정보

Query Time : 총 소요 시간
SERVER : 질의한 서버
WHEN : UTC +0 기준 시간
MSG SIZE : DNS 메시지의 크기(IP, TCP or UDP Header를 제외한 byte)



■ nslookup

nslookup -type=ptr 1.1.1.1 8.8.8.8
>> Name server 8.8.8.8에서 1.1.1.1에 대한 Reverse DNS 쿼리를 조회한다.

nslookup -type=any google.com 8.8.8.8
nslookup -query=mx google.com 8.8.8.8
nslookup -type=soa google.com 8.8.8.8
nslookup -type=txt google.com 8.8.8.8
nslookup -type=ns google.com  8.8.8.8
nslookup -debug google.com  8.8.8.8

위로 스크롤