nslookup 명령어 사용 방법과 동작 원리 정리(feat. DNS 서버)
name server lookup을 의미하는 'nslookup'은 도메인 네임 시스템(DNS)과 상호작용하여 DNS 정보를 조회하는 명령어로 Windows, Linux, Unix 외 대부분의 운영체제에서 사용할 수 있는 네트워크 진단 도구입니다.
주로 도메인 이름에 대한 IP 주소를 확인하거나, 특정 IP 주소에 대한 도메인 이름을 조회하는 데 사용되는데요.
nslookup 명령어는 한 번의 명령어 실행으로 DNS 정보를 조회하는 '비대화식 모드'와 nslookup 명령어를 단독으로 입력하여 DNS 정보를 실시간으로 확인할 수 있는 '대화식 모드' 두 가지 방법으로 사용할 수 있는데, 아래 내용에서는 비대화식 모드를 중점으로 해당 명령어의 사용 방법에 대해서 살펴보도록 하겠습니다.
* 사용 방법에 이어 nslookup 명령어가 동작하는 원리도 함께 정리되어 있으니 참고하셔도 좋을 것 같습니다.
nslookup 명령어 사용 방법
1. 도메인을 통해 IP를 조회하는 기본 사용 방법
nslookup [DOMAIN]
nslookup tistory.com
도메인을 통해 IP를 조회하는 가장 기본적인 방식입니다.
조회 시 http, https와 같은 프로토콜을 포함하지 않아야 한다는 특징이 있습니다.
nslookup -type=[RECORD_TYPE] [DOMAIN]
nslookup -type=mx tistory.com
해당 방식의 경우 다음과 같이 -type 옵션을 사용하여 원하는 레코드 타입을 조회할 수 있는데요.
몇 가지 레코드 타입에 따른 조회 내용을 살펴보면 아래와 같습니다.
A 레코드(-type=a)
: 도메인 이름을 IPv4 주소로 매핑하는 가장 기본적인 레코드 타입이며, -type 옵션이 생략되었을 때 A 레코드로 조회됩니다.
MX 레코드(-type=mx)
해당 도메인에 대한 메일 교환 서버(Mail eXchanger) 정보를 반환합니다.
NS 레코드(-type=ns)
해당 도메인을 관리하는 DNS 서버 정보를 반환합니다.
TXT 레코드(-type=txt)
도메인에 대한 설명이나 SPF와 같은 도메인 인증 정보를 텍스트로 반환합니다.
CNAME 레코드(-type=cname)
도메인의 별칭을 입력하면 원 도메인 정보를 반환합니다.
2. 특정 DNS 서버를 지정하여 조회하는 방법
nslookup [DOMAIN] [DNS_SERVER]
nslookup tistory.com 8.8.8.8
위 예시와 같이 특정 DNS 서버를 지정하여 도메인의 DNS 정보를 조회할 수도 있는데요.
현재 사용 중인 로컬 DNS 서버에 문제가 있거나, 캐시 등의 이유로 기본 DNS 서버를 사용하지 않으려는 경우 이러한 기능을 사용할 수 있습니다.
(여기서 8.8.8.8은 구글의 공개 DNS 서버입니다.)
nslookup -type=ns tistory.com
nslookup tistory.com ns1.daum.net.
위 기본 DNS 쿼리에서 'Non-authoritative answer(권한 없는 응답)'라는 메시지가 나오는 이유는, 쉽게 요청을 받은 DNS 서버가 도메인 소유자가 등록한 1차 DNS 서버가 아니기 때문인데요.
Non-authoritative answer 메시지의 의미는 '반환되는 정보는 해당 서버에서 직접 제공하는 것이 아니라 다른 서버에서 가져온 정보'라고 볼 수 있습니다.
(도메인 등록 시 등록기관에 1차 DNS 서버 주소를 입력하게 되는데, 해당 서버가 권한 Authoritative을 가진 DNS 서버가 됩니다.)
따라서 예시와 같이 NS 레코드(-type=ns)를 통해 해당 도메인을 관리하는 DNS 서버 정보를 조회하고, 해당 DNS 서버를 지정하여 조회하면 '권한 없는 응답'이라는 메시지가 발생하지 않게 됩니다.
***
Non-authoritative 응답의 경우, 다른 DNS 서버로부터 받은 캐싱된 정보일 수 있으며, 최근에 변경된 사항이 반영되지 않았을 수 있습니다. 때문에 정확한 DNS 정보를 조회해야 하는 경우 권한이 있는 DNS 서버에 질의하는 것이 좋습니다.
DNS 서버의 종류 및 DNS 정보를 조회하는 과정
1. Recursive DNS Server
nslookup 명령어를 기본 형태로 사용했을 때, 가장 먼저 나오는 Server 정보가 바로 Local DNS 서버입니다.
로컬 DNS 서버는 일반적으로 Recursive DNS 서버 역할을 하며, 사용자와 Authoritative DNS 서버 사이의 중재자 역할을 한다고 볼 수 있는데요.
로컬 DNS 서버에서는 사용자의 요청을 받아 Root DNS 서버에서부터 Authoritative DNS 서버까지 요청 경로를 따라가며 최종 응답을 받습니다.
그리고 이때 받은 응답을 일정 기간 동안 저장하여 동일한 요청에 대해 빠르게 응답할 수 있는 Caching DNS Server 역할도 수행합니다.
(주로 Recursive DNS 서버가 Caching 기능을 갖추고 있습니다.)
Google DNS(8.8.8.8), Cloudflare DNS(1.1.1.1)도 재귀 DNS 서버의 역할을 하며, IPS(인터넷 서비스 제공 업체) DNS 서버 역시 재귀 DNS 서버이면서 캐싱 DNS 서버 역할을 수행합니다.
(IPS란 인터넷 서비스 제공 업체를 뜻하며, 쉽게 KT, SK Telecom, LG U+ 등으로 볼 수 있습니다.)
2. Root DNS Server
DNS 시스템의 최상위에 위치한 서버로 DNS 질의를 최초로 처리하는 지점입니다.
Root DNS 서버에서는 요청된 도메인이 어떤 최상위 도메인(TLD)에 속하는지 알려주고, 해당 정보를 기반으로 적절한 TLD DNS 서버로 질의를 전달합니다.
예를 들어 사용자가 tistory.com에 접근하려고 했을 때, '.com'에 대한 TLD DNS 서버를 알려주고, 해당 TLD DNS 서버에서 tistory.com에 대한 정보를 제공하게 되는 것입니다.
Root DNS 서버는 분산형 서버 시스템으로 구성되어 있으며, 전 세계적으로 13개의 루트 DNS 서버가 물리적으로 분산되어 있습니다.
(논리적인 관점에서 13개의 서버이며, 각 서버는 수백 대의 물리 서버로 구성되어 있습니다.)
3. TLD DNS Server
'.com' '.org' '.net' '.kr' 등의 최상위 도메인(TLD, Top Level Domain)을 관리하는 DNS 서버입니다.
루트 DNS 서버에서 '.com'과 같은 최상위 도메인에 대한 TLD 서버로 DNS 질의를 전달하면, 해당 TLD 서버가 도메인의 Authoritative DNS 서버에 대한 정보를 제공합니다.
4. Authoritative DNS Server
특정 도메인에 대한 권한을 가지고 있으며, 최종적인 정보를 제공하는 서버입니다. (공식적인 DNS 데이터를 보유하고 있는 서버)
1차 DNS 서버(Primary DNS Server)는 해당 도메인에 대한 원본 정보를 관리하는 서버로, DNS 레코드의 추가, 삭제, 수정 등을 할 수 있는 권한을 가집니다.
2차 DNS 서버(Secondary DNS Server)는 1차 DNS 서버에서 DNS 정보를 복제하여 가지고 있으며, 트래픽을 분산시키거나 1차 DNS 서버에 장애가 발생한 경우 정보를 대신 제공하는 역할을 합니다.
< 참고 자료 >
https://spidyweb.tistory.com/513
https://yoons-development-space.tistory.com/2
'Programming > Computer Science' 카테고리의 다른 글
(network) 서브넷 마스크 개념 정리 및 문제 풀이 (2) | 2024.09.08 |
---|---|
운영체제의 기초 (CPU 스케줄링, 메모리 관리, 디스크 스케줄링) (0) | 2023.04.10 |