Tja, was hat Google nicht könnte man fragen. Jenseits der landläufigen Meinung das “zuviel” schlecht sei ist mir das relativ egal – man muss halt selbst wissen welche Daten man wem gibt. Die Möglichkeiten die ein DNS Log eines Nutzers bei einem Werbevermarkter bringen sind aber recht groß. Wer erst mal wissen will worum es denn eigentlich geht den empfehle ich den Artikel dazu auf golem.de. Kurzer Exkurs was ein DNS ist und was ein DNS eigentlich macht. Alle für die das kein Neuland ist bitte diesen grünen Absatz überspringen ;)
 
Also DNS steht für “Domain Name Service” dieser Dienst ist dazu da die eigentlichen Internetadressen in Form von IPs für uns doofe Menschen in leichter zu merkende begriffe zu wandeln, Domains. Somit ist ein Domainname ja nichts anderes als eine Art “Telefonbucheintrag” und die DNS Server sind die Telfonbücher, damit es nicht nur ein Telefonbuch auf der Welt gibt in den die Internetnutzer schauen können gibt es mehrere DNS Server Weltweit, eigentlich kann jeder einen betreiben. Jedoch gibt es einige “Ursprungsserver” welche die Stammeinträge des Internets beinhalten. Naja alles bildlich gesprochen, also quasi gibt es eine Hand voll Ultimativer Telefonbücher von denen alle anderen nur Abschreiben. Um nun beim “nachschalgen” in einem DNS Server nicht immer auf diese Hauptbücher zurück greifen zu müssen betreibt in der Regel jeder Provider einen DNS Caching Server, dieser leitet die eigenen Anfragen weiter und speichert die Ergebnisse. Je mehr Leute diesen Cache nutzen desto aktueller ist dieser. Daher kann man in der Regel davon ausgehen das bei großen Providern dieser Cache ausreichend frequentiert ist um nicht erst “die eigentlichen” Server Fragen zu müssen. Probleme gibt es wenn der Provider ggf. zu langsame Server hat oder eben einen schlechten Cache vorweist. Google will hier eingreifen und einen eigenen DNS Cache anbieten. Wozu das ganze es sind doch nur Millisekunden ? Nun wenn man eine Webseite besucht sind auf dieser etliche Bilder, Banner und Scripte; Diese werden sofern sie auf unterschiedlichen Domains liegen den Browser verlangsamen da dieser für jede Domain eine neue DNS Anfrage starten muss. Vielsurfer können von einer besseren DNS Auflösung schon profitieren. Jedoch hat auch ein Browser bzw. das Betriebsystem einen eigenen Cache, surft man also vorrangig auf einer oder wenigen Seiten profitiert man kaum oder gar nicht.
 

Die Gefahren ?

Nun ist google ja beides, DNS Provider und Werbeanbieter. Mit Nutzern welche den eigenen DNS Server verwenden könnte man nun sehr gezielt profilieren. Warum ? Nun um z.B. auf euch zugeschnittene Werbung auf anderen Webseiten einzublenden. z.B. Google merkt anhand der von euch aufgelösten Seiten das ihr einige auf Auto Tuning Foren absurft, nun könnte Google dies nutzen um euch in den Google Suchergebnissen oder anderen Webseiten vorwiegend Auto Tuning Kampagnen zu präsentieren. Schlimm ? Naja muss jeder selber beurteilen, das aufgezeigte wäre ja auch nur eine Möglichkeit.

Zur Performance

Neben GoogleDNS gibt es auch andere freie DNS Server mit optimiertem Cache, so z.B. openDNS. Wer ist nun schneller ? Um das herauszufinden reicht natürlich kein subjektives testen beim surfen durch “fühlen” ;) Auch kann ein Test natürlich bei jedem Provider anders ausfallen. Nun ich habe meinen Provider, Unitymedia, und teste eben diesen ;) Um ein halbwegs objektives Ergebnis zu erreichen habe ich ein Script geschrieben welches mehrere DNS Server abfragt und dies auch 3x pro Server und dann den Mittelwert “notiert” zum Ergebnis:
 
dns_test_googledns_msec_benchmark

(Bild anklicken für Großansicht)

Wie man erkennt schneidet bei mir doch mein eigener Provider am besten ab. Dies hatte ich auch erwartet da die DNS Server von Unitymedia eigentlich bisher immer sehr zuverlässig und schnell waren. Google hat hier klar eine gute Performance aber nun auch nicht nennenswert besser als andere. Ein Feature des GoogleDNS soll ja automatischer Refresh anhand der TTL sein. (Jeder DNS Eintrag hat eine Max. Lebensdauer TTL (Time to Live) genannt, verfällt dieser Eintrag muss erst der “Mutter-Server” befragt werden) Ob dies im Detail wirklich entscheidende Vorteile bringt wage ich zu bezweifeln. Zumindest wenn man einen viel frequentierten DNS Cache verwendet sollte das nicht im merkbaren Bereich liegen. Bildet man mal aus allen aufgerufenen Webseiten einen Durchschnittswert so ergibt sich bei mir folgendes Speedranking:google_dns_benchmark_durchschnitt
  1. UnityMedia (mein Provider)
  2. Arcor
  3. Google
  4. T-Online
  5. 1&1
  6. OpenDNS
  7. Hansenet
  8. Level 3
  9. EDNS
  10. OpenNIC
Meine Daten und Diagramme gibt es für detailversessene auch gerne hier zum download als Excel File: [download id="18"]

Wie habe ich die Nameserver getestet ?

Nun grob habe ich das oben ja bereits erläutert, für alle die den Test selbst wiederholen möchten stelle ich mal das verwendete Script online. Als Windowsuser wirds aber schwierig ^^ Nötig ist ein Linux System mit installiertem DIG sowie PHP-CLI. Für alle mit etwas PHP Erfahrung ist folgendes Script selbsterklärend:
#!/usr/bin/php
< ?php $DNS_servers = array("Google #1"=>"8.8.4.4","Google #2"=>"8.8.8.8","OpenDNS"=>"208.67.222.222","UnityMedia"=>"80.69.100.182","EDNS"=>"213.198.78.3","Level 3"=>"4.2.2.1","OpenNIC FR"=>"82.229.244.191","Arcor"=>"145.253.2.11","TU-Berlin"=>"130.149.4.20","1&1"=>"217.237.150.188","T-Online"=>"217.5.100.185","Hansenet"=>"213.191.74.18");
$TEST_urls   = array("solariz.de","spiegel.de","youtube.com","linux.com","twitter.com","bbc.co.uk","vienna.at","google.com","wikipedia.org","wcg-europe.com");

$DATA =array();
$loops = 3;
for($i=1;$i< =$loops;++$i) { echo "Testdurchlauf ".$i."/".$loops."\n"; foreach ($TEST_urls as $url) { foreach ($DNS_servers as $DNSname=>$dns) {
$result = shell_exec('dig @'.$dns.' '.$url.' | grep Query | cut -d : -f 2');
$msec = trim(str_replace("msec","",$result));
echo ".";
$DATA[$url][$dns] = $DATA[$url][$dns]+$msec;
}
}
echo "\n";

}
unset($url,$dns,$TEST_urls,$msec);
// Ausgabe als CSV
echo "\n";
echo "URL;";
foreach ($DNS_servers as $DNSname=>$dns) echo $DNSname.";";
echo "\n";
foreach ($DATA as $url=>$array) {
echo $url.";";
foreach($array as $dns=>$msec) {
echo round($msec/$loops).";";
}
echo "\n";
}
?>

 

✉ MG// CEST

Follow Icon
Don’t miss out and subscribe by email:
Don't worry! NO Spam and FREE; Receive a summarizing email for new posts, easy to unsubscribe at any time.
← Other Blog Posts