Google a annoncé hier un nouveau service d’ordre assez technique mais à vocation grand public : Google public DNS (merci à Philippe de Blue Pipe).
Je profite lâchement de l’absence aux JRES d’un des principaux bloggeurs français spécialistes pour donner mon grain de sel avant lui sur la question, même s’il m’a lui même gentiment fourni les pointeurs idoïnes vers sa littérature 🙂
Il s’agit « simplement » d’un service supposé remplacer les serveurs DNS récursifs que vous utilisez, soit ceux de votre fournisseur d’accès (cas le plus courant), soit ceux d’un service « ouvert » (cas moins courant et peu recommandé).
À quoi cela peut-il bien servir ?
Réponse rapide pour gens pressés : en gros… à rien ! Chaque fournisseur de connectivité gère ses propres serveurs, bien en général, et cela reste le plus souvent la meilleure solution (la vraiment meilleure solution technique étant dans la plupart des cas d’avoir chez vous un cache DNS local). Et si votre fournisseur ne gère pas correctement ses serveurs, il est temps de changer de boutique, pas juste de serveur DNS.
Mais ce nouveau service de Google a tout de même plusieurs intérêts notables.
- Il permet de se protéger contre les fournisseurs proposant des DNS menteurs afin d’imposer de la publicité aux malheureux qui tapent de travers les noms des sites web auxquels ils accèdent ;
- Il concurrence certains DNS menteurs ouverts, proposés dans le but avoué de fournir un service “amélioré” (options de filtrage) par rapport aux DNS de votre fournisseur, mais qui procèdent également au détournement de trafic mentionné ci-dessus.
- Enfin, il propose des pistes intéressantes pour la sécurité comme pour la rapidité de résolution. J’y reviens ci-dessous.
L’argument principal invoqué par Google (la rapidité de résolution) est à moitié bidon. Le service Google est notablement plus rapide… que ses concurrents ouverts. Mais il ne peut pas lutter avec le service du fournisseur d’accès que l’on utilise, si ce dernier fonctionne correctement, ni a fortiori avec un cache local.
Le second argument, celui de la sécurité, est également à moitié bidon : si Google a besoin de faire tant d’efforts pour protéger ce service, c’est surtout parce qu’il est ouvert à toute requête, facilitant donc les attaques. Ce n’est pas le cas du cache de votre fournisseur, et encore moins d’un cache local (je suppose évidemment que votre configuration est à jour de l’état de l’art : le temps des serveurs locaux ouverts est terminé !). Rien ne dit pour l’instant que le résultat fourni par Google aura une sécurité supérieure aux caches classiques. On peut être en revanche sûr qu’il sera une cible privilégiée d’attaques ! Néanmoins, les mesures de protection mises en oeuvre par Google sont novatrices et peuvent donner des idées d’amélioration pour les logiciels serveurs DNS classiques. On peut faire confiance à Google pour analyser leur efficacité.
Reste le troisième argument, la validité. Même s’il est cité en dernier, c’est sans doute le plus intéressant des trois, car il indique l’engagement de Google sur la qualité du service rendu, et surtout explicite leur refus de recourir à un service « menteur », une tendance parasite récente et pénible chez les mauvais fournisseurs. Là encore, la question ne se poserait pas pour un cache local.
Enfin, on peut également faire confiance à Google pour effectuer des statistiques d’usage sur les noms référencés par les requêtes leur parvenant, et pour les exploiter. Le sujet est soigneusement éludé par leur billet d’annonce.
Petite cerise sur le gâteau, l’adresse IPv4 du service Google : 8.8.8.8. Très joli. On attend maintenant un équivalent en IPv6 tout aussi décoratif.
En conclusion, Google propose donc ce qui pourrait s’imposer comme le meilleur service « ouvert » de DNS récursif actuel. Cela ne vaut certainement pas un bon service récursif « privé », mais cela aura au moins le mérite d’améliorer ce qui est disponible en « bas de gamme ». Même si l’on ne s’en sert pas, on peut au moins en saluer la louable intention.
Note toutefois que leur privacy policy indique comment ils se serviront des données, d’abord bien identifiées puis anonymisées/agrégées/sélectionnées.
“Le second argument, celui de la sécurité, est également à moitié bidon : si Google a besoin de faire tant d’efforts pour protéger ce service, c’est surtout parce qu’il est ouvert à toute requête, facilitant donc les attaques. Ce n’est pas le cas du cache de votre fournisseur”
Tout dépend du FAI. Certains sont vraiment mauvais pour la sécurité. Voir notamment http://www.siliconrepublic.com/news/article/13367/cio/eircom-confirms-dns-outage. Ce problème s’est produit deux fois chez Eircom cette année. Il leur a fallu pas mal de temps pour ne serait-ce qu’accepter publiquement que le problème était réel et la résolution n’a pas été rapide du tout (genre une journée).
Je me souviens aussi, dans une vie antérieure, que tous les DNS cache de mon employeur, un gros ISP français, étaient dans les choux pendant une heure à cause de la rupture d’un lien transatlantique et du nombre de timeouts qui en résultaient sur les résolutions de zonelabs.com.
Ne pas oublier l’autre adresse, 8.8.4.4.
Pour la plupart des gens “qui n’y connaissent rien”, installer un cache local est évidemment impossible. De plus, énormément d’ISP ne savent pas faire fonctionner leurs serveurs DNS en direction de leurs clients, et/ou le cache DNS est fourni par le modem/routeur ADSL qui en fait tourner une implémentation très mauvaise. Pour énormément de gens la résolution DNS est un bottleneck énorme à la rapidité de leur accès Internet.
PS: commentaire posté depuis un TGV aux alentours de Strasbourg 🙂
Olivier Tharan : bienvenue dans le monde de l’IP mobile 🙂
Je suis très, très sceptique sur l’impact « énorme » chez « énormément de gens ». Il existe par défaut (= simplicité) des caches à tous les niveaux. Rien que dans le navigateur web on recense déjà un cache d’adresses IP et un cache de pages ; et un deuxième cache d’adresses IP et de pages si on utilise un relais-cache. Même si ce n’est jamais optimal évidemment.
Ton argument de la simplicité est aussi à double tranchant : ce n’est pas si facile que ça de configurer 8.8.8.8 en résolveur quand on n’y connaît rien. Ça ira sûrement très bien pour ceux qui font actuellement les cakes en se configurant OpenDNS pour jouer les rebelz, mais ce public n’est déjà pas monsieur tout le monde…
Je ne suis pas du tout convaincu par l’argument de la difficulté à installer un résolveur local. Aujourd’hui, sur une Ubuntu, c’est “aptitude install unbound” et modifier /etc/resolv.conf (ce qu’il faut faire de toute façon avec Google DNS, comme le note Pierre).
C’est encore trop compliqué pour M. MIchu ? Certainement mais il ne reste plus grand’chose à faire pour un développeur pour faire un paquet qui fasse tout cela (même avec DNSSEC, si on met la clé de la racine et qu’on utilise le RFC 5011).
Donc, aujourd’hui, 5 décembre 2009, oui, installer un résolveur local est un poil trop compliqué pour le grand public. Mais le travail à faire pour que cela soit trivial est minime, donc pourrait apparaitre rapidement.
M. Michu ne m’avait pas dit qu’il était passé à Ubuntu.
Pas grave s’il est resté sur MS-Windows, le même raisonnement s’applique (Unbound tourne sur Windows).