Мне нужно записать все исходящие A
записи на ПК RedHat. Я пытался с помощью 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: сбор DNS. Записи A необходимы только для того, чтобы иметь актуальный список веб-сайтов, доступных через HTTPS. Поэтому я могу создавать XML-файлы для HTTPSEverywhere Firefox Add-on. Так что это всего лишь часть сценария.
Ответы:
Используйте Wireshark:
источник
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"
Если у вас не установлен Wireshark, то
должен работать на вас. Поскольку вы хотите ограничить вывод значением от второго до последнего, я бы проанализировал ваш файл журнала с помощью:
Если ты хочешь это жить тогда:
должен сделать это (здесь sed и awk взаимозаменяемы; я бы выбрал awk.)
источник
grep -E 'A\?' $tcpdumpdns |sed 's/^.*A? //;s/ .*//'|sort -u
меньше набирать