모든 DNS 쿼리를 어떻게 기록합니까?

모든 DNS 쿼리를 어떻게 기록합니까?

내 컴퓨터가 수행하는 모든 DNS 쿼리와 컴퓨터가 받는 응답에 대한 로그를 어떻게 생성합니까?

답변1

tcpdump모든 포트 53 UDP 및 TCP 활동을 기록 할 수 있습니다 .

답변2

모든 DNS 요청을 표시 A하고 파일에 저장하려면 다음 명령을 실행하십시오.

script -q -c "sudo tcpdump -l port 53 2>/dev/null | grep --line-buffered ' A? ' | cut -d' ' -f8" | tee dns.log

출력 예:

google.com.
wikipedia.org.

업데이트됨(2023년):변경된 출력 형식 tcpdump; 도메인 이름이 필드 #8 대신 필드 #9에 있습니다.

고정 단일 라인:

script -q -c "sudo tcpdump -l port 53 2>/dev/null | grep --line-buffered ' A? ' | cut -d' ' -f9" | tee dns.log

답변3

가장 쉬운 방법은 Bind를 로컬에 설치하는 것입니다. 대부분의 배포판에서 Bind의 기본 설치는 비자동 캐싱입니다.

logging {}다음과 같은 구성 블록을 추가하기만 하면 됩니다 .바인딩 9 구성 참조127.0.0.1) 그런 다음 또는 ::1DNS 확인자로 사용하도록 시스템을 설정합니다 .

답변4

관심 있는 요청에 대해 DNS를 필터링하는 간단한 방법은 다음 줄을 grep하는 것입니다. grep -A 2그 뒤에 -A가 있고 그 뒤에 2줄이 있습니다. 서버에 DNS 요청이 많은 경우 2에서 4-5로 증가

tcpdump -l port 53 |grep -A 2  redis

두 번째 줄은 DNS -> IP, CNAME,none, other에 대한 답변입니다.

관련 정보