Accélérer le chargement des pages web avec un serveur de cache DNS

10 février 2015 Serveur 2 Commentaires

Afin d’accélérer le chargement des pages web j’ai mis en place sur mon serveur local un cache DNS, celui-ci ne résoudra pas les noms de domaine : il interrogera les DNS d’OpenDNS et mettra en cache ces résultats pour les prochaines requêtes.

 

 

Installation et configuration du serveur de cache DNS

Pour cela j’utilise BIND9, si il n’est pas encore installé rien de plus simple

sudo apt-get install bind9

 

Maintenant configurons le serveur de cache

sudo nano /etc/bind/named.conf.options

 

De sorte à ce qu’il ressemble a ceci

options {
        directory "/var/cache/bind";

        // If there is a firewall between you and nameservers you want
        // to talk to, you may need to fix the firewall to allow multiple
        // ports to talk.  See http://www.kb.cert.org/vuls/id/800113

        // If your ISP provided one or more IP addresses for stable
        // nameservers, you probably want to use them as forwarders.
        // Uncomment the following block, and insert the addresses replacing
        // the all-0's placeholder.

         forwarders {
                208.67.222.222;
                208.67.220.220;
         };

        forward only;

        //========================================================================
        // If BIND logs error messages about the root key being expired,
        // you will need to update your keys.  See https://www.isc.org/bind-keys
        //========================================================================


        recursion yes;

        auth-nxdomain no;    # conform to RFC1035
        listen-on-v6 { any; };

        dnssec-enable yes;
        dnssec-validation yes;
};

 

Forçons maintenant bind a résoudre des IPv4 et pas des IPv6, il faut donc éditer le fichier /etc/default/bind9 

sudo nano /etc/default/bind9

 

Modifiez le paramètre OPTIONS afin de forcer l’IPv4

OPTIONS="-u bind -4"

 

Sauvegardez ces modifications et relancer le service bind9

sudo service bind9 restart

 

Test de votre serveur de cache DNS

Test de votre configuration sous Debian / Ubuntu

Pour tester votre cache DNS rien de plus simple, il vous suffit de modifier le fichier /etc/resolv.conf – ces modifications seront effectives jusqu’au prochain redémarrage de votre machine

sudo nano /etc/resolv.conf

 

Indiquez l’adresse de votre serveur DNS local

nameserver 192.168.1.2
# nameserver 8.8.4.4
# nameserver 8.8.8.8
# nameserver 209.244.0.3

 

Nous allons maintenant utiliser la commande dig afin de vérifier que tout fonctionne correctement, celle ci nous donnera des informations détaillés quant à la résolution d’un nom de domaine

dig www.linuxfr.org

 

Ce qui nous donne :

; <<>> DiG 9.8.4-rpz2+rl005.12-P1 <<>> www.linuxfr.org
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 29183
;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 0

;; QUESTION SECTION:
;www.linuxfr.org.               IN      A

;; ANSWER SECTION:
www.linuxfr.org.        900     IN      CNAME   prod.linuxfr.org.
prod.linuxfr.org.       900     IN      A       88.191.250.176

;; Query time: 147 msec
;; SERVER: 192.168.1.2#53(192.168.1.2)
;; WHEN: Tue Feb 10 00:36:05 2015
;; MSG SIZE  rcvd: 68

 

Ici nous pouvons voir que cette requête a été exécutée en 147 msec et que le serveur est bien celui que nous venons de configurer 192.168.1.2, maintenant relancions cette même commande et observons les résultats

; <<>> DiG 9.8.4-rpz2+rl005.12-P1 <<>> www.linuxfr.org
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 44290
;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 0

;; QUESTION SECTION:
;www.linuxfr.org.               IN      A

;; ANSWER SECTION:
www.linuxfr.org.        711     IN      CNAME   prod.linuxfr.org.
prod.linuxfr.org.       711     IN      A       88.191.250.176

;; Query time: 1 msec
;; SERVER: 192.168.1.2#53(192.168.1.2)
;; WHEN: Tue Feb 10 00:39:14 2015
;; MSG SIZE  rcvd: 68

 

Vous pouvez voir que notre serveur cache fonctionne, le temps de résolution du nom de domaine est tombé a 0 msec.

 

Test de votre configuration Windows

Pour tester votre configuration sous windows, rien de plus simple : Les DNS sont à modifier dans les propriétés TCP/IP de la carte réseau qui établit la connexion. Selon votre système Windows vous y accéderez de différentes façons :

  • Windows XP : Menu démarrer / Panneau de configuration / Connexions réseau et internet / Connexions réseau
  • Windows Vista : Menu Windows / Panneau de configuration / Réseau et Internet / Centre Réseau et partage / Gérer les connexions réseau
  • Windows 7 : Menu Windows / Panneau de configuration / Réseau et Internet / Centre Réseau et partage / Modifier les paramètres de la carte
  • Windows 8 : Atteindre le « centre réseau et partage » en utilisant la recherche / Modifier les paramètres de la carte

Faites un clic droit sur les propriétes de la carte réseau ou wifi que vous utilisez, sélectionnez en cliquant la ligne « Protocole internet TCP/IP » puis cliquez que le bouton « Propriétés » puis cochez la case « Utiliser l’adresse de serveur DNS suivante » pour pouvoir remplir les champs DNS manuellement. Renseignez ensuite l’adresse IP de votre serveur local et validez.

La commande dig disponible nativement sous linux ne l’est pas sous windows, il reste possible de l’installer de l’utiliser dans l’invite de commande, pour cela rendez vous sur le site officiel de bind afin de télécharger le programme. Une fois que l’archive est téléchargée il vous faut extraire les fichiers suivantes dans C:\Windows\System32 :

dig.exe
host.exe
libbind9.dll
libdns.dll
libeay32.dll
libisc.dll
libisccfg.dll
liblwres.dll
libxml2.dll

 

Vous pouvez maintenant ouvrir l’invite de commande et effectuer les mêmes tests que pour Debian / Ubuntu

 

Utilisez votre serveur de cache de façon permanente

Configuration permanente sous Debian / Ubuntu

Pour cela il vous faut modifier le fichier /etc/network/interfaces 

sudo nano /etc/network/interfaces

 

Modifiez la ligne dns-nameservers  de sorte à ce qu’elle indique l’adresse de votre serveur local

dns-nameservers 192.168.1.2

 

Relancez l’interface concernée par ces modifications (dans notre cas eth0)

sudo ifdown eth0 && sudo ifup eth0

 

Configuration permanente sous Debian / Ubuntu

Sous windows il suffit de laisser les modifications que vous aviez opérées pour vos tests.

 

Forcer la configuration des clients depuis votre routeur

Certains routeurs permettent de directement configurer votre serveur DNS pour vos clients locaux via le DHCP, ici un exemple avec l’Asus RT-AC66U (merlin firmware)

Accélérer le chargement des pages web avec un serveur de cache DNS

 

Sources :

Digital Ocean
CNET