dig란?
dig는 Domain Information Groper의 약자로, DNS 정보를 조회하고 진단하기 위한 커맨드 라인 도구이다.
dig의 영단어 뜻이 ‘파헤치다’ 인 것처럼 말 그대로 정보를 파헤치는 명령어다.
디그다도 그래서 디그다다
dig 명령어의 장점
- nslookup 명령어로는 얻기 어려운 상세한 DNS 조회 결과를 얻을 수 있다.
- DNS 구성에 문제가 생겼을 때 원인을 찾는데 유용하다.
- 특정 IP의 도메인 이름을 찾거나, 특정 도메인 이름이 사용 중인 IP들을 찾을 수 있다.
우분투를 사용할 경우 다음 명령어로 설치가 가능하다.
apt-get install dnsutils
dig 사용법
dig 도메인 네임 [레코드명] [@네임서버명] [기타 옵션]
기본 사용 예시
dig 도메인네임
가장 간단한 명령어로,
QUESTION SECTION은 자신의 질의한 내용을 나타내고,
ANSWER SECTION은 서버가 응답한 내용을 나타낸다.
답변으로는 4가지의 A레코드 값이 반환되는데, 여기서 나타난 4개의 IP주소 모두 naver.com 으로 연결된다. 아마 로드 밸런싱을 위함일 것이다.
DNS 서버 지정
dig 도메인네임 @서버주소
기본 네임 서버가 아닌 특정 네임 서버를 지정할 때 사용한다.
@서버주소에 IP주소를 기재해도 되고 호스트명을 기재해도 된다.
기타 옵션
+dnssec
dig 도메인네임 @서버주소 +dnssec
DNSSEC 검증을 수행한다.
만일 네임서버가 DNSSEC 검증을 수행하면 RRSIG 레코드가 붙고
DNSSEC 검증을 수행하지 않는 네임서버면 RRSIG 레코드가 붙지 않는다.
위 예시처럼 @8.8.8.8 (구글 public DNS IP) 를 통해 확인해보면, 같은사이트여도 DNSSEC 검증을 수행함을 확인할 수 있다. 이는 외국 DNS Resolver가 보통 DNSSEC 검증을 시행하기 때문이다. (DNS Resolver란?)
+trace
dig 도메인네임 @서버주소 +trace
trace는 DNS 질의과정을 Root DNS부터 모두 표시해준다.
가끔 DNS 질의가 어디에서 실패하는지 확인해야할 경우가 있는데 이때 유용하다.
+short
dig 도메인네임 +short
필요한 최소한의 결과만 출력한다.
역방향 DNS 질의
dig -x ip주소
도메인 이름 → ip주소로 탐색하는 것이 아닌
ip 주소 → 도메인 이름을 탐색할 수 있다.
이때는 dig 명령어의 -x 옵션을 활용한다.
단, 역방향 DNS 조회 시 사용되는 PTR 유형의 레코드가 등록되어 있어야 한다.
ec2의 인스턴스의 ip로 테스트 해보니 ec2의 도메인네임이 정상적으로 나온다.
HEADER와 comment 읽기
->>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 (중요!!!)
- 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 : 부가적인 정보
comments
Query Time : 총 소요 시간
SERVER : 질의한 서버
WHEN : UTC +0 기준 시간
MSG SIZE : DNS 메시지의 크기(IP, TCP or UDP Header를 제외한 byte)
reference
- https://carpfish.tistory.com/entry/DNS-dig-%EB%AA%85%EB%A0%B9%EC%96%B4-%EC%86%8C%EA%B0%9C-%EB%B0%8F-%EC%82%AC%EC%9A%A9%EB%B2%95
- https://dev.dwer.kr/2020/04/dig.html
'🖥️CS > 🛜네트워크' 카테고리의 다른 글
[Network] - http와 https , SSL 개념 총 정리 (0) | 2024.02.23 |
---|---|
[Network] - OSI 7계층 (1) | 2024.02.23 |
[Network] - 네트워크의 구조와 개념 (0) | 2024.02.23 |
[Network] - 패킷(Packet)의 정의와 구조 (1) | 2024.02.23 |
[Network] - DNS vs DDNS , DNS Resolver (0) | 2023.12.14 |