nslookup
지정한 DNS 서버에 질의하여 도메인 이름을 IP 주소로 변환합니다. A, NS, PTR, MX, CNAME, TXT 유형의 DNS 레코드를 조회할 수 있으며, 응답 결과를 출력 필드로 할당합니다.
명령어 속성
| 항목 | 설명 |
|---|---|
| 명령어 유형 | 가공 쿼리 |
| 필요 권한 | 없음 |
| 라이선스 사용량 | 해당 없음 |
| 병렬 실행 | 지원 |
| 분산 실행 | 수집 노드에서 실행 (mapper) |
문법
옵션
ns=IP- DNS 질의를 전송할 네임서버의 IP 주소
type={A|NS|PTR|MX|CNAME|TXT}- DNS 쿼리 유형 (기본값:
A)
A: 호스트의 IPv4 주소NS: 권한 있는 네임서버PTR: 역방향 DNS 조회MX: 메일 교환 서버CNAME: 정규 이름(별칭)TXT: 텍스트 레코드
timeout=INT- DNS 응답 대기 시간 (초 단위). 1 이상 60 이하의 정수를 지정할 수 있습니다. (기본값:
5) cache=INT- DNS 응답 캐시의 최대 크기 (바이트 단위). 1 이상 10485760 이하의 정수를 지정할 수 있습니다. (기본값:
1048576)
대상
FIELD- 도메인 이름이 저장된 입력 필드
output OUTFIELD [as ALIAS], ...- 출력할 DNS 응답 필드 목록. 쉼표(
,)로 구분하여 여러 필드를 지정할 수 있습니다.as키워드로 출력 필드의 별칭을 지정할 수 있습니다. 사용 가능한 출력 필드는 다음과 같습니다.
ip: 첫 번째 A 레코드의 IP 주소status: DNS 응답 상태 코드flags: DNS 응답 플래그 문자열answers: 응답(Answer) 섹션의 리소스 레코드 목록authorities: 권한(Authority) 섹션의 리소스 레코드 목록additionals: 추가(Additional) 섹션의 리소스 레코드 목록
입력 필드
| 필드 | 타입 | 필수 여부 | 설명 |
|---|---|---|---|
| FIELD | 문자열 | 필수 | 조회할 도메인 이름. 값이 문자열이 아니거나 빈 문자열이면 _error 필드에 INVALID_DOMAIN을 할당합니다. |
출력 필드
| 필드 | 타입 | 설명 |
|---|---|---|
| ip | 문자열 | 첫 번째 A 레코드의 IP 주소. A 레코드가 없으면 할당하지 않습니다. |
| status | 문자열 | DNS 응답 상태 코드. NO_ERROR, FORMAT_ERROR, SERVER_FAILURE, NAME_ERROR, NOT_IMPLEMENTED, REFUSED 중 하나입니다. |
| flags | 문자열 | DNS 응답 플래그 문자열 (예: standard query response (RD RA)) |
| answers | 배열 | 응답(Answer) 섹션의 리소스 레코드를 문자열로 변환한 목록 |
| authorities | 배열 | 권한(Authority) 섹션의 리소스 레코드를 문자열로 변환한 목록 |
| additionals | 배열 | 추가(Additional) 섹션의 리소스 레코드를 문자열로 변환한 목록 |
| _error | 문자열 | 오류 발생 시 오류 메시지. 입력값이 유효하지 않으면 INVALID_DOMAIN, DNS 응답 시간 초과 시 TIMEOUT을 할당합니다. |
오류 코드
파싱 오류
| 오류 코드 | 메시지 | 설명 |
|---|---|---|
| 22700 | nslookup 명령에서 output 구문이 누락되었습니다. | output 키워드가 지정되지 않은 경우 |
| 22701 | nslookup 필드 문법이 유효하지 않습니다. `필드 as 별칭` 문법을 사용하십시오. | 필드 지정 문법이 잘못된 경우 |
| 22702 | nslookup 명령의 [as] 자리에 as가 와야 합니다. | 별칭 지정 시 as 키워드가 누락된 경우 |
| 22703 | nslookup 명령의 ns 옵션은 IP 주소만 사용할 수 있습니다. | ns 옵션에 유효하지 않은 IP 주소를 지정한 경우 |
| 22704 | nslookup 명령의 출력 정보는 ip, status, flags, answers, additionals, authorities 만 허용됩니다. | output 절에 허용되지 않은 필드 이름을 지정한 경우 |
| 22705 | nslookup 명령의 ns 옵션을 설정해주세요. | ns 옵션이 지정되지 않은 경우 |
| 22706 | nslookup 명령의 timeout 옵션은 60 이하의 자연수로 지정해야 합니다. | timeout 옵션에 0 이하이거나 60을 초과하는 값을 지정한 경우 |
| 22707 | nslookup 명령의 cache 옵션은 10485760 이하의 자연수로 지정해야 합니다. | cache 옵션에 0 이하이거나 10485760을 초과하는 값을 지정한 경우 |
| 22708 | 지원되지 않는 nslookup 명령의 type 옵션입니다. A, NS, PTR, MX, CNAME, TXT 중 하나를 지정하세요. | type 옵션에 지원하지 않는 DNS 쿼리 유형을 지정한 경우 |
런타임 오류
해당 사항 없음
설명
nslookup 명령어는 입력 레코드의 지정한 필드에서 도메인 이름을 읽어 DNS 서버에 질의하고, 응답 결과를 출력 필드에 할당합니다. DNS 질의 결과는 내부 캐시에 저장되어 동일한 도메인에 대한 반복 질의를 방지합니다.
입력 필드 값이 문자열이 아니거나 빈 문자열이면 DNS 질의를 수행하지 않고 _error 필드에 INVALID_DOMAIN을 할당합니다. DNS 서버가 지정한 시간 내에 응답하지 않으면 _error 필드에 TIMEOUT을 할당합니다.
output 절에 지정한 필드만 출력 레코드에 할당됩니다. ip 필드는 첫 번째 A 레코드의 IP 주소만 반환하므로, 여러 A 레코드가 존재하는 경우 answers 필드를 사용하여 전체 응답 레코드를 확인할 수 있습니다.
사용 예
이 사용 예에서 조회하는 WEB_APACHE_SAMPLE 테이블을 준비하려면 쿼리 실습용 데이터를 참고하세요.
-
출발지 IP를 도메인 이름으로 역방향 조회
table limit=10 WEB_APACHE_SAMPLE | eval ptr = replace(src_ip, "^(\\d+)\\.(\\d+)\\.(\\d+)\\.(\\d+)$", "$4.$3.$2.$1.in-addr.arpa") | nslookup ns=198.51.100.53 type=PTR ptr output answers as ptr_answers | fields src_ip, ptr_answerssrc_ip필드의 IP 주소를 역방향 DNS 조회 형식(in-addr.arpa)으로 변환하여 PTR 레코드를 조회합니다. -
출력 필드에 별칭 지정
table limit=10 WEB_APACHE_SAMPLE | eval ptr = replace(src_ip, "^(\\d+)\\.(\\d+)\\.(\\d+)\\.(\\d+)$", "$4.$3.$2.$1.in-addr.arpa") | nslookup ns=198.51.100.53 type=PTR ptr output answers as hostname, status as dns_status | fields src_ip, hostname, dns_statusoutput절의as키워드를 사용하여 출력 필드 이름을 변경합니다. -
타임아웃과 캐시 크기 지정
table limit=10 WEB_APACHE_SAMPLE | eval ptr = replace(src_ip, "^(\\d+)\\.(\\d+)\\.(\\d+)\\.(\\d+)$", "$4.$3.$2.$1.in-addr.arpa") | nslookup ns=198.51.100.53 type=PTR timeout=10 cache=2097152 ptr output answers, status | fields src_ip, answers, status타임아웃을 10초, 캐시 크기를 2MB로 설정하여 역방향 DNS 조회를 수행합니다.
호환성
nslookup 명령어는 소나 4.0 이전 버전부터 제공되었습니다.