====== Se passer des mauvais serveurs DNS de Free ======
//Ceci n'a rien à voir avec l'hébergement de site, mais concerne toute personne ayant Free comme fournisseur d'accès.//
===== La raison d'agir =====
Les serveur DNS de Free sont mauvais. Ils répondent lentement lorsqu'on leur demande de [[http://www.linux-france.org/prj/inetdoc/cours/config.interface.lan/config.interface.lan.dns.html|résoudre des noms]] de domaines fréquemment consultés et très lentement s'il s'agit de nom de domaines rarement consultés. Cela peut aboutir à la non résolution de certains noms ! Résultat, même si tout fonctionne parfaitement par ailleurs, on constate un temps d'accès anormalement long à certaines pages. Dans le même ordre d'idées, certaines pages (complexes((Par exemple, la page d'accueil de voyages-sncf demande la résolution de 6 noms de domaines pour quelques 62 requêtes.))) mettent longtemps à s'afficher, entre le commencement et la fin. Enfin, certains sites semblent tout bonnement inaccessibles, laissant croire que le serveur web est en cause alors qu'il n'en est rien !
Si des outils de surveillance sont installés sur notre station de travail on reçoit des messages explicites tels que (message de SNORT) :
Unusual number of DNS No Such Name Responses
===== Deux approches =====
Pour éviter de recourir à des mauvais serveurs DNS on peut s'y prendre de plusieurs manières. La "bonne" manière de faire dépend de facteurs sur lesquels nous avons plus ou moins prise, en tant qu'utilisatrice : système d'exploitation, configuration réseau, contrôle de l'infrastructure... Je ne présente ici que deux approches que presque tout oppose, chacune étant illustrée par un cas d'utilisation.
==== Utiliser son propre serveur DNS ====
Dès qu'on peut la mettre en oeuvre, la meilleure démarche((Si une personne vous dit le contraire, vous considérer qu'elle s'exprime sur un sujet qu'elle que maîtrise pas.)) consiste à créer son propre serveur DNS.
==== Faire appel à des serveurs DNS publics ====
Pour remplacer les serveur DNS de Free, il faut faire appel à des serveurs DNS publics((Les serveurs DNS que l'on utilise (sans le savoir) sont ceux de notre fournisseur d'accès. L'accès à ces serveurs est réservé aux abonnés du FAI. A contrario, un seveur DNS //**public**// est accessible depuis tout ordi connecté à internet, quel soit son FAI ou son mode de connexion.)). La plage d'adresses IP suivante permet d'accéder à six serveurs publics rapides et [[free:dns#limites_de_la_solution|fiables]] : 4.2.2.1 - 4.2.2.6. Il suffit d'en choisir **deux** que l'on sélectionne en fonction de leur vitesse de réponse estimée.
ping 4.2.2.x
dig @4.2.2.x truc.tld
Répéter les commandes plusieurs fois. On lance dig avec des domaines différents, a priori peu demandés par les internautes (google.com étant le pire des choix). Il est normal qu'un écart significatif apparaisse entre le premier lancement d'une commande et ses répétitions, à l'identique.
Pour la suite, on suppose que notre premier choix est 4.2.2.5 et notre second choix est 4.2.2.3.
===== Cas N°1 : actions correctives au niveau d'un seul ordi =====
Ce cas est une illustration de mise en place de son propre serveur DNS, dans le cas d'un seul poste de travail. Je décris les étapes d'installation à appliquer dans le cas d'un ordi fonctionnant avec Linux-Debian((Validé sur Debian 7 Wheezy)).
Ne pas appliquer cette solution si votre réseau local dispose déjà de son propre serveur DNS, indépendant de celui de votre FAI.
==== Installer le serveur DNS ====
L'installation du serveur DNS sur l'ordi, connecté à internet, s'obtient en tapant deux commandes dans un terminal :
# apt-get update
# apt-get install bind9
Et voilà ! Par défaut, Debian installe //bind// en mode //résolveur//. C'est exactement ce que l'on souhaite.
__En savoir plus__ : [[http://www.dnsknowledge.com/tutorials/debian/bind9/linux-set-bind9-caching-dns-nameserver/|Debian Linux Set BIND 9 Caching DNS Server]] (en).
==== Limiter l'interrogation au poste local ====
si webmin est installé sur le poste :
* webmin > servers > bind > addresses and topology : Allow recursive queries, Listed .. , 127.0.0.1
ou éditer le fichier /etc/bind/named.conf.options :
allow-recursion {mynetworks;};
allow-query-cache {mynetworks;};
où //mynetworks// sera remplacé par vos valeurs (par ex. 127.0.0.1).
__En savoir plus__ : [[http://www.bortzmeyer.org/fermer-les-recursifs-ouverts.html|Il est recommandé de fermer les serveurs DNS récursifs ouverts]] (fr).
==== Empêcher le client DHCP d'imposer le DNS du FAI ====
éditer le fichier /etc/dhcp/dhclient.conf :
#supersede domain-name "127.0.0.1";
#prepend domain-name-servers 127.0.0.1;
* prepend : ajoute le(s) serveur(s) indiqué(s) et leur donne la priorité sur ceux fournis par le serveur dhcp
* supersede : écrase les valeurs fournies par le serveur dhcp
Pour appliquer la modification, on a abandonne la concession (lease) et en demande une autre auprès du serveur dhcp :
# dhclient -v -r
# dhclient -v
__En savoir plus__ : [[http://raamdev.com/2009/configuring-static-dns-with-dhcp-on-debianubuntu/|Configuring Static DNS with DHCP on Debian/Ubuntu]] (en).
La mise en place de cette solution présuppose que vous disposez d'une vraie connexion à internet, c'est-à-dire sans restriction de ports ou de protocoles (notamment DNS).
===== Cas N°2 : actions correctives au niveau du LAN =====
Ce cas est une illustration de la démarche faisant appel à des serveurs DNS publics.
==== Configuration ====
Le cas traité est celui d'une configuration en réseau local géré par un routeur Lynksys WRT54G, relié au port ethernet de la FreeBox. La fonction routeur de la FreeBox n'est pas activée. Le [[http://fr.wikipedia.org/wiki/WRT54G|WRT54G]] est équipé du microcode ((Aussi appelé //firmware//)) OpenSource [[http://www.dd-wrt.com/site/index|DD-WRT]]. L'explication qui suit est valable pour la quasi-totalité des routeurs équipés du même microcode.
Le WRT54G fait office de serveur DHCP pour l'ensemble des stations du réseau local (la question des stations à IP fixe est traitée par le serveur dhcp). Le service dhcp peut être rendu par deux programmes différents. Par défaut, le WRT54G utilise udhcpd et ne fournit que le service dhcp. Une simple case à cocher permet de lui préférer le programme [[http://www.thekelleys.org.uk/dnsmasq/doc.html|dnsmasq]] ((comme son nom ne l'indique pas, ce programme fait office de serveur dhcp)). Comme son nom l'indique ce programme fait également office de serveur DNS.
Dans ce dernier cas, le WRT54G fait office de relais DNS (forwarder) pour les postes informatiques du réseau local.
==== Routeur ====
Par défaut, le WRT54G obtient sa configuration internet par une requête DHCP auprès du réseau de Free. C'est ainsi que lui sont donnés les serveurs DNS de Free, comme serveurs par défaut. Lorsque les stations vont acquérir leur configuration internet, par dhcp, auprès du WRT54G, celui-ci va leur transmettre les seuls serveurs DNS qu'il connait : ceux de Free. Il faut donc écraser cette configuration par défaut de manière à ce que les stations récupèrent les bons serveurs DNS.
On écrase les serveurs par défaut en se rendant sur la page //Setup->Basic Setup// de l'interface web de configuration du WRT54G. Par défaut, les champs Static DNS 1, 2 et 3 contiennent l'adresse IP 0.0.0.0. Il suffit de remplacer les valeurs de Static DNS 1 et 2 par 4.2.2.5 et 4.2.2.3. Conserver l'ordre de classement issu de nos tests((Si DNS 3 est laissé à la valeur 0.0.0.0, le WRT54G ajoutera le premier serveur DNS fournit par Free, en troisième position de la liste des serveurs DNS qu'il indique au postes du réseau local configurés par dhcp.)). Enregistrer la configuation (save) et redémarrer le WRT54G en cliquant sur le bouton //Reboot Router// de la page //Administration->Management//.
=== dnsmask ===
Si le WRT54G est configuré pour utiliser dnsmask, les actions et leurs conséquences dépendent de l'activation - ou non - de la fonctionnalité //relais DNS// de ce programme.
Si le //relais DNS// n'est pas activé (Setup->Basic Setup->Use DNSMasq for DNS, case non cochée), on peut se contenter des réglages précédents. Toutefois, les postes se connectant par dhcp ne recevront que les deux serveurs DNS indiqués explicitement. Autrement dit, la valeur vierge de DNS 3 n'est pas remplacée par le premier DNS fournit par Free. Deux adresses de serveurs DNS fiables, c'est bien assez((Car derrière une seule adresse IP de serveurs DNS fiables se trouvent plusieurs serveurs redondants.)) ! ;)
Si le //relais DNS// est activé, les postes se connectant par dhcp recevront l'adresse locale du WRT54G comme unique serveur DNS. L'important est alors de savoir quels sont les serveurs DNS utilisés par le WRT54G, puisque c'est lui qui réalise l'intégralité des requêtes DNS, pour tous les postes informatiques du réseau local. Il utilisera les valeurs indiquées dans DNS 1 et DNS 2. Si l'on tient à ce que cet ordre soit respecté, on se rend sur la page //Services->Services//. Dans la zone de saisie intitulée //Additional DNSMasq Options//, ajouter la ligne suivante :
strict-order
Enregistrer la configuration et redémarrer le routeur en cliquant sur le bouton //Reboot Router// de la page //Administration->Management//.
==== Station de travail ====
Chaque station de travail se connectant par DHCP reçoit du WRT54G sa liste des serveurs DNS qu'elle utilisera. Pour bénécifier immédiatement des modifications apportées au WRT54G, elle doit se reconnecter ; un résultat que l'on obtient avec les commandes classiques :
sudo ifdown br0
sudo ifup br0
où //br0// désigne l'interface de raccordement de la station à internet((Dans une configuration système et matérielle minimale, ce sera probablement eth0. Ici, la station est configurée pour héberger des machines virtuelles accédant en propre au réseau local, grâce à [[http://www.virtualbox.org/|virtualBox]])). En cas de doute, les résultats de la commande //ifconfig// permettent de voir quelle est l'interface concernée.
Si cette procédure ne fonctionne pas ou vous est incompréhensible, le plus sûr est de redémarrer la station((Certes, cela fait un peu bourrin, mais c'est préférable. On peut aussi faire les choses plus proprement mais, s'agissant de stations de travail, il est probable qu'elles utilisent des machines virtuelles ce qui complique la configuration des interfaces réseaux et donc leur redémarrage. Même sur un simple poste informatique, un //network-manager// peut venir son grin de sel.)).
=== Changement temporaire unique ===
Sans toucher au WRT54G, on peut écraser temporairement les valeurs utilisées par une seule station de travail. Pour ce faire, on modifie le fichier /etc/resovl.conf de la station. On **remplace** les lignes commençant par //nameserver// par les lignes suivantes :
nameserver 4.2.2.5
nameserver 4.2.2.3
L'effet est immédiat !
=== Changement permanent unique ===
Sans toucher au WRT54G, on peut faire en sorte qu'une station de travail "écrase", lors de son démarrage, les valeurs de serveurs DNS reçues à la négociation dhpc. Pour que le changement soit permanent, il faut intervenir sur la configuration du client dhcp de la station. Par exemple, sur un système Ubuntu, on édite le fichier /etc/dhcp3/dhclient.conf pour y ajouter la ligne suivante :
prepend domain-name-servers 4.2.2.5, 4.2.2.3;
===== Danger des serveurs DNS publics =====
Les serveur DNS qui vont venir remplacer ceux de Free ne peuvent pas être choisis à la légère. Il faut être consciente de deux choses :
- vos serveurs DNS connaissent la totalité des noms de domaines que vous sollicitez (pages web, ftp, mail, etc.),
- vos serveurs DNS sont responsables des ordinateurs vers lesquels ils vous orientent lorsque vous leur demandez de résoudre un nom.
Le premier point a trait à la protection de la vie privée. Si vous vous exposez déjà sans précaution à Google, Facebook et d'autres, vous n'êtes probablement plus à ça près.
Le second point concerne plutôt le risque de phishing (ou [[http://fr.wikipedia.org/wiki/Hame%C3%A7onnage|hameçonnage]]). Typiquement, vous croyez consulter votre compte bancaire sur //ma-banque.com// mais le serveur DNS vous a orientée vers un autre site, très ressemblant, sur lequel vous allez donner vos identifiants (login et mot de passe).
Le Web regorge de **fausses** "bonnes" solutions "gratuites" pour éviter les serveurs DNS de Free ou d'autre [[http://fr.wikipedia.org/wiki/Fournisseur_d'acc%C3%A8s_%C3%A0_Internet|FAI]]. Soyez prudentes…
Parmi celles-ci, les plus médiatisées sont [[http://www.opendns.com/|OpenDNS.com]] et l'inévitable [[http://code.google.com/speed/public-dns/|Google Public DNS]] (en). Le premier ne respecte pas les RFC((Les normes techniques qui garantissent le bon fonctionnement d'internet.)) et vous envoie sur des pages de pub s'il ne parvient pas à résoudre votre nom de domaine. Le second fait comme à son habitude, c'est-à-dire qu'il vous "espionne" avec votre consentement.
===== Limites de la solution =====
Cette technique ne fonctionne que si votre réseau informatique se trouve "derrière" un routeur que vous contrôlez.
Relier vos postes informatiques directement au routeur (activé) de la Freebox, est un mauvais choix. En informatique, il y a peu de cas où l'on peut être aussi catégorique. Celui-ci en fait partie. Un routeur de qualité, fiable et sûr, coûte à peine deux mois d'abonnement à Free ou à votre FAI préféré.