¿Cómo comparo el rendimiento de las búsquedas de DNS externas?

14

Estoy considerando los servidores DNS públicos de Google como el DNS externo para mi red. Actualmente estoy usando los servidores DNS de mi ISP. También he considerado OpenDNS en el pasado, pero finalmente decidí no saltar.

Me gustaría poder comparar qué tan rápido los servidores respectivos pueden atender nuestras solicitudes de DNS. No veo nada en nslookup que pueda ayudar.

¿Cómo puedo probar los tiempos de ida y vuelta para DNS proporcionado externamente?

Mike L
fuente

Respuestas:

5

Puede usar un programa de captura de paquetes (filtrado para DNS) para rastrear los tiempos de consulta / respuesta de DNS. Puede ejecutar esto en su máquina o en su servidor DNS interno (si tiene uno). Todas las cosas son más o menos iguales, esto debería darle una idea general de qué tan rápido se compara Google DNS con su ISP.

joeqwerty
fuente
55
El disector de DNS de Wireshark realiza un seguimiento de solicitud / respuesta. El filtro de visualización "dns.time" se puede utilizar para encontrar el tiempo de respuesta.
Gerald Combs
40

Puedes simplemente digygrep

$ dig @8.8.8.8   www.rimuhosting.com | grep "Query time:"
;; Query time: 15 msec
$ dig @4.2.2.1   www.rimuhosting.com | grep "Query time:"
;; Query time: 289 msec
Pascal
fuente
13

Utilice el índice de referencia de velocidad de nombres de dominio de GRC .

nrgyz
fuente
Revisé esta herramienta ... ¡es genial!
Mike L
2
Probé el Benchmark de GRC después de ejecutar el banco de nombres de Google. Google dijo que su propio 8.8.4.4 era 21.1% más rápido que el de otros. Sin embargo, la lista personalizada de GRC con 8.8.4.4 agregado mostró que Google era uno de los más lentos y solo un poco más rápido que mi DNS actual proporcionado por Comcast. Los más rápidos fueron todos de Level 3 Communications. Confío en el DNS Benchmark de GRC sobre el de Google ahora. Y GRC está escrito en ensamblado y se ejecuta desde un único archivo de 184k. ¡Impresionante!
Brian Boatright
Tenga cuidado con los GRC si no está en los EE. UU. No parece probar muchos (¿ninguno?) Servidores alojados fuera de los EE. UU.
NickG
3

También eché un vistazo a namebench : la utilidad de referencia de DNS de código abierto de Google. Fue muy completo.

Mike L
fuente
el enlace caduca :-(
Pol Hallen
La versión de namebench vinculada a (v1.3) es bastante antigua ahora. Hay un repositorio actualizado (v2) en GitHub: github.com/google/namebench que admite DNSSEC, benchmarking de CDN, etc.
Patrick
2

Complemento Firebug para Firefox e IE tiene una pestaña "net" que le brinda una representación gráfica del tiempo de carga para cada solicitud de archivo.

Lo divide en actividad, incluidas las búsquedas de DNS, que se muestran en verde.

Nexo
fuente
2

El script de shell simple qtest.sh puede usarse para eso:

% qtest -n3 "A a.gtld-servers.net" 172.19.1.1 62.4.16.70 62.4.17.69 208.67.222.222 208.67.220.220 156.154.70.1 156.154.71.1  
3 172.19.1.1/172.19.1.1
49 62.4.17.69/62.4.17.69
61 208.67.222.222/208.67.222.222

Aquí, 172.19.1.1un resolutor local es más rápido, seguido por el ISP y luego OpenDNS.

bortzmeyer
fuente
2

Escribí un pequeño script agradable para evaluar la conexión a los servidores DNS:

cat >test_dns_list_speed.sh
#!/usr/bin/env ksh
site="www.google.com"
IPfile="$1"
samples=$2

if [ ! -f "$IPfile" ] || ! echo "$samples"|egrep -q "[0-9]+" ; then
  echo "test_dns_list_speed.sh <file-ip-list> <samples>"
  echo "<file-ip-list>       newline separated list of DNS server IP adresses"
  echo "<samples>            how many DNS resolution samples to take"
  echo "PURPOSE:"
  echo "          collect statistics about response times from list of DNS servers"
  exit 1
fi

typeset -i i

while [ $i -lt $samples ]; do
  i=$i+1
  for IP in `cat $IPfile`; do
    time=`dig @$IP $site| awk '/Query time:/ {print " "$4}'`
    IPtrans=`echo $IP|tr \. _`
    eval `echo result$IPtrans=\"\\$result$IPtrans$time\"`
  done
done

for IP in `cat $IPfile`; do
  IPtrans=`echo $IP|tr \. _`
  printf "%-15s " "$IP"; echo -e `eval "echo \\$result$IPtrans"`|tr ' ' "\n"|awk '/.+/ {rt=$1; rec=rec+1; total=total+rt; if (minn>rt || minn==0) {minn=rt}; if (maxx<rt) {maxx=rt}; }
             END{ if (rec==0) {ave=0} else {ave=total/rec}; printf "average %5i     min %5i     max %5i ms %2i responses\n", ave,minn,maxx,rec}'
done

./test_dns_list_speed server_list 20
202.93.142.10   average   949     min   523     max  2229 ms 20 responses
202.93.142.20   average   897     min   515     max  2017 ms 20 responses
208.67.222.222  average  1235     min   530     max  3362 ms 20 responses
8.8.8.8         average   759     min   529     max  1624 ms 20 responses
Peza
fuente
1

Puede usar ping para calcular cuánto tiempo le tomaría a un paquete moverse de un lado a otro entre su servidor y los servidores DNS. Como regla general: nunca cambie lo que funciona.

Una desventaja de OpenDNS es que los dominios que no existen pueden responder con un registro A que apunta a la página de búsqueda de OpenDNS, ya que tienden a hacerlo. Google no lo hace actualmente, pero sería una tontería suponer que simplemente están proporcionando a los solucionadores de DNS nada que ganar.

gekkz
fuente
Si pudiera haber dividido una respuesta, lo habría hecho. Me gustó la prueba de ping por su simplicidad. Podría dejar que corriera contra todos ellos, luego mirar los promedios. Aquí, quería ver los tiempos de respuesta para la consulta en sí, además del viaje de ida y vuelta para los paquetes, así que opté por la captura de paquetes. Más trabajo para configurarlo y probarlo, pero más exigente para el verdadero rendimiento del servidor externo. ¡Gracias!
Mike L
1
Mala idea de usar ping. No todos los servidores responden al ping y no hay garantía de que el tiempo de respuesta sea el mismo con DNS y con ICMP.
bortzmeyer
0

dnsevalfrom dnsdiag funciona de maravilla en Windows Linux y Mac. (mucho mejor que el banco de nombres obsoleto) descargar en github

Para usarlo, primero escriba un archivo de texto que cada DNS que desea probar contiene una línea con su dirección IP mylist.txt:

8.8.8.8
192.168.178.1

y luego correr

./dnseval -f mylist.txt yahoo.com     # latency for cached sites
./dnseval -m -f mylist.txt yahoo.com  # latency for sites not in cache

Si bien esto no inspecciona el tamaño de caché de los servidores, es un enfoque mucho más fácil y rápido y espero que se correlacione bien con el rendimiento del mundo real.

jan-glx
fuente