Necesito registrar todos los A
registros salientes en una PC RedHat. Intenté usar tcpdump
:
tcpdumpdns=OUTPUT-FILENAME-HERE
nohup tcpdump -K dst port 53 -w $tcpdumpdns > /dev/null 2>&1 &
Crea un archivo de salida como:
19:26:12.185392 IP 172.16.0.6.57977 > google-public-dns-a.google.com.domain: 51198+ A? yahoo.com. (27)
Entonces necesito procesar eso para obtener yahoo.com
:
echo $tcpdumpdns | awk '/ A\? / {u = NF - 1; print $u}' | sed 's/^www.//g; s/.$//g' | sort -u
¿Existe alguna solución mejor para reunir todas las A
solicitudes de registros salientes ?
ps: la recopilación de registros DNS A solo es necesaria para tener una lista actualizada de sitios web a los que se pueda acceder a través de HTTPS. Entonces puedo generar archivos xml para HTTPSEverywhere Firefox Add-on. Entonces esto es solo una parte de un guión.
Respuestas:
Usa Wireshark:
fuente
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"
Si no tienes cables instalados, entonces
debería funcionar para ti. Como deseaba limitar la salida al penúltimo valor, analizaría su archivo de registro con:
Si lo quieres en vivo, entonces:
debería hacerlo, (aquí sed y awk son intercambiables; y elegiría awk).
fuente
grep -E 'A\?' $tcpdumpdns |sed 's/^.*A? //;s/ .*//'|sort -u
es menos para escribir