Muszę nagrać wszystkie wychodzące A
zapisy na komputerze RedHat. Próbowałem użyć tcpdump
:
tcpdumpdns=OUTPUT-FILENAME-HERE
nohup tcpdump -K dst port 53 -w $tcpdumpdns > /dev/null 2>&1 &
Tworzy plik wyjściowy, taki jak:
19:26:12.185392 IP 172.16.0.6.57977 > google-public-dns-a.google.com.domain: 51198+ A? yahoo.com. (27)
Więc muszę to przetworzyć, aby uzyskać yahoo.com
:
echo $tcpdumpdns | awk '/ A\? / {u = NF - 1; print $u}' | sed 's/^www.//g; s/.$//g' | sort -u
Czy jest jakieś lepsze rozwiązanie, aby zebrać wszystkie wychodzące A
żądania rekordów?
ps: zbieranie DNS Rekordy są potrzebne tylko do posiadania aktualnej listy stron internetowych, które są dostępne za pośrednictwem HTTPS. Mogę więc generować pliki xml dla HTTPS w każdym miejscu dodatku do Firefoksa. To tylko część skryptu.
Odpowiedzi:
Użyj Wireshark:
źródło
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"
Jeśli nie masz zainstalowanego Wireshark, to
powinien pracować dla ciebie. Gdybyś chciał ograniczyć wynik do drugiej do ostatniej wartości, przeanalizowałbym twój plik dziennika z:
Jeśli chcesz na żywo:
powinienem to zrobić (tutaj sed i awk są wymienne; i wybrałbym awk.)
źródło
grep -E 'A\?' $tcpdumpdns |sed 's/^.*A? //;s/ .*//'|sort -u
jest mniej do pisania