DNS A 레코드 요청을 수집하는 방법은 무엇입니까?

DNS A 레코드 요청을 수집하는 방법은 무엇입니까?

ARedHat PC에 나가는 모든 기록을 기록 해야 합니다 . 나는 다음을 사용하려고합니다 tcpdump:

tcpdumpdns=OUTPUT-FILENAME-HERE
nohup tcpdump -K dst port 53 -w $tcpdumpdns > /dev/null 2>&1 &

다음 출력 파일이 생성됩니다.

19:26:12.185392 IP 172.16.0.6.57977 > google-public-dns-a.google.com.domain: 51198+ A? yahoo.com. (27)

그래서 다음을 얻으려면 처리해야 합니다 yahoo.com.

echo $tcpdumpdns | awk '/ A\? / {u = NF - 1; print $u}' | sed 's/^www.//g; s/.$//g' | sort -u

나가는 모든 로깅 요청을 수집하는 더 나은 솔루션이 있습니까 A?

ps: HTTPS를 통해 액세스할 수 있는 최신 웹사이트 목록을 얻으려면 DNS A 레코드만 수집하면 됩니다. 이렇게 하면 HTTPSEverywhere Firefox 추가 기능에 대한 xml 파일을 생성할 수 있습니다. 이것은 단지 스크립트의 일부일 뿐입니다.

답변1

Wireshark가 설치되어 있지 않은 경우

tcpdumpdns=/tmp/tcpdumps
tcpdump -lvi any "udp port 53" | tee $tcpdumpdns

당신을 위해 일해야합니다. 출력을 마지막에서 두 번째 값으로 제한하려고 하므로 다음 명령을 사용하여 로그 파일을 구문 분석합니다.

grep -E 'A\?' $tcpdumpdns |sed -e 's/^.*A? //' -e 's/ .*//'|sort -u

계속 유지하려면 다음을 수행하십시오.

tcpdump -lvi any "udp port 53" 2>/dev/null|grep -E 'A\?'|awk '{print $(NF-1)}'

그러면 됩니다. (여기서는 sed와 awk를 서로 바꿔 사용할 수 있습니다. 저는 awk를 선택하겠습니다.)

답변2

Wireshark 사용:

tshark -f "udp port 53" -Y "dns.qry.type == A and dns.flags.response == 0"

관련 정보