Comment comparer les performances des recherches DNS externes?


14

Je considère les serveurs DNS publics de Google comme DNS externe pour mon réseau. Actuellement, j'utilise les serveurs DNS de mon FAI. J'ai également envisagé OpenDNS dans le passé, mais j'ai finalement décidé de ne pas sauter.

J'aimerais pouvoir évaluer la vitesse à laquelle les serveurs respectifs sont en mesure de répondre à nos demandes DNS. Je ne vois rien dans nslookup qui pourrait aider.

Comment puis-je tester les temps d'aller-retour pour les DNS fournis en externe?

Réponses:


5

Vous pouvez utiliser un programme de capture de paquets (filtrage pour DNS) pour suivre les temps de requête / réponse DNS. Vous pouvez l'exécuter sur votre machine ou sur votre serveur DNS interne (si vous en avez un). Toutes choses étant plus ou moins égales, cela devrait vous donner une idée générale de la rapidité avec laquelle le DNS de Google est comparé à votre FAI.


5
Le dissecteur DNS de Wireshark effectue le suivi des demandes / réponses. Le filtre d'affichage "dns.time" peut être utilisé pour trouver le temps de réponse.
Gerald Combs

40

Vous pouvez simplement diget simplementgrep

$ 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

13

J'ai jeté un coup d'œil à cet outil ... ça marche!
Mike L

2
J'ai essayé le Benchmark de GRC après avoir exécuté le nombench de Google. Google a déclaré que son propre 8.8.4.4 était 21,1% plus rapide que les autres. Cependant, la liste personnalisée de GRC avec la version 8.8.4.4 ajoutée a montré que celle de Google était l'une des plus lentes et seulement légèrement plus rapide que mon DNS actuel fourni par Comcast. Les plus rapides provenaient toutes de Level 3 Communications. Je fais confiance au DNS Benchmark de GRC par rapport à Google maintenant. Et GRC est écrit en assembleur et s'exécute à partir d'un seul fichier 184k. Impressionnant!
Brian Boatright

Méfiez-vous des GRC si vous n'êtes pas aux États-Unis. Il ne semble pas tester de nombreux serveurs hébergés non-USA.
NickG

3

J'ai également jeté un œil à namebench - l'utilitaire de référence DNS Open Source de Google. C'était très complet.


lien expire :-(
Pol Hallen

La version de namebench liée à (v1.3) est assez ancienne maintenant. Il existe un référentiel (v2) mis à jour sur GitHub: github.com/google/namebench qui prend en charge DNSSEC, l'analyse comparative CDN, etc.
Patrick


2

Le plugin Firebug pour Firefox et IE a un onglet "net" qui vous donne une représentation graphique du temps de chargement pour chaque demande de fichier.

Il le décompose en activité, y compris les recherches DNS, qui sont affichées en vert.


2

Le script shell simple qtest.sh peut être utilisé pour cela:

% 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

Ici, 172.19.1.1un résolveur local est plus rapide, suivi du résolveur ISP, puis d'OpenDNS.


2

J'ai écrit un petit script sympa pour évaluer la connexion aux serveurs 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

1

Vous pouvez utiliser ping pour déterminer combien de temps il faudrait pour qu'un paquet se déplace d'avant en arrière entre votre serveur et les serveurs DNS. En règle générale: ne changez jamais ce qui fonctionne.

Un inconvénient d'OpenDNS est que les domaines qui n'existent pas peuvent répondre avec un enregistrement A pointant vers la page de recherche d'OpenDNS, car ils ont tendance à le faire. Google ne le fait pas actuellement, mais il serait stupide de supposer qu'ils ne fournissent tout simplement rien aux résolveurs DNS.


Si j'avais pu partager une réponse, je l'aurais fait. J'ai aimé le test ping pour sa simplicité. Je pourrais le laisser courir contre chacun d'eux, puis regarder les moyennes. Ici, je voulais regarder les temps de réponse pour la requête elle-même en plus de l'aller-retour pour les paquets, j'ai donc opté pour la capture de paquets. Plus de travail pour le configurer et le tester, mais plus exigeant pour les performances réelles du serveur externe. Merci!
Mike L

1
Mauvaise idée d'utiliser ping. Tous les serveurs ne répondent pas au ping et il n'y a aucune garantie que le temps de réponse sera le même avec DNS et avec ICMP.
bortzmeyer

0

dnsevalde dnsdiag fonctionne comme un charme sur windows linux et mac. (bien mieux que le banc de noms obsolète) télécharger sur github

Pour l'utiliser, écrivez d'abord un fichier texte que chaque DNS que vous souhaitez tester contient une ligne avec son adresse IP mylist.txt:

8.8.8.8
192.168.178.1

puis exécutez

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

Bien que cela n'inspecte pas cette taille de cache des serveurs, c'est une approche beaucoup plus facile et plus rapide et je m'attends à ce qu'elle corresponde bien aux performances du monde réel.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.