DNS A kaydı istekleri nasıl toplanır?


15

Tüm giden Akayıtları bir RedHat PC'ye kaydetmem gerekiyor . Kullanmayı denedim tcpdump:

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

Aşağıdaki gibi bir çıktı dosyası yapar:

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

Yani bunu elde etmek için işlemek gerekir yahoo.com:

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

Giden tüm Akayıt isteklerini toplamak için daha iyi bir çözüm var mı ?

ps: DNS toplama A HTTPS yoluyla erişilebilen güncel bir web sitesi listesine sahip olmak için gereklidir. Bu yüzden HTTPSEverywhere Firefox Eklentisi için xml dosyaları oluşturabilirim. Yani bu sadece senaryonun bir parçası.


Sağladığınız çözümün sorunu ne?
Michael Mrozek

GUI env'niz var mı, eğer öyleyse wireshark-gtk kullanmak daha kolay bir çözümdür, çünkü oraya çok kolay bir şekilde filtre uygulayabilirsiniz.
Hanan N.20

@ Hanan N .: GUI bir seçenek değil. bunun otomatik olması gerekir.
LanceBaynes

@Michael Mrozek: Umarım hiçbir şey. Ama sordum çünkü alternatif çözümlere açığım.
LanceBaynes

Yanıtlar:


12

Wireshark kullanın:

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

2
Anladımtshark: "A" cannot be found among the possible values for dns.qry.type.
Jack O'Connor

3
@ JackO'Connor sorununu gidermek için, A tipi bir DNS kaydının ondalık değeri 1'dir. Bu nedenle, şu şekilde çalışmalıdır:tshark -f "udp port 53" -Y "dns.qry.type == 1 and dns.flags.response == 0"
Rolinh

13

Eğer takılı wireshark yoksa

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

senin için çalışmalı. Çıktıyı ikinci değerden son değere sınırlamak istediğinizde, günlük dosyanızı şu şekilde ayrıştırırım:

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

Eğer canlı olmasını istiyorsanız:

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

(burada sed ve awk birbirinin yerine kullanılabilir; ve ben awk seçerim.)


grep -E 'A\?' $tcpdumpdns |sed 's/^.*A? //;s/ .*//'|sort -uyazmak için daha az
Alexx Roche
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.