decodedns
이더넷 프레임에서 DNS 메시지를 디코딩하여 질의 도메인, 응답 IP 주소, 상태 코드 등을 추출합니다.
명령어 속성
| 항목 | 설명 |
|---|---|
| 명령어 유형 | 가공 쿼리 |
| 필요 권한 | 없음 |
| 라이선스 사용량 | 해당 없음 |
| 병렬 실행 | 지원 |
| 분산 실행 | 수집 노드에서 실행 (mapper) |
문법
decodedns
입력 필드
| 필드 | 타입 | 필수 여부 | 설명 |
|---|---|---|---|
payload | 바이너리 | 필수 | 이더넷 프레임 데이터. 바이너리 타입이 아닌 경우 입력 레코드를 그대로 출력합니다. |
출력 필드
| 필드 | 타입 | 설명 |
|---|---|---|
txid | 문자열 | DNS 트랜잭션 ID (4자리 16진수 문자열) |
src_ip | IP 주소 | 출발지 IP 주소 |
src_port | 32비트 정수 | 출발지 포트 번호 |
dst_ip | IP 주소 | 목적지 IP 주소 |
dst_port | 32비트 정수 | 목적지 포트 번호 |
direction | 문자열 | 통신 방향. c->s (클라이언트에서 서버) 또는 s->c (서버에서 클라이언트) |
bytes | 32비트 정수 | DNS 메시지 크기 (바이트) |
type | 문자열 | DNS 질의 유형. A, AAAA, CNAME, MX, NS, PTR, SOA, SRV, TXT 등 |
domain | 문자열 | 질의 도메인 이름 |
status | 문자열 | DNS 응답 상태. NO_ERROR, FORMAT_ERROR, SERVER_FAILURE, NAME_ERROR, NOT_IMPLEMENTED, REFUSED |
ip | IP 주소 | 첫 번째 A 레코드의 응답 IP 주소. A 레코드가 없으면 null |
flags | 문자열 | DNS 플래그 문자열 (예: standard query response (RD RA)) |
queries | 배열 | DNS 질의 섹션 레코드 목록. 질의가 2개 이상일 때만 할당 |
answers | 배열 | DNS 응답 섹션 레코드 목록. 응답이 1개 이상일 때만 할당 |
additionals | 배열 | DNS 추가 섹션 레코드 목록. 추가 레코드가 1개 이상일 때만 할당 |
authorities | 배열 | DNS 권한 섹션 레코드 목록. 권한 레코드가 1개 이상일 때만 할당 |
오류 코드
파싱 오류
해당 사항 없음
런타임 오류
해당 사항 없음
설명
decodedns 명령어는 입력 레코드의 payload 필드에서 이더넷 프레임을 읽어 DNS 프로토콜 메시지를 디코딩합니다. payload 필드가 바이너리 타입이 아닌 경우 입력 레코드를 그대로 다음 명령어로 전달합니다.
디코딩된 DNS 메시지에서 출발지/목적지 IP 및 포트, 통신 방향, 질의 유형, 도메인, 응답 상태, 첫 번째 A 레코드의 IP 주소 등을 추출합니다. DNS 질의, 응답, 추가, 권한 섹션의 레코드 목록도 배열로 제공합니다.
queries 필드는 질의 레코드가 2개 이상인 경우에만 할당되며, answers, additionals, authorities 필드는 각각 1개 이상의 레코드가 있을 때만 할당됩니다.
이 명령어는 병렬 실행을 지원하며, 분산 환경에서는 수집 노드에서 실행됩니다.
사용 예
-
PCAP 파일에서 DNS 메시지 디코딩
pcapfile /opt/logpresso/dns-capture.pcap | decodednsPCAP 파일에서 읽은 이더넷 프레임의 DNS 메시지를 디코딩합니다.
-
특정 도메인에 대한 DNS 질의 조회
pcapfile /opt/logpresso/dns-capture.pcap | decodedns | search domain == "*.example.com" | fields txid, src_ip, domain, type, ip, statusDNS 메시지 중
example.com의 하위 도메인에 대한 질의를 필터링하고 주요 필드를 조회합니다. -
DNS 응답 상태별 집계
pcapfile /opt/logpresso/dns-capture.pcap | decodedns | search direction == "s->c" | stats count by status서버에서 클라이언트로 전송된 DNS 응답을 상태 코드별로 집계합니다.
호환성
decodedns 명령어는 소나 4.0 이전 버전부터 제공되었습니다.