Jak sprawdzić wydajność zewnętrznych wyszukiwań DNS?


14

Rozważam publiczne serwery DNS Google jako zewnętrzny DNS dla mojej sieci. Obecnie używam serwerów DNS od mojego ISP. W przeszłości rozważałem też OpenDNS, ale ostatecznie zdecydowałem się nie skakać.

Chciałbym móc porównać, jak szybko odpowiednie serwery są w stanie obsłużyć nasze żądania DNS. W nslookup nie widzę nic, co by pomogło.

Jak mogę przetestować czasy podróży w obie strony dla DNS dostarczonego zewnętrznie?

Odpowiedzi:


5

Możesz użyć programu do przechwytywania pakietów (filtrowania DNS), aby śledzić czasy zapytania / odpowiedzi DNS. Możesz uruchomić to na swoim komputerze lub na wewnętrznym serwerze DNS (jeśli taki masz). Wszystkie rzeczy są mniej więcej równe, powinno to dać ogólny obraz tego, jak szybko Google DNS jest porównywany z twoim dostawcą usług internetowych.


5
Dysktor DNS Wireshark wykonuje śledzenie żądań / odpowiedzi. Do wyświetlenia czasu odpowiedzi można użyć filtru wyświetlania „dns.time”.
Gerald Combs,

40

Możesz po prostu digigrep

$ 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

Sprawdziłem to narzędzie ... kołysze się!
Mike L,

2
Wypróbowałem test GRC po uruchomieniu Benchmark nazw Google. Google powiedział, że jego własne 8.8.4.4 było o 21,1% szybsze niż inne. Jednak spersonalizowana lista GRC z dodaną wersją 8.8.4.4 pokazała, że ​​Google był jednym z najwolniejszych i tylko nieznacznie szybszych niż mój obecny DNS dostarczony przez Comcast. Najszybsze były wszystkie z poziomu komunikacji 3. Ufam Benchmark DNS GRC w porównaniu z Google. GRC jest napisane w asemblerze i działa z jednego pliku 184k. Imponujący!
Brian Boatright,

Uważaj na GRC, jeśli nie jesteś w USA. Wydaje się, że nie testuje wielu (żadnych?) Serwerów hostowanych poza USA.
NickG



2

Wtyczka Firebug dla Firefoksa i IE ma zakładkę „net”, która daje graficzną reprezentację czasu ładowania dla każdego żądania pliku.

Dzieli to na aktywność, w tym wyszukiwania DNS, które są wyświetlane na zielono.


2

Można do tego użyć prostego skryptu powłoki qtest.sh :

% 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

Tutaj 172.19.1.1lokalny przelicznik jest szybszy, następnie następuje przelicznik ISP, a następnie OpenDNS.


2

Napisałem mały fajny skrypt do oceny połączenia z serwerami 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

Możesz użyć polecenia ping, aby dowiedzieć się, ile czasu zajmie przejście pakietu w obie strony między serwerem a serwerami DNS. Zasadniczo: nigdy nie zmieniaj tego, co działa.

Wadą OpenDNS jest to, że domeny, które nie istnieją, mogą odpowiadać rekordem A wskazującym stronę wyszukiwania OpenDNS, jak to zwykle robią. Google obecnie tego nie robi, ale głupotą byłoby zakładać, że po prostu zapewniają usługi rozpoznawania nazw DNS, nie mając z tego nic do zyskania.


Gdybym mógł podzielić odpowiedź, zrobiłbym to. Test ping podobał mi się ze względu na jego prostotę. Mógłbym pozwolić, aby działał przeciwko wszystkim, a następnie spojrzał na średnie. Tutaj chciałem spojrzeć na czasy odpowiedzi dla samego zapytania oprócz podróży w obie strony dla pakietów, więc zdecydowałem się na przechwytywanie pakietów. Więcej pracy, aby go skonfigurować i przetestować, ale bardziej wymagająca dla prawdziwej wydajności zewnętrznego serwera. Dzięki!
Mike L,

1
Zły pomysł na użycie pinga. Nie wszystkie serwery odpowiadają na ping i nie ma żadnej gwarancji, że czas odpowiedzi będzie taki sam w przypadku DNS i ICMP.
bortzmeyer

0

dnsevalz dnsdiag działa jak urok na Windows Linux i Mac. (znacznie lepsze niż przestarzałe namebench) pobierz na github

Aby go użyć, najpierw napisz plik tekstowy, w którym każdy DNS, który chcesz przetestować, zawiera linię z adresem IP mylist.txt:

8.8.8.8
192.168.178.1

a następnie biegnij

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

Chociaż nie sprawdza to wielkości pamięci podręcznej serwerów, jest to znacznie łatwiejsze i szybsze podejście i oczekuję, że będzie dobrze skorelowane z wydajnością w świecie rzeczywistym.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.