Como comparo o desempenho de pesquisas de DNS externo?

14

Estou considerando os servidores DNS públicos do Google como o DNS externo da minha rede. Atualmente, estou usando os servidores DNS do meu ISP. Eu também considerei o OpenDNS no passado, mas finalmente decidi não pular.

Eu gostaria de poder avaliar com que rapidez os respectivos servidores podem atender às nossas solicitações de DNS. Não vejo nada na pesquisa que possa ajudar.

Como posso testar os tempos de ida e volta para o DNS fornecido externamente?

Mike L
fonte

Respostas:

5

Você pode usar um programa de captura de pacotes (filtragem para DNS) para rastrear os tempos de consulta / resposta do DNS. Você pode executar isso na sua máquina ou no servidor DNS interno (se você tiver um). Tudo mais ou menos igual, isso deve lhe dar uma idéia geral da rapidez com que o DNS do Google é comparado ao seu ISP.

joeqwerty
fonte
5
O dissector DNS do Wireshark faz o rastreamento de solicitações / respostas. O filtro de exibição "dns.time" pode ser usado para encontrar o tempo de resposta.
Gerald Combs
40

Você pode simplesmente digegrep

$ 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
fonte
13

Use o Benchmark de velocidade de nome de domínio da GRC .

nrgyz
fonte
Eu verifiquei esta ferramenta ... ela é demais!
Mike L
2
Tentei o Benchmark da GRC depois de executar o namebench do Google. O Google disse que seu próprio 8.8.4.4 foi 21,1% mais rápido que o dos outros. No entanto, a lista personalizada do GRC com o acréscimo de 8.8.4.4 mostrou que o google era um dos mais lentos e marginalmente mais rápidos do que o meu DNS atual fornecido pela Comcast. Os mais rápidos eram da Level 3 Communications. Confio no DNS Benchmark da GRC sobre o Google agora. E os GRCs são gravados em assembly e são executados a partir de um único arquivo 184k. Impressionante!
Brian Boatright
Desconfie dos GRCs se você não estiver nos EUA. Parece não testar muitos servidores alojados fora dos EUA.
22417 NickG #
3

Também dei uma olhada no namebench - o utilitário de referência de DNS de código aberto do Google. Foi muito abrangente.

Mike L
fonte
O link expira em :-(
Pol Hallen
A versão do namebench vinculada à (v1.3) é bem antiga agora. Há um (v2) repositório atualizados no GitHub: github.com/google/namebench que suporta DNSSEC, CDN análise comparativa etc.
Patrick
2

O plug-in Firebug para Firefox e IE possui uma guia "net" que fornece uma representação gráfica do tempo de carregamento para cada solicitação de arquivo.

Ele divide-o em atividade, incluindo pesquisas de DNS, mostradas em verde.

Nexo
fonte
2

O simples script shell qtest.sh pode ser usado para isso:

% 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

Aqui, 172.19.1.1um resolvedor local, é mais rápido, seguido pelo resolvedor do ISP e depois pelo OpenDNS.

bortzmeyer
fonte
2

Escrevi um pequeno script interessante para avaliar a conexão com 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
fonte
1

Você pode usar o ping para descobrir quanto tempo levaria para um pacote ir e voltar entre o servidor e os servidores DNS. Como regra geral: nunca mude o que funciona.

Uma desvantagem do OpenDNS é que os domínios que não existem podem responder com um registro A apontando para a página de pesquisa do OpenDNS, pois tendem a fazer isso. Atualmente, o Google não faz isso, mas seria tolice supor que eles estão simplesmente fornecendo aos resolvedores de DNS nada a ganhar com isso.

gekkz
fonte
Se eu pudesse dividir uma resposta, eu teria. Gostei do teste de ping por sua simplicidade. Eu poderia deixá-lo correr contra todos eles, depois olhar para as médias. Aqui, eu queria examinar os tempos de resposta da própria consulta, além da viagem de ida e volta para os pacotes, então optei pela captura de pacotes. Mais trabalho para configurar e testar, mas mais exigente para o verdadeiro desempenho do servidor externo. Obrigado!
Mike L
1
Má idéia para usar ping. Nem todos os servidores respondem ao ping e não há garantia de que o tempo de resposta seja o mesmo no DNS e no ICMP.
Bortzmeyer 17/12/2009
0

dnsevaldo dnsdiag funciona como um encanto no windows linux e mac. (muito melhor que o namebench desatualizado) download no github

Para usá-lo, primeiro escreva um arquivo de texto que cada DNS que você deseja testar contenha uma linha com seu endereço IP mylist.txt:

8.8.8.8
192.168.178.1

e depois corra

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

Embora isso não inspecione o tamanho do cache dos servidores, é uma abordagem muito mais fácil e rápida, e espero que se correlacione bem com o desempenho do mundo real.

jan-glx
fonte