dig 명령어: 리눅스 DNS 조회와 +short, +trace 출력 읽기

공정위 광고 문구 Ver 3.1
공정위 광고 문구 Ver 3.2(모바일 전용)
테스트 환경RHEL 계열AlmaLinux 9.8dig 9.16root 계정Debian 12 · dig 9.18 일반 계정2026-11-04 확인
네트워크 명령어dig위치/usr/bin/dig

도메인에 연결된 DNS 레코드를 DNS 서버의 응답 헤더까지 그대로 확인할 때는 dig 명령어를 사용합니다. AlmaLinux 9와 Debian 12 서버에서 example.com의 레코드를 종류별로 조회하고 묻는 DNS 서버를 바꿔 본 결과, 응답 헤더의 status와 flags만으로 이름이 없는 경우와 DNS 서버가 답을 내지 못한 경우, 레코드를 관리하는 서버가 직접 답한 경우를 구분할 수 있었습니다.

아래 출력은 AlmaLinux 9.8 서버(root 계정)와 Debian 12 서버(일반 계정)에서 실행한 결과입니다. 서버에 설정된 DNS 서버 주소는 예시 값 192.0.2.53으로, dig 버전 번호도 예시 값으로 바꿨습니다.

1️⃣ dig 명령어 사용법

  • ↪️ 기본 출력 읽기

기본 형식은 [dig @서버 이름 종류]이고, 서버와 종류는 생략할 수 있습니다. 공식 매뉴얼 기준으로 서버를 적지 않으면 /etc/resolv.conf에 설정된 DNS 서버에 묻고, 종류를 적지 않으면 A 레코드를 조회합니다.

dig example.com
; <<>> DiG 9.16.20-RH <<>> example.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 62441
;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;example.com.			IN	A

;; ANSWER SECTION:
example.com.		62	IN	A	104.20.23.154
example.com.		62	IN	A	172.66.147.243

;; Query time: 1 msec
;; SERVER: 192.0.2.53#53(192.0.2.53)
;; WHEN: Thu Oct 29 00:09:18 UTC 2026
;; MSG SIZE  rcvd: 72

세미콜론으로 시작하는 줄은 설명 줄이고, 세미콜론 없는 줄이 실제로 받은 레코드입니다. 구역마다 확인하는 내용은 아래와 같습니다.

출력확인하는 것
; <<>> DiG 9.16.20-RH <<>> example.com실행한 dig 버전과 입력한 인자
->>HEADER<<- … status: NOERROR, id: 62441응답 코드(status)와 질의 번호(id)
flags: qr rd ra응답 헤더의 플래그 — 응답한 서버가 재귀 조회를 했는지, 레코드를 관리하는 서버인지
QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 1구역마다 담긴 레코드 수
OPT PSEUDOSECTION · EDNS … udp: 4096EDNS 확장 정보와 UDP로 받을 수 있는 응답 크기(바이트)
QUESTION SECTION보낸 질문 — 이름, 클래스(IN), 레코드 종류
ANSWER SECTION받은 레코드 — 이름, TTL(초), 클래스, 종류, 값 순서
Query time: 1 msec응답이 오기까지의 시간
SERVER: 192.0.2.53#53(192.0.2.53)응답한 DNS 서버 주소와 포트 번호
WHEN · MSG SIZE rcvd: 72조회 시각과 받은 응답 크기(바이트)

flags 줄의 qr는 응답, rd는 재귀 조회 요청, ra는 재귀 조회 지원을 의미합니다(RFC 1035). aa 없이 ra만 있어, 이 응답은 레코드를 관리하는 서버가 아니라 재귀 조회를 수행하는 DNS 서버가 보낸 것입니다.

ANSWER 구역의 62는 TTL로, 이 레코드를 캐시에 둘 수 있는 남은 시간(초)입니다. 바로 뒤 같은 이름을 8.8.8.8에 묻자 300이 나와, DNS 서버마다 캐시에 담아 둔 시점에 따라 숫자가 달랐습니다.

같은 조회를 nslookup 명령어로 하면 응답 코드와 TTL이 기본 출력에 나오지 않습니다. 두 명령의 출력에서 달랐던 점은 아래와 같습니다.

비교dignslookup
응답 코드HEADER 줄의 status에 늘 나옴오류일 때만 server can't find 줄로 나옴
TTLANSWER 레코드 줄마다 나옴-debug를 붙여야 나옴
응답한 DNS 서버맨 아래 SERVER 줄맨 위 Server · Address 줄
NXDOMAIN 종료 코드01

설치된 dig 버전은 -v로 확인합니다. AlmaLinux 9 서버는 9.16, Debian 12 서버는 9.18이었습니다.

dig -v
DiG 9.16.20-RH

2️⃣ dig 레코드 조회

  • ↪️ A, AAAA, MX, NS, TXT, CNAME, SOA

이름 뒤에 레코드 종류를 적으면 그 레코드만 조회합니다. 종류마다 담는 값과 이 글에서 조회한 결과는 아래와 같습니다.

종류담는 값조회 결과
AIPv4 주소example.com → 104.20.23.154 외 1개
AAAAIPv6 주소example.com → 2606:4700:10::6814:179a 외 1개
MX메일 서버와 우선순위example.com → 0 . (메일을 받지 않음)
NS레코드를 관리하는 네임 서버example.com → hera · elliott.ns.cloudflare.com.
TXT정해진 형식 없는 글자 값(SPF 등)example.com → v=spf1 -all 외 1개
CNAME다른 이름의 별칭www.github.com → github.com.
SOA영역의 주 네임 서버와 시간 값example.com → elliott.ns.cloudflare.com. …
PTRIP 주소에 연결된 이름(역방향)-x 8.8.8.8 → dns.google.

메일 서버는 MX 레코드로 확인합니다. example.com의 MX를 조회하자 ANSWER 구역에 [0 .] 한 줄이 나왔습니다.

dig example.com MX
; <<>> DiG 9.16.20-RH <<>> example.com MX
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 34433
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;example.com.			IN	MX

;; ANSWER SECTION:
example.com.		300	IN	MX	0 .

;; Query time: 5 msec
;; SERVER: 192.0.2.53#53(192.0.2.53)
;; WHEN: Thu Oct 29 00:09:23 UTC 2026
;; MSG SIZE  rcvd: 55

0은 우선순위이고, 메일 서버 이름 자리에 점 하나만 있는 MX는 이 도메인이 메일을 받지 않는다는 Null MX입니다(RFC 7505). 종류를 소문자 mx로 적어도 같은 결과가 나왔습니다.

레코드 줄만 볼 때는 [+noall +answer]를 붙입니다. 공식 매뉴얼 기준으로 +noall은 출력 구역을 모두 끄고, +answer는 ANSWER 구역만 다시 켭니다.

dig example.com NS +noall +answer
example.com.		12192	IN	NS	hera.ns.cloudflare.com.
example.com.		12192	IN	NS	elliott.ns.cloudflare.com.

example.com의 네임 서버는 둘이었습니다. 이 두 서버가 example.com의 레코드를 직접 관리하는 권한 있는 네임 서버입니다.

dig example.com TXT +noall +answer
example.com.		300	IN	TXT	"v=spf1 -all"
example.com.		300	IN	TXT	"_k2n1y4vw3qtb4skdx9e7dxt97qrmmq9"

TXT 레코드에는 정해진 형식 없이 글자 값을 넣을 수 있습니다. v=spf1 -all은 이 도메인 이름으로 메일을 보낼 수 있는 서버가 없다는 SPF 값입니다.

dig www.github.com CNAME +noall +answer
www.github.com.		291	IN	CNAME	github.com.

www.github.com은 github.com의 별칭(CNAME)이었습니다. 종류를 적지 않고 같은 이름을 조회하자 CNAME 줄 뒤에 github.com의 A 레코드가 이어서 나왔습니다.

SOA 레코드는 +multiline을 붙이면 숫자마다 이름과 시간이 주석으로 붙어 읽기 쉽습니다.

dig example.com SOA +multiline +noall +answer
example.com.		1765 IN	SOA elliott.ns.cloudflare.com. dns.cloudflare.com. (
				2418004112 ; serial
				10000      ; refresh (2 hours 46 minutes 40 seconds)
				2400       ; retry (40 minutes)
				604800     ; expire (1 week)
				1800       ; minimum (30 minutes)
				)

serial은 레코드를 고칠 때마다 올라가는 일련번호이고, refresh와 retry, expire는 보조 네임 서버가 주 서버와 레코드를 맞출 때 쓰는 시간 값입니다. minimum은 없는 이름이나 레코드에 대한 응답을 캐시에 두는 시간입니다.

값만 필요할 때는 +short를 붙입니다. A 레코드는 IP 주소만, MX는 우선순위와 메일 서버 이름만 남았습니다.

dig +short example.com
172.66.147.243
104.20.23.154
dig google.com MX +short
10 smtp.google.com.

[+noall +answer] 뒤에 +stats를 더하면 조회 시간과 응답한 서버 줄이 함께 나옵니다. Debian 12 서버의 dig 9.18에서는 SERVER 줄 끝에 질의를 보낸 방식 (UDP)가 붙었고, AlmaLinux 9 서버의 dig 9.16에는 이 표기가 없었습니다.

dig example.com +noall +answer +stats
example.com.		235	IN	A	172.66.147.243
example.com.		235	IN	A	104.20.23.154
;; Query time: 0 msec
;; SERVER: 192.0.2.53#53(192.0.2.53) (UDP)
;; WHEN: Thu Oct 29 00:10:26 UTC 2026
;; MSG SIZE  rcvd: 72

3️⃣ dig DNS 서버 지정과 역방향 조회

  • ↪️ @서버, aa, -x

이름 앞에 @와 DNS 서버를 적으면 서버에 설정된 DNS 서버 대신 그 서버에 묻습니다. 8.8.8.8에 묻자 SERVER 줄이 8.8.8.8로 바뀌고, flags에 ad가 더해졌습니다.

dig @8.8.8.8 example.com
; <<>> DiG 9.16.20-RH <<>> @8.8.8.8 example.com
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 61431
;; flags: qr rd ra ad; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 512
;; QUESTION SECTION:
;example.com.			IN	A

;; ANSWER SECTION:
example.com.		300	IN	A	104.20.23.154
example.com.		300	IN	A	172.66.147.243

;; Query time: 30 msec
;; SERVER: 8.8.8.8#53(8.8.8.8)
;; WHEN: Thu Oct 29 00:09:29 UTC 2026
;; MSG SIZE  rcvd: 72

ad는 응답한 서버가 DNSSEC 서명을 검증해 응답의 레코드를 믿을 수 있다고 판단했다는 플래그입니다(RFC 4035). 서버에 설정된 DNS 서버의 응답에는 ad가 없었습니다.

NS 조회에서 나온 네임 서버를 @ 뒤에 적으면 example.com의 레코드를 관리하는 서버에 직접 묻게 됩니다.

dig @elliott.ns.cloudflare.com example.com
; <<>> DiG 9.16.20-RH <<>> @elliott.ns.cloudflare.com example.com
; (6 servers found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 61828
;; flags: qr aa rd; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 1
;; WARNING: recursion requested but not available

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 1232
;; QUESTION SECTION:
;example.com.			IN	A

;; ANSWER SECTION:
example.com.		300	IN	A	172.66.147.243
example.com.		300	IN	A	104.20.23.154

;; Query time: 4 msec
;; SERVER: 2606:4700:58::a29f:2ce4#53(2606:4700:58::a29f:2ce4)
;; WHEN: Thu Oct 29 00:09:29 UTC 2026
;; MSG SIZE  rcvd: 72

이번에는 flags에 aa가 나와, 권한 있는 네임 서버가 직접 답했다는 것을 확인할 수 있었습니다. 이 서버는 다른 서버를 거쳐 이름을 찾는 재귀 조회를 지원하지 않아 ra가 빠졌고, [WARNING: recursion requested but not available] 줄이 붙었습니다.

(6 servers found)는 네임 서버 이름이 IPv4 주소 셋과 IPv6 주소 셋으로 풀렸다는 뜻입니다. SERVER 줄에는 그중 답을 보낸 IPv6 주소가 나왔습니다.

-x 뒤에 IP 주소를 적으면 PTR 레코드를 조회해 그 주소에 연결된 이름을 찾습니다.

dig -x 8.8.8.8 +noall +answer
8.8.8.8.in-addr.arpa.	300	IN	PTR	dns.google.

dig는 8.8.8.8을 거꾸로 적고 in-addr.arpa를 붙인 이름을 조회했고, 그 PTR 값 dns.google.이 8.8.8.8의 이름이었습니다.

4️⃣ dig +trace 위임 경로

  • ↪️ 루트 네임 서버에서 example.com 네임 서버까지

+trace를 붙이면 dig가 루트 네임 서버부터 차례로 물어, 이름이 어느 서버로 넘겨졌는지 단계마다 출력합니다. 공식 매뉴얼 기준으로 +trace는 DNSSEC 서명 줄도 함께 요청하므로, 위임 경로만 보려고 +nodnssec를 같이 붙였습니다.

dig +trace +nodnssec example.com
; <<>> DiG 9.16.20-RH <<>> +trace +nodnssec example.com
;; global options: +cmd
.			86333	IN	NS	j.root-servers.net.
.			86333	IN	NS	g.root-servers.net.
.			86333	IN	NS	b.root-servers.net.
.			86333	IN	NS	e.root-servers.net.
.			86333	IN	NS	k.root-servers.net.
.			86333	IN	NS	f.root-servers.net.
.			86333	IN	NS	l.root-servers.net.
.			86333	IN	NS	m.root-servers.net.
.			86333	IN	NS	h.root-servers.net.
.			86333	IN	NS	c.root-servers.net.
.			86333	IN	NS	d.root-servers.net.
.			86333	IN	NS	a.root-servers.net.
.			86333	IN	NS	i.root-servers.net.
;; Received 239 bytes from 192.0.2.53#53(192.0.2.53) in 1 ms

com.			172800	IN	NS	a.gtld-servers.net.
com.			172800	IN	NS	b.gtld-servers.net.
com.			172800	IN	NS	c.gtld-servers.net.
com.			172800	IN	NS	d.gtld-servers.net.
com.			172800	IN	NS	e.gtld-servers.net.
com.			172800	IN	NS	f.gtld-servers.net.
com.			172800	IN	NS	g.gtld-servers.net.
com.			172800	IN	NS	h.gtld-servers.net.
com.			172800	IN	NS	i.gtld-servers.net.
com.			172800	IN	NS	j.gtld-servers.net.
com.			172800	IN	NS	k.gtld-servers.net.
com.			172800	IN	NS	l.gtld-servers.net.
com.			172800	IN	NS	m.gtld-servers.net.
;; Received 836 bytes from 2001:7fd::1#53(k.root-servers.net) in 30 ms

example.com.		172800	IN	NS	hera.ns.cloudflare.com.
example.com.		172800	IN	NS	elliott.ns.cloudflare.com.
;; Received 359 bytes from 2001:503:d414::30#53(f.gtld-servers.net) in 66 ms

example.com.		300	IN	A	104.20.23.154
example.com.		300	IN	A	172.66.147.243
;; Received 72 bytes from 108.162.195.228#53(elliott.ns.cloudflare.com) in 3 ms

단계마다 마지막 [Received … from] 줄에 그 응답을 보낸 서버가 나옵니다. 네 단계에서 물은 서버와 받은 것은 아래와 같습니다.

단계물은 서버받은 것
1서버에 설정된 DNS 서버(192.0.2.53)루트(.) 네임 서버 13개
2k.root-servers.net.com 네임 서버 13개(gtld-servers.net)
3f.gtld-servers.netexample.com 네임 서버 2개
4elliott.ns.cloudflare.comexample.com의 A 레코드 2개

+trace 출력은 등기 우편의 배송 조회 기록과 같습니다.

마지막 단계의 A 레코드는 example.com의 네임 서버가 직접 보낸 값이라 캐시를 거치지 않은 지금 값입니다. 네임 서버를 바꾼 직후에는 3단계에서 .com 서버가 새 네임 서버를 응답하는지부터 확인합니다.

5️⃣ dig 응답 오류와 옵션

  • ↪️ NXDOMAIN, SERVFAIL, connection timed out

🔲 응답 오류

없는 이름을 조회하면 status가 NXDOMAIN으로 나옵니다. .invalid는 실제로 쓰지 않도록 예약된 최상위 도메인이라 이 응답을 확인하는 데 사용했습니다.

dig example.invalid
; <<>> DiG 9.16.20-RH <<>> example.invalid
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NXDOMAIN, id: 23779
;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;example.invalid.		IN	A

;; AUTHORITY SECTION:
invalid.		10800	IN	SOA	localhost. nobody.invalid. 1 3600 1200 604800 10800

;; Query time: 1 msec
;; SERVER: 192.0.2.53#53(192.0.2.53)
;; WHEN: Thu Oct 29 00:09:33 UTC 2026
;; MSG SIZE  rcvd: 96

ANSWER는 0이었고, AUTHORITY 구역에는 그 영역의 SOA 레코드가 들어 있었습니다. SOA의 마지막 숫자 10800은 이 응답을 캐시에 둘 수 있는 시간(초)입니다.

no-such-host.example.com은 NXDOMAIN 대신 status가 NOERROR, ANSWER가 0으로 끝났습니다. 오류 코드 없이 레코드만 비어 있는 응답이라, status와 ANSWER 수를 함께 확인합니다.

dig no-such-host.example.com
; <<>> DiG 9.16.20-RH <<>> no-such-host.example.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 31671
;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;no-such-host.example.com.	IN	A

;; AUTHORITY SECTION:
example.com.		1800	IN	SOA	elliott.ns.cloudflare.com. dns.cloudflare.com. 2418004112 10000 2400 604800 1800

;; Query time: 7 msec
;; SERVER: 192.0.2.53#53(192.0.2.53)
;; WHEN: Thu Oct 29 00:09:33 UTC 2026
;; MSG SIZE  rcvd: 115

SERVFAIL은 DNS 서버가 답을 만들지 못했다는 응답 코드입니다(RFC 1035). DNSSEC 검증 실패를 시험하는 공개 도메인 dnssec-failed.org를 8.8.8.8에 묻자, SERVFAIL과 함께 EDE 줄이 나왔습니다.

dig @8.8.8.8 dnssec-failed.org
; <<>> DiG 9.16.20-RH <<>> @8.8.8.8 dnssec-failed.org
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: SERVFAIL, id: 57521
;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 512
; EDE: 9 (DNSKEY Missing): (No DNSKEY matches DS RRs of dnssec-failed.org)
;; QUESTION SECTION:
;dnssec-failed.org.		IN	A

;; Query time: 333 msec
;; SERVER: 8.8.8.8#53(8.8.8.8)
;; WHEN: Thu Oct 29 00:09:41 UTC 2026
;; MSG SIZE  rcvd: 97

EDE는 오류 까닭을 덧붙이는 확장 오류 코드(RFC 8914)입니다. 9 (DNSKEY Missing)은 상위 영역의 DS 레코드와 맞는 DNSKEY를 찾지 못했다는 뜻으로, 8.8.8.8은 서명을 확인할 수 없는 이름에 주소 대신 SERVFAIL을 돌려보냈습니다.

DNS 서버가 응답하지 않으면 status 줄 없이 [connection timed out; no servers could be reached]로 끝납니다. 문서 예시용 주소 192.0.2.1에 [+timeout=2 +tries=1]로 묻자 2초 뒤에 이 줄이 나왔습니다.

dig @192.0.2.1 example.com +timeout=2 +tries=1
; <<>> DiG 9.16.20-RH <<>> @192.0.2.1 example.com +timeout=2 +tries=1
; (1 server found)
;; global options: +cmd
;; connection timed out; no servers could be reached

옵션 없이 같은 주소에 묻자 15초 뒤에 같은 줄이 나왔습니다. 공식 매뉴얼의 기본값이 응답 하나에 5초, 시도 3번이기 때문입니다. Debian 12 서버의 dig 9.18에서는 [communications error to 192.0.2.1#53: timed out] 줄이 먼저 나오고, 마지막 줄은 [no servers could be reached]였습니다.

스크립트에서 종료 코드로 결과를 나눌 때는 NXDOMAIN도 0이라는 점을 고려합니다. example.invalid를 +short로 조회한 뒤 종료 코드를 출력하자 빈 결과와 함께 0이 나왔고, 응답이 없던 192.0.2.1 조회는 9였습니다.

dig +short example.invalid; echo $?
0

응답 오류마다 출력에서 확인할 줄과 다음에 확인할 것은 아래와 같습니다.

출력뜻다음에 확인할 것
status: NXDOMAIN그 이름이 없음도메인 철자와 등록 상태, +trace로 위임 경로
status: NOERROR · ANSWER: 0그 종류의 레코드가 응답에 없음레코드 종류와 네임 서버의 레코드 설정
status: SERVFAILDNS 서버가 답을 만들지 못함EDE 줄, 다른 DNS 서버(@8.8.8.8 · @1.1.1.1)의 응답
connection timed outDNS 서버가 응답하지 않음DNS 서버 주소와 53번 포트를 막는 방화벽

🔲 dig 명령어 옵션

📌 주요 옵션: 이 글에서 실행한 결과

옵션하는 일이 글에서 본 결과
@서버서버에 설정된 DNS 서버 대신 지정한 서버에 물음@8.8.8.8에 SERVER 줄이 8.8.8.8로 바뀌고 flags에 ad가 더해짐, 권한 있는 네임 서버에 묻자 aa
종류이름 뒤에 적은 레코드 종류만 조회example.com MX에 [0 .] 한 줄, 소문자 mx도 같은 결과
-x 주소IP 주소의 PTR 레코드를 조회-x 8.8.8.8에 dns.google.
-v버전을 출력AlmaLinux 9 서버는 9.16, Debian 12 서버는 9.18
-r홈 폴더의 .digrc를 읽지 않음.digrc에 +short를 넣어도 -r을 붙이자 레코드 줄이 그대로 나옴
+short레코드 값만 출력A는 IP 주소 둘, google.com MX는 10 smtp.google.com.
+noall +answer출력 구역을 모두 끄고 ANSWER 구역만 다시 켬example.com NS에 네임 서버 줄 둘만 남음
+multilineSOA 같은 긴 레코드를 여러 줄로 나눠 주석을 붙임serial, refresh 같은 이름과 시간이 숫자마다 주석으로 붙음
+stats조회 시간과 응답한 서버 줄을 함께 출력Debian 12 서버의 dig 9.18에서 SERVER 줄 끝에 (UDP)
+trace루트 네임 서버부터 차례로 물어 위임 경로를 출력네 단계마다 마지막 [Received … from] 줄에 응답한 서버가 나옴
+nodnssecDNSSEC 서명 레코드를 요청하지 않음+trace와 함께 붙여 위임 경로만 남김
+timeout=초응답 하나를 기다리는 시간, 기본 5초192.0.2.1에 +timeout=2 +tries=1로 묻자 2초 뒤 [connection timed out], 옵션 없이는 15초
+tries=횟수질의를 보내는 횟수, 기본 3번+timeout=2와 함께 1로 두자 한 번만 묻고 2초 뒤 끝남
+tcp질의를 UDP 대신 TCP로 보냄Debian 12 서버의 dig 9.18에서 SERVER 줄 끝이 (UDP)에서 (TCP)로 바뀌고 레코드는 같음

📎 그 밖의 옵션: 공식 매뉴얼 기준

옵션하는 일
-4IPv4로만 질의
-6IPv6로만 질의
-t 종류조회할 레코드 종류를 지정
-q 이름조회할 이름을 지정, 다른 인자와 헷갈리지 않게 할 때
-p 포트53번 대신 지정한 포트로 질의
-b 주소질의를 보내는 출발 IP 주소를 지정
-f 파일파일에 줄마다 적은 조회를 차례로 실행
+norecurse재귀 조회 요청(RD)을 끄고 질의
+dnssecDNSSEC 레코드를 함께 요청
+nssearch권한 있는 네임 서버를 찾아 서버마다 가진 SOA 레코드를 출력
+nocmd맨 앞의 버전과 옵션 설명 줄을 빼고 출력
+nocomments응답 헤더와 구역 이름 같은 설명 줄을 빼고 출력
+ttlunitsTTL을 s, m, h, d, w 단위로 출력
+retry=횟수첫 질의를 빼고 다시 보낼 횟수, 기본 2

🔲 dig 명령어 시뮬레이터

아래 시뮬레이터에서 레코드 종류와 DNS 서버, 출력 옵션을 바꿔 가며 dig를 직접 입력해 볼 수 있습니다.

dig 명령어 시뮬레이터dig 9.16
[root@server work]#
브라우저 안에서만 동작하며, 응답은 실제로 조회한 값을 담은 가상 DNS 에서 나오고 ↑↓ 로 앞에서 쓴 명령을 다시 불러옵니다.

🔢 FAQ & 추천 콘텐츠

확인한 두 서버에서 dig는 AlmaLinux 9의 bind-utils 패키지와 Debian 12의 bind9-dnsutils 패키지에 들어 있었습니다. 그래서 RHEL 계열은 [sudo dnf install bind-utils], Debian 계열은 [sudo apt install bind9-dnsutils]로 설치합니다. 두 패키지 모두 nslookup도 함께 설치합니다.

공식 매뉴얼 기준으로 dig는 홈 폴더의 .digrc 파일에 적힌 옵션을 명령줄 인자보다 먼저 읽어 적용합니다. .digrc에 +short 한 줄을 넣고 [dig example.com]을 실행하자 IP 주소만 나왔고, -r을 붙이자 .digrc를 읽지 않아 레코드 줄이 그대로 나왔습니다.

+tcp를 붙이면 질의를 TCP로 보냅니다. Debian 12 서버의 dig 9.18에서 +tcp를 붙이자 SERVER 줄 끝이 (UDP)에서 (TCP)로 바뀌었고, 받은 레코드는 같았습니다.

ℹ️ 제휴 안내
본 사이트의 콘텐츠에는 제휴 링크가 포함되어 있습니다. 방문자가 이 링크를 통해 상품 또는 서비스를 구매하면 본 사이트는 판매처로부터 수수료를 지급받습니다. 이 과정에서 구매자가 지불하는 금액(이벤트 할인 시 금액이 내려갑니다↓)은 오르지 않습니다. 게시된 가격·할인·재고 정보는 작성 시점 기준이며 실제와 다를 수 있으므로, 구매 전 판매처에서 최종 확인하시기 바랍니다. 상품 선정과 평가는 자체 기준에 따라 작성되며, 수수료 지급 여부가 소개 순서나 평가 내용에 영향을 주지 않습니다.

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다

인간임을 증명하세요: 4   +   6   =