Ich muss alle ausgehenden A
Aufzeichnungen auf einem RedHat-PC aufzeichnen. Ich habe versucht mit tcpdump
:
tcpdumpdns=OUTPUT-FILENAME-HERE
nohup tcpdump -K dst port 53 -w $tcpdumpdns > /dev/null 2>&1 &
Es erstellt eine Ausgabedatei wie folgt:
19:26:12.185392 IP 172.16.0.6.57977 > google-public-dns-a.google.com.domain: 51198+ A? yahoo.com. (27)
Also muss ich das verarbeiten, um Folgendes zu erhalten yahoo.com
:
echo $tcpdumpdns | awk '/ A\? / {u = NF - 1; print $u}' | sed 's/^www.//g; s/.$//g' | sort -u
Gibt es eine bessere Lösung, um alle ausgehenden A
Datensatzanforderungen zu erfassen?
PS: Sammeln von DNS-A-Einträgen ist nur erforderlich, um eine aktuelle Liste der Websites zu haben, die über HTTPS erreichbar sind. So kann ich XML-Dateien für das HTTPSEverywhere Firefox-Add-on generieren. Das ist also nur ein Teil eines Skripts.
Antworten:
Verwenden Sie Wireshark:
quelle
tshark: "A" cannot be found among the possible values for dns.qry.type.
tshark -f "udp port 53" -Y "dns.qry.type == 1 and dns.flags.response == 0"
Wenn Sie kein Wireshark installiert haben
sollte für Sie arbeiten. Da Sie die Ausgabe auf den vorletzten Wert beschränken wollten, analysierte ich Ihre Protokolldatei mit:
Wenn du es live haben willst:
sollte es tun, (hier sind sed und awk austauschbar; und ich würde awk auswählen.)
quelle
grep -E 'A\?' $tcpdumpdns |sed 's/^.*A? //;s/ .*//'|sort -u
ist weniger zu tippen