매일 업데이트
2022-11-09 08:30 11 min

시스템 관리자 또는 개발자가 알아야 할 4가지 중요한 Dig 명령 예

시스템 관리자를 위한 필수 발굴 명령

시스템 관리자에게는 모든 것이 순조로워 보일 때조차 예상치 못한 문제가 발생할 수 있습니다. 이러한 위기 상황에서 특정 발굴 명령은 매우 유용하게 활용될 수 있습니다. 자세한 내용은 계속해서 확인해 주시기 바랍니다.

시스템 관리자의 업무량은 상당하며, 24시간 대기해야 하는 요구 사항은 그들의 헌신에 대한 감사를 넘어섭니다. 하지만 우리는 그들의 직업적 측면을 논하기 위해 여기 온 것이 아닙니다. 대신, DNS 문제를 해결하는 데 도움이 될 발굴 명령 도구들을 살펴보겠습니다.

발굴(Dig) 명령이란 무엇인가?

Dig 명령어는 Domain Information Groper의 약자로, DNS 서버의 작동 상태를 신속하게 파악할 수 있는 효과적인 방법입니다. 이 명령어를 통해 서버의 IP 주소, 네임서버, 메일 교환 정보, TTL(Time To Live) 값 등을 사람이 읽기 쉬운 형태로 확인할 수 있습니다.

기본 dig 명령어 사용에 앞서, dig 유틸리티가 시스템에 설치되어 있는지 확인해야 합니다. 다음 명령어를 실행하여 확인해 보십시오.

$ dig -v

위 명령어를 실행했을 때, dig 버전 정보가 다음과 같이 표시되어야 합니다.

DiG 9.18.1-1ubuntu1-Ubuntu

만약 위와 유사한 응답을 받지 못했다면, dig 유틸리티를 먼저 설치해야 합니다.

Ubuntu 및 Debian 사용자는 다음 명령어를 사용하십시오:

$ sudo apt-get install dnsutils

CentOS 또는 RHEL 사용자는 다음 명령어를 사용하십시오:

$ sudo yum install bind-utils

설치가 완료되면 `dig -v` 명령어를 다시 실행하여 정상적으로 설치되었는지 확인하십시오. 이제 다음 섹션에서 시스템 관리자에게 유용한 몇 가지 dig 명령어를 살펴보겠습니다.

IP 주소 확인

도메인 이름에 연결된 서버의 IP 주소를 확인하는 가장 간단한 방법 중 하나입니다. `dig koreantech.org.com` 명령어를 사용하여 시작해 보겠습니다.

$ dig koreantech.org.com

; <<>> DiG 9.18.1-1ubuntu1-Ubuntu <<>> koreantech.org.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 38635
;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 65494
;; QUESTION SECTION:
;koreantech.org.com.			IN	A

;; ANSWER SECTION:
koreantech.org.com.		67	IN	A	172.66.43.163
koreantech.org.com.		67	IN	A	172.66.40.93

;; Query time: 4 msec
;; SERVER: 127.0.0.53#53(127.0.0.53) (UDP)
;; WHEN: Wed Nov 09 04:29:58 UTC 2022

가장 먼저 확인해야 할 사항은 응답 섹션 상단의 `NOERROR` 상태입니다. 이는 쿼리가 문제없이 정상적으로 처리되었음을 의미합니다. 이 쿼리에서 얻을 수 있는 가장 중요한 정보는 서버의 IP 주소입니다. 답변 섹션에 기본 서버 IP 주소인 172.66.40.93과 백업 서버 IP 주소인 172.66.43.163이 명시되어 있습니다.

또한, 원본 쿼리 구문은 질문 섹션에 표시됩니다. 마지막 섹션에서는 쿼리에 대한 통계 정보를 제공합니다.

하지만 이 정보들은 모든 경우에 항상 필요한 것은 아닙니다. 다음 명령어를 사용하여 더 간결한 응답을 얻을 수 있습니다.

$ dig koreantech.org.com +noall +answer
koreantech.org.com.		53	IN	A	172.66.43.163
koreantech.org.com.		53	IN	A	172.66.40.93

위 명령어는 `+noall` 옵션을 사용하여 모든 정보를 숨기고, `+answer` 옵션을 사용하여 답변만 표시합니다. 다음 명령어를 사용하여 더욱 짧은 응답을 얻을 수도 있습니다.

$ dig koreantech.org.com +short
172.66.43.163
172.66.40.93

지금까지 DNS A 레코드를 반환하는 기본적인 쿼리를 살펴보았습니다. 이제 몇 가지 다른 예시를 더 살펴보겠습니다.

특정 DNS 레코드 조회

도메인의 권한 있는 DNS 서버인 네임서버는 `ns` 변수를 사용하여 찾을 수 있습니다.

$ dig koreantech.org.com ns +short
olga.ns.cloudflare.com.
todd.ns.cloudflare.com.

마찬가지로, `mx` 변수를 사용하여 우선순위와 함께 메일 서버를 확인할 수 있습니다.

$ dig koreantech.org.com mx +noall +answer
koreantech.org.com.		300	IN	MX	1 aspmx.l.google.com.
koreantech.org.com.		300	IN	MX	10 alt3.aspmx.l.google.com.
koreantech.org.com.		300	IN	MX	10 alt4.aspmx.l.google.com.
koreantech.org.com.		300	IN	MX	5 alt1.aspmx.l.google.com.
koreantech.org.com.		300	IN	MX	5 alt2.aspmx.l.google.com.

`txt`, `aaaa`, `cname` 등과 같은 다른 DNS 레코드 유형을 dig 명령어의 변수로 사용하여 해당하는 DNS 레코드를 가져올 수 있습니다.

DNS 추적

DNS 추적은 루트 네임서버부터 도메인 IP 주소에 이르는 전체 경로를 확인하는 데 사용됩니다.

$ dig koreantech.org.com +trace

; <<>> DiG 9.18.1-1ubuntu1-Ubuntu <<>> koreantech.org.com +trace
;; global options: +cmd
.			322660	IN	NS	a.root-servers.net.
.			322660	IN	NS	b.root-servers.net.
.			322660	IN	NS	c.root-servers.net.
.			322660	IN	NS	d.root-servers.net.
.			322660	IN	NS	e.root-servers.net.
.			322660	IN	NS	f.root-servers.net.
.			322660	IN	NS	g.root-servers.net.
.			322660	IN	NS	h.root-servers.net.
.			322660	IN	NS	i.root-servers.net.
.			322660	IN	NS	j.root-servers.net.
.			322660	IN	NS	k.root-servers.net.
.			322660	IN	NS	l.root-servers.net.
.			322660	IN	NS	m.root-servers.net.
;; Received 811 bytes from 127.0.0.53#53(127.0.0.53) in 16 ms

com.			172800	IN	NS	i.gtld-servers.net.
com.			172800	IN	NS	k.gtld-servers.net.
com.			172800	IN	NS	e.gtld-servers.net.
com.			172800	IN	NS	c.gtld-servers.net.
com.			172800	IN	NS	h.gtld-servers.net.
com.			172800	IN	NS	b.gtld-servers.net.
com.			172800	IN	NS	d.gtld-servers.net.
com.			172800	IN	NS	f.gtld-servers.net.
com.			172800	IN	NS	j.gtld-servers.net.
com.			172800	IN	NS	g.gtld-servers.net.
com.			172800	IN	NS	a.gtld-servers.net.
com.			172800	IN	NS	m.gtld-servers.net.
com.			172800	IN	NS	l.gtld-servers.net.
com.			86400	IN	DS	30909 8 2 E2D3C916F6DEEAC73294E8268FB5885044A833FC5459588F4A9184CF C41A5766
com.			86400	IN	RRSIG	DS 8 1 86400 20221121170000 20221108160000 18733 . ZgW2dKMBP6rqIgQSGN5uzFhNFZuIPUg7JrkXzgE9VKh68LOIuQlFgTTV xt3Sz4ytgru8JWcwCHgiqCTjbaN3WeHcrDVf0ItG0Az/01ofBWfoAu9S 1JFYcOrYkTUidn8R4vROkwzsTrZMirnB/4yrA4MD5thWVBr3IczcnFto DbADuw8Qy/RUEUfcu+LcQ4Ge+OzIP8eE1T6+nbMRqFZBSMFoBO1w0Mmk xNGyEclfFkymQ4CsYxnvYVstljpLqh1OhoAEwY6D+0cSh9dKNQ5LKhgq UXqfJ+zmdcvL+cVvMjfcB0Wj6/hmEkpEp1ISawlTjFUDgiKNZxiow02r JL4tsw==
;; Received 1201 bytes from 192.33.4.12#53(c.root-servers.net) in 148 ms

koreantech.org.com.		172800	IN	NS	olga.ns.cloudflare.com.
koreantech.org.com.		172800	IN	NS	todd.ns.cloudflare.com.
koreantech.org.com.		86400	IN	DS	2371 13 2 CBAA2018F41B29985DAEDE7F127D4F9626ADA609665CEBAB0011903B 7C639254
koreantech.org.com.		86400	IN	RRSIG	DS 8 2 86400 20221112051535 20221105030535 53929 com. sbqDGqvxmEAjS4KRx8LvQAG9IusLgRRm5GPDf+AFkXddGgfJN37vJP1H 4JKMriWtgXZHc3g1ANMNjij+5J1K3GgeNy2w0UYc7xHkmvhsd15pDvi9 +BoiBsjC8ffznyli8sV8XVhm65oKDHJRx5YEtXUVA4p9hegO0NHDccvt ujQKMShBWX3nxs7P4onL13gspVScOoZgzXL3470UfDW7MA==
;; Received 601 bytes from 2001:501:b1f9::30#53(m.gtld-servers.net) in 144 ms

koreantech.org.com.		300	IN	A	172.66.43.163
koreantech.org.com.		300	IN	A	172.66.40.93
koreantech.org.com.		300	IN	RRSIG	A 13 2 300 20221110051242 20221108031242 34505 koreantech.org.com. tKDYd/FHjs/aRHeOQJlsxXDJYtVcHA4G16QRJKlhFyYkZ2TmLKNIc6eM vXfpO91IVArK67KbyW5lIxI5cCxcQg==
;; Received 183 bytes from 172.64.32.137#53(olga.ns.cloudflare.com) in 16 ms

물론 `+short` 또는 `+noall +answer` 옵션을 사용하여 더 간결한 응답을 얻을 수도 있습니다.

역방향 DNS 조회

역방향 DNS 조회는 IP 주소와 연결된 PTR 레코드를 보여줍니다. 이는 DNS A 레코드의 반대 개념으로, IP 주소를 도메인 이름과 연결하는 데 사용됩니다.

도메인 이름에 PTR 레코드가 설정되어 있지 않으면 응답 섹션이 나타나지 않습니다. 역방향 DNS 조회를 수행하는 명령어는 `dig -x IP 주소`입니다.

[email protected]:~$ dig yahoo.com +short
74.6.143.26
74.6.231.20
98.137.11.164
98.137.11.163
74.6.143.25
74.6.231.21
[email protected]:~$ dig -x 74.6.143.26

; <<>> DiG 9.18.1-1ubuntu1-Ubuntu <<>> -x 74.6.143.26
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 32267
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 5, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 65494
;; QUESTION SECTION:
;26.143.6.74.in-addr.arpa.	IN	PTR

;; ANSWER SECTION:
26.143.6.74.in-addr.arpa. 600	IN	PTR	media-router-fp74.prod.media.vip.bf1.yahoo.com.

;; AUTHORITY SECTION:
143.6.74.in-addr.arpa.	172800	IN	NS	ns3.yahoo.com.
143.6.74.in-addr.arpa.	172800	IN	NS	ns4.yahoo.com.
143.6.74.in-addr.arpa.	172800	IN	NS	ns5.yahoo.com.
143.6.74.in-addr.arpa.	172800	IN	NS	ns2.yahoo.com.
143.6.74.in-addr.arpa.	172800	IN	NS	ns1.yahoo.com.

;; Query time: 192 msec
;; SERVER: 127.0.0.53#53(127.0.0.53) (UDP)
;; WHEN: Wed Nov 09 04:17:08 UTC 2022
;; MSG SIZE  rcvd: 203

위 결과에서 볼 수 있듯이, 응답 섹션에 있는 `media-router-fp74.prod.media.vip.bf1.yahoo.com` 도메인 이름은 IP 주소 `74.6.143.26`과 연결되어 있습니다.

이 URL을 방문하면 야후 검색 홈페이지로 이동하는 것을 확인할 수 있습니다. 하지만 모든 웹 호스트에서 이 기능이 작동하는 것은 아닙니다. 때로는 이렇게 긴 URL이 아무런 결과도 보여주지 않을 수도 있습니다.

특정 DNS 서버를 대상으로 쿼리

특정 DNS 서버에 쿼리를 보내고 싶을 때가 있습니다. 이럴 때는 ` @DNS 서버 IP 주소`를 추가하여 특정 DNS 서버를 지정할 수 있습니다. 아래는 예시입니다.

$ dig @1.1.1.1 koreantech.org.com +noall +answer +stats
koreantech.org.com.		300	IN	A	172.66.40.93
koreantech.org.com.		300	IN	A	172.66.43.163
;; Query time: 156 msec
;; SERVER: 1.1.1.1#53(1.1.1.1) (UDP)
;; WHEN: Wed Nov 09 04:18:56 UTC 2022
;; MSG SIZE  rcvd: 74

위 결과의 통계 섹션에서 `Server: 1.1.1.1`이라는 문구를 통해 Cloudflare의 DNS 서버를 사용했다는 것을 확인할 수 있습니다.

마찬가지로, Google의 DNS 서버(8.8.8.8)를 대상으로 쿼리를 보낼 수도 있습니다.

$ dig @8.8.8.8 koreantech.org.com mx +noall +answer +stats
koreantech.org.com.		300	IN	MX	1 aspmx.l.google.com.
koreantech.org.com.		300	IN	MX	10 alt3.aspmx.l.google.com.
koreantech.org.com.		300	IN	MX	10 alt4.aspmx.l.google.com.
koreantech.org.com.		300	IN	MX	5 alt1.aspmx.l.google.com.
koreantech.org.com.		300	IN	MX	5 alt2.aspmx.l.google.com.
;; Query time: 44 msec
;; SERVER: 8.8.8.8#53(8.8.8.8) (UDP)
;; WHEN: Wed Nov 09 04:23:16 UTC 2022
;; MSG SIZE  rcvd: 157

파헤쳐보자 ⛏️

명령어 이름에서 알 수 있듯이, dig 명령어는 DNS 정보를 찾아내고 관련 문제를 식별하는 데 사용됩니다. dig 명령어는 사용하기 쉽고 외우기 쉬워서 업무 효율성을 높여줍니다.

또한 dig 유틸리티를 Mac 및 Windows에 설치하여 모든 운영체제에서 사용할 수 있도록 할 수도 있습니다.

추신: 덧붙여 시스템 관리자의 문제 해결을 위한 모든 것을 제공하는 koreantech.org Sysadmin 라이브러리도 꼭 확인해 보시기를 바랍니다.

저자
Korea

기술 트렌드와 실용적인 팁을 전하는 लेखक입니다.