Saya perlu merekam semua A
catatan keluar pada PC RedHat. Saya mencoba menggunakan tcpdump
:
tcpdumpdns=OUTPUT-FILENAME-HERE
nohup tcpdump -K dst port 53 -w $tcpdumpdns > /dev/null 2>&1 &
Itu membuat file output seperti:
19:26:12.185392 IP 172.16.0.6.57977 > google-public-dns-a.google.com.domain: 51198+ A? yahoo.com. (27)
Jadi saya perlu memprosesnya untuk mendapatkan yahoo.com
:
echo $tcpdumpdns | awk '/ A\? / {u = NF - 1; print $u}' | sed 's/^www.//g; s/.$//g' | sort -u
Apakah ada solusi yang lebih baik untuk mengumpulkan semua A
permintaan catatan keluar ?
ps: mengumpulkan catatan DNS A hanya diperlukan untuk memiliki daftar situs web terbaru yang dapat dijangkau melalui HTTPS. Jadi saya dapat menghasilkan file xml untuk HTTPSEverywhere Add-on Firefox. Jadi ini hanya bagian dari naskah.
Jawaban:
Gunakan Wireshark:
sumber
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"
Jika Anda belum menginstal wireshark
harus bekerja untukmu. Karena Anda ingin membatasi output ke nilai kedua ke terakhir maka saya akan mengurai file log Anda dengan:
Jika Anda menginginkannya hidup maka:
harus melakukannya, (di sini sed dan awk dapat dipertukarkan; dan saya akan memilih awk.)
sumber
grep -E 'A\?' $tcpdumpdns |sed 's/^.*A? //;s/ .*//'|sort -u
kurang untuk mengetik