Linux 에서 dig 및 nslookup 으로 DNS 레코드 쿼리하기

CompTIABeginner
지금 연습하기

소개

이 실습에서는 Linux 환경에서 명령줄을 사용하여 도메인 이름 시스템 (DNS) 레코드를 쿼리하는 기본 사항을 배우게 됩니다. 두 가지 강력하고 일반적인 유틸리티인 dignslookup을 사용하여 다양한 유형의 DNS 조회를 수행합니다. 이 실습 경험은 네트워크 관리자와 시스템 엔지니어가 이름 확인 문제를 해결하고 네트워크 구성을 이해하는 데 필수적입니다.

먼저 /etc/resolv.conf 파일을 검사하여 시스템의 기본 DNS 서버를 식별합니다. 그런 다음 도메인의 IP 주소 (A 레코드) 찾기, IP 주소에서 호스트 이름 찾기 (역방향 조회, PTR 레코드) 및 도메인의 메일 교환 (MX) 레코드 조회와 같은 몇 가지 일반적인 DNS 쿼리를 수행합니다. 마지막으로 시스템의 기본값을 사용하지 않고 특정 공개 DNS 서버로 쿼리를 지시하는 방법을 배우게 됩니다.

이것은 가이드 실험입니다. 학습과 실습을 돕기 위한 단계별 지침을 제공합니다.각 단계를 완료하고 실무 경험을 쌓기 위해 지침을 주의 깊게 따르세요. 과거 데이터에 따르면, 이것은 초급 레벨의 실험이며 완료율은 92%입니다.학습자들로부터 100%의 긍정적인 리뷰율을 받았습니다.

cat 명령으로 시스템의 기본 DNS 서버 식별하기

이 단계에서는 시스템이 사용하도록 구성된 기본 DNS 서버를 식별하는 방법을 배우게 됩니다. DNS(Domain Name System) 서버는 사람이 읽을 수 있는 도메인 이름 (예: www.google.com) 을 기계가 읽을 수 있는 IP 주소 (예: 142.250.186.132) 로 변환하는 역할을 합니다. 시스템이 기본적으로 어떤 DNS 서버에 쿼리하는지 이해하는 것은 이름 확인 문제를 진단하는 첫 번째이자 가장 중요한 단계입니다.

대부분의 Linux 시스템에서 이 구성은 /etc/resolv.conf에 있는 파일에 저장됩니다. 파일 내용을 보기 위해 표준 유틸리티인 cat 명령을 사용할 것입니다. cat은 파일 내용을 연결하고 표시하는 데 사용됩니다.

터미널을 열고 다음 명령을 실행하여 resolv.conf 파일의 내용을 표시합니다.

cat /etc/resolv.conf

다음과 유사한 출력이 표시됩니다. nameserver 지시문 뒤에 나열된 IP 주소는 도메인 이름을 확인하기 위해 시스템이 연락할 DNS 서버입니다.

## Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)
##     DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN
## 127.0.0.53 is the systemd-resolved stub resolver.
## run "systemd-resolve --status" to see details about the actual nameservers.

nameserver 127.0.0.53
options timeout:2 attempts:3 rotate single-request-reopen

출력에서 127.0.0.53이 이 시스템의 기본 DNS 서버임을 알 수 있습니다. 특정 서버를 지정하지 않고 수행하는 모든 DNS 쿼리는 기본적으로 여기에 전송됩니다. 이제 기본 DNS 서버를 찾는 방법을 알았으므로 다음 단계에서 첫 번째 DNS 쿼리를 수행할 준비가 되었습니다.

dignslookup 으로 도메인의 IP 주소 (A 레코드) 찾기

이 단계에서는 도메인 이름을 IP 주소로 확인하는 프로세스인 표준 정방향 DNS 조회를 수행합니다. 이는 DNS 의 가장 일반적인 기능 중 하나입니다. 도메인 이름을 IPv4 주소에 매핑하는 특정 유형의 레코드를 A 레코드라고 합니다. 이 작업을 위해 두 가지 인기 있는 명령줄 도구인 nslookupdig를 사용할 것입니다.

먼저 이러한 도구가 설치되어 있는지 확인해야 합니다. 이 도구들은 Ubuntu 와 같은 Debian 기반 시스템의 dnsutils 패키지에 포함되어 있습니다. 패키지 목록을 업데이트하고 설치해 보겠습니다.

sudo apt-get update
sudo apt-get install -y dnsutils

이제 도구가 준비되었으므로 nslookup("name server lookup"의 약자) 을 사용하여 www.google.com의 IP 주소를 찾아보겠습니다.

nslookup www.google.com

출력에는 쿼리에 응답한 서버 (1 단계에서 사용한 기본 서버) 와 www.google.com과 관련된 IP 주소가 포함된 "비권한 응답 (Non-authoritative answer)"이 표시됩니다.

Server:         127.0.0.53
Address:        127.0.0.53#53

Non-authoritative answer:
Name:   www.google.com
Address: 142.250.189.196
Name:   www.google.com
Address: 2607:f8b0:4005:80d::2004

다음으로 dig (Domain Information Groper) 를 사용하여 동일한 쿼리를 수행해 보겠습니다. dig는 시스템 관리자가 더 자세하고 구조화된 출력을 제공하기 때문에 종종 선호됩니다.

dig www.google.com

dig의 출력을 검토합니다. 이 출력은 여러 섹션으로 나뉩니다. QUESTION SECTION은 요청한 내용 (www.google.com에 대한 A 레코드) 을 보여줍니다. ANSWER SECTION은 IP 주소와 TTL(Time To Live) 값을 포함한 결과를 제공합니다. TTL 값은 확인자가 이 정보를 얼마나 오래 캐시할 수 있는지를 나타냅니다.

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

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

;; ANSWER SECTION:
www.google.com.         7       IN      A       142.251.46.196

;; Query time: 0 msec
;; SERVER: 127.0.0.53#53(127.0.0.53) (UDP)
;; WHEN: Mon Jul 14 14:55:18 CST 2025
;; MSG SIZE  rcvd: 59

두 출력을 비교하면 두 도구 모두 동일한 목표를 달성하지만 dig는 DNS 응답에 대한 훨씬 더 포괄적인 보기를 제공한다는 것을 알 수 있습니다.

dig -x로 IP 주소에서 호스트 이름 찾기 (PTR 레코드)

이 단계에서는 역방향 DNS 조회를 수행합니다. 정방향 조회는 도메인 이름을 IP 주소로 확인하는 반면, 역방향 조회는 그 반대입니다. 즉, 주어진 IP 주소와 관련된 호스트 이름을 찾습니다. 이 프로세스는 PTR(Pointer) 레코드라고 하는 특수 유형의 DNS 레코드에 의존합니다. 역방향 조회는 일반적으로 메일 서버에서 발신자 신원을 확인하고 네트워크 문제 해결에서 트래픽 소스를 식별하는 데 사용됩니다.

이전 단계에서 발견한 www.google.com의 IP 주소 중 하나를 사용하겠습니다. 예시로 142.251.46.196을 사용하겠습니다.

먼저 이미 익숙한 nslookup으로 역방향 조회를 시도해 보겠습니다. IP 주소를 인수로 제공하기만 하면 됩니다.

nslookup 142.251.46.196

출력에는 IP 주소와 관련된 name이 표시되며, 이는 역방향 DNS 에 사용되는 특수 in-addr.arpa 도메인에 저장됩니다.

196.46.251.142.in-addr.arpa     name = nuq04s45-in-f4.1e100.net.

Authoritative answers can be found from:

이제 dig를 사용하여 동일한 역방향 조회를 수행해 보겠습니다. dig 명령은 -x 옵션을 사용하여 역방향 조회를 지정합니다. 이는 쿼리를 올바르게 형식화해 주는 편리한 바로 가기입니다.

dig -x 142.251.46.196

출력을 관찰합니다. ANSWER SECTION에서 IP 주소를 호스트 이름으로 다시 매핑하는 PTR 레코드를 찾을 수 있습니다. QUESTION SECTION에 IP 주소가 역순으로 표시되고 .in-addr.arpa가 추가되는 방식을 확인하세요. 이는 IPv4 역방향 DNS 쿼리의 표준 형식입니다.

; <<>> DiG 9.18.1-1ubuntu1.3-Ubuntu <<>> -x 142.251.46.196
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 46896
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1

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

;; ANSWER SECTION:
196.46.251.142.in-addr.arpa. 10 IN      PTR     nuq04s45-in-f4.1e100.net.

;; Query time: 0 msec
;; SERVER: 127.0.0.53#53(127.0.0.53) (UDP)
;; WHEN: Mon Jul 14 14:56:11 CST 2025
;; MSG SIZE  rcvd: 94

이제 nslookupdig를 모두 성공적으로 사용하여 역방향 DNS 조회를 수행하고 IP 주소를 호스트 이름으로 변환했습니다.

dig 로 도메인의 메일 교환 (MX) 레코드 조회

이 단계에서는 또 다른 중요한 DNS 레코드 유형인 메일 교환 (MX) 레코드를 쿼리하는 방법을 배웁니다. MX 레코드는 이메일 전달에 필수적입니다. 이 레코드는 도메인을 대신하여 이메일 메시지를 수락할 책임이 있는 메일 서버를 지정합니다. user@example.com으로 이메일을 보낼 때, 메일 서버는 먼저 example.comMX 레코드에 대한 DNS 조회를 수행하여 메시지를 어디로 보낼지 알아냅니다.

google.com 도메인의 MX 레코드를 조회하기 위해 계속해서 dig 명령을 사용하겠습니다. 이를 위해 도메인 이름 뒤에 레코드 유형 (MX) 을 지정합니다.

터미널에서 다음 명령을 실행합니다.

dig google.com MX

출력은 이전에 본 것과 유사하지만, ANSWER SECTION에는 이제 A 레코드 대신 MX 레코드가 포함됩니다.

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

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

;; ANSWER SECTION:
google.com.             10      IN      MX      10 smtp.google.com.

;; Query time: 12 msec
;; SERVER: 127.0.0.53#53(127.0.0.53) (UDP)
;; WHEN: Mon Jul 14 14:56:29 CST 2025
;; MSG SIZE  rcvd: 60

ANSWER SECTION에서 메일 서버 호스트 이름 앞의 숫자 (10) 에 주목하세요. 이것이 선호도 또는 우선순위 값입니다. 메일 서버는 먼저 가장 낮은 우선순위 번호를 가진 서버로 이메일을 전달하려고 시도합니다. 해당 서버를 사용할 수 없으면 다음으로 낮은 서버를 시도하는 식입니다. 이는 기본 및 백업 메일 서버 시스템을 제공합니다.

dig @<server>로 특정 공개 DNS 서버 쿼리

이 마지막 단계에서는 시스템의 기본 DNS 서버를 우회하고 특정 공개 DNS 서버로 직접 쿼리를 보내는 방법을 배웁니다. 이는 문제 해결에 매우 유용한 기술입니다. 예를 들어, 기본 서버를 사용하여 도메인을 확인할 수 없는 경우 Google(8.8.8.8) 또는 Cloudflare(1.1.1.1) 와 같은 안정적인 공개 서버에 쿼리하여 문제가 로컬 구성에 있는지 아니면 더 광범위한 문제인지 확인할 수 있습니다.

dig 명령을 사용하면 이 작업을 쉽게 수행할 수 있습니다. @ 기호로 IP 주소를 접두사로 붙여 사용하려는 DNS 서버를 지정할 수 있습니다.

Google 의 공개 DNS 서버인 8.8.8.8에 쿼리하여 www.cloudflare.com의 IP 주소를 찾아보겠습니다.

dig @8.8.8.8 www.cloudflare.com

이제 출력을 주의 깊게 검토합니다. 하단 근처의 SERVER 줄에 주의를 기울이세요. 8.8.8.8#53으로 표시되어야 하며, 이는 쿼리가 시스템의 기본 서버 (1단계127.0.0.53) 가 아닌 Google 의 DNS 서버로 전송되고 응답되었음을 확인합니다.

; <<>> DiG 9.18.1-1ubuntu1.3-Ubuntu <<>> @8.8.8.8 www.cloudflare.com
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 62439
;; flags: qr rd ra ad; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 1

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

;; ANSWER SECTION:
www.cloudflare.com.     300     IN      A       104.16.123.96
www.cloudflare.com.     300     IN      A       104.16.124.96

;; Query time: 16 msec
;; SERVER: 8.8.8.8#53(8.8.8.8) (UDP)
;; WHEN: Mon Jul 14 14:56:45 CST 2025
;; MSG SIZE  rcvd: 79

특정 서버로 DNS 쿼리를 성공적으로 지시했습니다. 이는 네트워크 및 이름 확인 문제를 진단하는 강력한 기술입니다. 이것으로 클라이언트 측 DNS 쿼리에 nslookupdig를 사용하는 실험실을 마칩니다.

요약

이 실험실에서는 Linux 시스템에서 필수적인 DNS 쿼리를 수행하는 방법을 배웠습니다. cat 명령으로 /etc/resolv.conf 파일을 검사하여 시스템의 기본 DNS 서버를 식별하는 것부터 시작했습니다. 이어서 dignslookup 유틸리티를 사용하여 도메인 이름을 해당 IP 주소 (A 레코드) 로 확인하는 표준 정방향 조회 (forward lookup) 를 수행했습니다.

그런 다음 dig -x를 사용하여 IP 주소에서 호스트 이름을 찾는 역방향 조회 (reverse lookup) 와 도메인의 메일 교환 (MX) 레코드를 검색하는 방법을 포함한 고급 쿼리를 탐색했습니다. 마지막으로, dig @<server> 구문을 사용하여 특정 공개 서버로 DNS 쿼리를 지시함으로써 시스템의 기본 설정을 우회하는 방법을 배웠습니다. 이는 문제 해결 및 이름 확인 테스트에 중요한 기술입니다.