Le but de ce tutorial est de vous montrer comment mettre en cache les différents nom de domaines visités pour améliorer votre vitesse de navigation sur internet.
Le principe est simple, quand vous faites une requête HTTP sur un nom de domaine (security-helpzone.com par exemple), des serveurs DNS sont interrogés pour récupérer l’adresse IP dudit site. Nous allons mettre en cache ces adresses IP pour ne plus avoir à requêter sur le DNS externe !
Installation de DNSMasq
Un paquet léger et très simple à configurer qui nous servira de serveur DNS local (pour le cache).
aptitude install dnsmasq
On va configurer le DNS pour qu’il écoute sur le pc (localhost).
nano /etc/dnsmasq.conf
Ajouter les lignes suivantes
listen-address=127.0.0.1
server=208.67.222.222
server=208.67.200.200
Et voilà, dnsmaq est configuré pour réagir comme serveur DNS local.
service dnsmasq restart
Changer la configuration DNS de la machine
La configuration DNS d’un ordinateur se trouve dans /etc/resolv.conf. Voici la mienne :
# DNS Caching
nameserver 127.0.0.1
# OpenDNS servers
nameserver 208.67.222.222
nameserver 208.67.220.220
Elle dit que mon serveur DNS primaire est toujours 127.0.0.1 (dnsmasq) et que si mon DNS ne connaît pas l’adresse, qu’il interroge OpenDNS. (Bien entendu, vous pouvez mettre ceux de n’importe quel fournisseurs !)
C’est exactement ce qu’il se passe lors d’un requête, la première fois il interrogera OpenDNS, la seconde il interrogera directement DNSMasq, beaucoup plus rapide !
Première requête DNS sur OpenDNS (on ne connaît pas encore le domaine)
root@debian:/home/sacha# dig ubuntu.com
; <<>> DiG 9.9.5-12.1-Debian <<>> ubuntu.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 53039
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;ubuntu.com. IN A
;; ANSWER SECTION:
ubuntu.com. 102 IN A 91.189.94.40
;; Query time: 28 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Thu Mar 17 08:15:56 CET 2016
;; MSG SIZE rcvd: 55
Seconde requête DNS (sur le DNS primaire)
root@debian:/home/sacha# dig ubuntu.com
; <<>> DiG 9.9.5-12.1-Debian <<>> ubuntu.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 41131
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 1280
;; QUESTION SECTION:
;ubuntu.com. IN A
;; ANSWER SECTION:
ubuntu.com. 90 IN A 91.189.94.40
;; Query time: 0 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Thu Mar 17 08:16:08 CET 2016
;; MSG SIZE rcvd: 55
Cela peut paraître dérisoire, mais 28ms multiplié par le nombre de fichiers à charger ça fait gagner du temps, sur d’autant plus de domaines mis en cache.
Network-Manager réécrit ma configuration DNS (resolv.conf)
Il se peut que votre gestionnaire de réseau réécrive votre configuration avec la sienne (ce qui lui permet par exemple, de switcher de DNS suivant la connexion utilisée). Pour désactiver ce paramètre, éditez le fichier suivant :
nano /etc/NetworkManager/NetworkManager.conf
Et sous [main], rajoutez : dns=none.
[main]
plugins=ifupdown,keyfile
dns=none
[ifupdown]
managed=false
Installer resolvconf pour gérer le
On redémarre le démon du réseau (la connexion internet sera interrompue quelques secondes).
service network-manager restart
L’avantage de désactiver la gestion DNS de Network-Manager est que maintenant les paramètres appliqués sont globaux, et non propre à chaque configuration réseau.
Dîtes-moi en commentaire si ça a changé quelque chose pour vous niveau vitesse de navigation !