Raspberry Pi : Internet plus rapide grâce à la mise en cache des DNS

Si la résolution DNS est un sujet auquel la plupart des gens ne pensent probablement pas, le processus qui permet de résoudre une adresse IP à partir d'un domaine a pourtant un impact important sur la vitesse de navigation. Un cache DNS sur un Raspberry Pi peut apporter un certain soulagement.

Après avoir changé de fournisseur d'accès à Internet et disposer d'une ligne VDSL avec une synchronisation de 51,4 Mbit/s en aval et 10 Mbits/s en amont, j'ai entrepris de desserrer les derniers freins.

Logo Raspberry Pi
Logo Raspberry Pi
Tout d'abord, j'ai remarqué qu'après avoir saisi une URL, il faut une petite seconde pour charger la page web.

Une approche de la solution : un Raspberry Piconnectée directement à la Fritzbox (j'utilise une Fritz!Box 7490) fonctionne comme un système d'alarme. Cache DNS (avec pdnsd) et Serveur DHCP (car aucun serveur DNS alternatif ne peut être saisi dans la Fritzbox pour la distribution via DHCP).

Raspberry Pi comme cache DNS

Si vous utilisez Raspbian (Debian) et que vous ne souhaitez pas utiliser un serveur DNS complet comme bind, le paquet pdnsd est un bon choix. pdnsd a l'avantage que les données du cache ne sont pas seulement dans la RAM, mais aussi sur la carte SD du Pi. Les entrées DNS en cache sont donc conservées même après un redémarrage du Pi. La configuration de pdnsd est simple, les ajustements les plus importants dans l'onglet /etc/pdnsd.confJ'ai laissé la plupart des valeurs à leurs normes :

perm_cache=8192 ; // Taille du cache en kilo-octets (ici : 8 méga-octets)
cache_dir="/var/cache/pdnsd" ; // Répertoire du cache
server_ip = 0.0.0.0 ; // IP sur laquelle l'écoute a lieu : 0.0.0.0 signifie sur toutes les IPs

Pour pouvoir répondre aux demandes qui ne sont pas encore dans le cache, les serveurs DNS doivent également être configurés pour pdnsd. Par défaut, le programme resolvconf les serveurs de noms doivent ensuite être configurés via le fichier /etc/network/interfaces peuvent être configurés. Là, à l'entrée d'une interface, la ligne dns-nameservers 8.8.8 8.8.4.4 ajouté :

auto eth0
iface eth0 inet static
adresse 192.168.0.10
masque de réseau 255.255.255.0
réseau 192.168.0.0
passerelle 192.168.0.1
dns-nameservers 217.0.43.161 217.0.43.177 8.8.8 8.8.4.4

Avec cette configuration, le Raspberry Pi obtient l'adresse IP 192.168.0.10, utilise la Fritzbox (192.168.0.1) comme passerelle et la Telekom-DNS-Server 217.0.43.161 et 217.0.43.177 ainsi que les serveurs DNS publics de Google (8.8.8.8 et 8.8.4.4). Runs pdnsdvous pouvez commencer par sudo /etc/init.d/pdnsd status trouver l'état du cache :

État du cache :
=============
8192 kB taille maximale du cache disque.
613647 des 8398848 octets (7.31%) de mémoire cache utilisés dans 2275 entrées.

DHCP sur Raspberry Pi

Pour que les paramètres soient également adoptés par tous les clients sans effort de configuration supplémentaire, vous devez désactiver le serveur DHCP de la Fritzbox et configurer un serveur DHCP alternatif sur l'ordinateur de la Fritzbox. Raspberry Pi Installer :

sudo aptitude install isc-dhcp-server

La configuration s'effectue ensuite via le fichier /etc/dhcp/dhcpd.conf réalisé. Comme ce point est également bien documenté par des commentaires, je n'aborderai ici que les points les plus importants :

option domain-name-servers 192.168.0.10 ; // IP de notre cache DNS
subnet 192.168.0.0 netmask 255.255.255.0 {
plage 192.168.0.70 192.168.0.100 ;
option domain-name-servers 192.168.0.10 ;
option nom de domaine "fritz.box" ;
option routeurs 192.168.0.1 ;
option adresse de diffusion 192.168.0.255 ;
default-lease-time 600 ;
max-lease-time 7200 ;
}

Cela donne à tous les clients DHCP une IP entre 192.168.0.70 et 192.168.0.100 et les données correctes nécessaires pour utiliser le cache DNS sur le Raspberry Pi. La résolution DNS des domaines déjà visités s'effectue en 2 millisecondes (ce qui correspond à deux fois le ping dans mon réseau).

Cache DNS sur Raspberry Pi - Conclusion

Cela peut ne pas sembler important pour la plupart des gens, mais pour un gros utilisateur comme moi, cela fait une différence si la résolution DNS est plus rapide de quelques millisecondes. Le plus grand avantage : la navigation est plus "vive", en particulier sur les sites web que vous visitez plus souvent et où les données DNS sont en sécurité dans le cache. J'ai fixé la durée minimale du cache à un jour et la durée maximale à une semaine. Si un site web change d'adresse IP, ce qui est le cas lorsqu'un serveur est déplacé, par exemple. Dans ce cas, le cache de pdnsd doit être réinitialisé.

Découverte incidente : le Raspberry Pi peut fonctionner de manière stable sur le port USB de la Fritz!Box 7490, de sorte qu'un bloc d'alimentation séparé pour le petit ordinateur n'est pas nécessaire pour cette configuration. Une autre utilisation ou extension possible de cette configuration est la Utilisation du Raspberry Pi comme serveur Privoxy dans le réseau domestique.

[amazon box="B07ZV9C6QF"]

12 commentaires

  1. Est-il possible d'écraser des entrées DNS individuelles ? Je voudrais que le Raspberry résolve certains domaines avec des IP locales. Les Fritz!Box sont toutes confrontées à des problèmes de performance lorsque la cible renvoie vers elle-même (bouclage NAT).

  2. Merci pour ces brèves instructions. Le DNS fonctionne à merveille. Qu'en est-il du DHCP ? Dois-je toujours me connecter au routeur ? Comment le Raspberry Pi reconnaît-il que je dois utiliser le DHCP dès que je me connecte au routeur (j'ai un vieux Speedport) ?

    1. Vous devez configurer le routeur pour qu'il distribue le Raspberry Pi comme serveur DNS dans la réponse DHCP pour les clients. Je ne laisserais pas le Pi lui-même fonctionner via DHCP, mais je lui donnerais une adresse IP fixe comme le routeur lui-même.

      L'adresse IP vers "l'extérieur" est toujours dynamique de toute façon, vous ne pouvez pas la définir. Mais ça n'a pas d'importance avec cette configuration.

  3. Est-il possible d'utiliser le logiciel Fritz!Box avec votre routeur ? Cela est probablement possible avec certains modèles plus anciens. Alors vous pourriez le mettre en place. C'est l'une des raisons qui m'ont poussé à passer du routeur Speedport de Telekom loué à la Fritzbox.

  4. Bonjour !

    J'ai configuré pdnsd comme indiqué. Cependant, j'ai observé le phénomène suivant.
    Si je déclenche une résolution dns avec "dig domain", j'obtiens généralement un résultat entre 150-300ms comme première valeur. Si je résous à nouveau le même domaine en utilisant "dig domain", la valeur est de 5-10 ms, comme je l'espérais.
    Jusqu'à présent, tout va bien !
    Mais si je saisis maintenant un nom de domaine dans le navigateur et que je le résous avec "dig domain", la valeur est à nouveau de 150 à 300 ms. Pourquoi ça ? La résolution par le navigateur aurait dû être mise en cache ????.

    Merci d'avance !

    1. C'est exact, en fait les requêtes du navigateur doivent aussi passer par le serveur DNS. Quoi d'autre pourrait être : vous "creusez" domain.de, mais dans le navigateur vous appelez http://www.domain.de techniquement parlant, ce sont deux choses différentes, http://www.domain.de pourrait pointer vers une autre IP.

  5. Qu'est-ce que c'est censé faire exactement ? Les entrées DNS dans le serveur de noms ont des TTL de 3600 secondes (1h) pour la plupart. Comme la plupart des gens ne vident pas leur cache DNS plus fréquemment (par exemple en redémarrant le système), un cache sur la carte SD ne sert à rien. Et si vous ignorez le TTL et que vous le mettez en cache plus longtemps, vous courez le risque de mettre en cache des adresses IP périmées. L'objectif des TTL est précisément d'avoir une date d'expiration pour les entrées DNS.
    Quiconque possède un routeur raisonnablement moderne dispose également d'un cache DNS et quiconque mesure le temps de résolution constatera qu'une deuxième requête identique reçoit une réponse inférieure ou égale à 1 msec, c'est-à-dire directement à partir du cache du routeur.
    La seule raison pour laquelle vous voudriez utiliser un serveur DNS sur le Raspberry Pi serait d'avoir un résolveur compatible DNSSEC à la maison ou de gérer votre propre zone DNS, pour laquelle je n'utiliserais certainement pas un Raspberry Pi 😉 .

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *