AdGuard Home
Guide pas à pas pour installer et configurer AdGuard Home en tant que serveur DNS.
Last updated
Was this helpful?
Guide pas à pas pour installer et configurer AdGuard Home en tant que serveur DNS.
Last updated
Was this helpful?
On ne présente plus , serveur DNS et DHCP open source qui permet (en pratique) de minimiser les flux réseaux inutiles voire néfastes sur votre réseau local (publicité, tracking, malware...). AdGuard Home est tout simplement un concurrent, open source également. Ayant récemment acquis un nouveau routeur plus "flexible", j'en ai profité pour installer AdGuard Home. Je vais tâcher de vous décrire au mieux, étape par étape, l'intégration de cet outil dans mon environnement.
: serveur DNS / DHCP open source (abrégé AdGuard dans cet article)
: qui permet d'interagir avec Docker via une interface de gestion / administration dédiée. Utile pour vérifier via un UI ce que les commandes que l'on exécute avec la CLI.
: qui est le socle pour faire tourner le reste. Ainsi que docker-compose que nous utiliserons dans ce déploiement pour des raisons techniques.
Une box internet dans laquelle vous pouvez personnaliser la configuration DHCP et choisir le serveur DNS de votre choix. Si, comme dans mon cas (SFR NB6) ce n'est pas possible, il vous faudra faire l'acquisition d'un routeur qui vous le permet ou bien de vous amuser (spoiler: ça n'est pas marrant du tout) à configurer tous vos périphériques manuellement.
Un serveur opérationnel avec Docker, docker-compose et idéalement Portainer. Je vous invite à consulter mon pour cela.
Je ne vais pas vous faire l'affront de vous expliquer comment brancher une box internet, mais j'en profite pour une précision : je vais, dans le cadre de cet article, expliquer l'intégration dans mon environnement (à savoir box internet + routeur dédié). Par chance, il s'agit du cas "compliqué" et dans le cas où vous auriez simplement une box avec une interface d'administration plus flexible vous pourrez facilement adapter la configuration.
Ce ne sera jamais assez dit, mais dès que cela est possible : préférez toujours une connexion Ethernet à une connexion Wi-Fi.
Dans mon cas, la box (ADSL) est raccordée normalement, mon routeur dédié (port WAN) est branché en Ethernet à la box (port LAN) et mon serveur qui tourne Docker est branché à un port LAN du routeur dédié.
La particularité dans mon cas est que l'interface d'administration de ma box (SFR NB6) est aussi flexible qu'un Mr.Freeze au sortir du congélateur. Je ne peux ni configurer un serveur DNS de mon choix, ni choisir mon propre adressage réseau. Les actions à faire sont simples et rapides :
Je repère le subnet utilisé par ma box (192.168.1.0/24) ainsi que l'adresse IP de la box (192.168.1.1)
Je désactive la fonction DHCP de ma box.
Côté WAN, je défini une IP statique pour mon routeur. Je sais que ma box possède l'IP 192.168.1.1 et qu'il n'y a aucun autre périphérique sur le réseau. L'IP 192.168.1.2 fera donc très bien l'affaire. La gateway dans notre cas sera donc notre box : 192.168.1.1.
Côté LAN du routeur dédié, j'active le serveur DHCP (c'est normalement le cas par défaut) et je vais modifier la configuration.
Dans mon cas, j'ai choisi un subnet en /24 (en l'occurence 192.168.76.0/24) que je vais diviser en 2 ranges d'IP:
Un range qui sera dédié aux IP allouées dynamiquement par le routeur : 192.168.76.2 à 192.168.76.126.
Un range qui sera dédié aux IP que j'aurai l'occasion d'allouer manuellement (principalement à des conteneurs) : 192.168.76.128 à 192.168.76.254.
L'IP 192.168.76.127 sera statique et toujours allouée à mon serveur (celui qui exécute les conteneurs). C'est pour cela qu'elle est exclue des ranges.
Les infos de ce réseaux sont :
192.168.76.0/24 : le subnet
192.168.76.1 : l'IP du routeur
192.168.76.255 : l'IP de broadcast
Ce n'est pas visible sur cette copie d'écran, mais c'est aussi sur ce panneau de configuration que nous pourrons personnalsier le DNS au moment venu.
Je ne vais pas rentrer dans les détails sur cette partie car je ne suis pas assez calé, mais retenez simplement qu'AdGuard ne peut pas être déployé comme n'importe quel conteneur.
Pour ceux qui en veulent un tout petit peu plus : Docker créer une couche d'abstraction au niveau réseau. Si nous déployons AdGuard comme n'importe quelle autre application conteneurisée, cette dernière verrait toutes les requêtes arriver d'une seule et même IP, elle même "virtualisée" par Docker et cela nous priverait donc de beaucoup de fonctionnalités au niveau d'AdGuard.
Les commandes sont très simples (en root
évidement) :
Créer une configuration macvlan
:
docker network create --config-only --subnet 192.168.76.0/24 --gateway 192.168.76.1 --ip-range 192.168.76.128/25 -o parent=eno1 macvlan_config
. Vous devez personnaliser le nom de votre interface Ethernet physique dans cette commande, il s'agit de l'interface de votre serveur qui est connectée à votre routeur.
Vous pouvez commencer par pull l'image Docker d'AdGuard : docker pull adguard/adguardhome.
Je préfère pull via le Terminal plutôt que via l'interface de Portainer car cela permet de voir où en est le téléchargement et de taguer correctement l'image.
Ensuite il n'y a plus qu'à déployer le docker-compose.yml
ci-après : prenez soin de changer correctement le nom du réseau local_macvlan
si vous n'avez pas choisi le même que moi et de choisir l'IP qui vous convient pour ce conteneur.
Sur l'interface d'administration de votre routeur, il faut que vous indiquiez qu'AdGuard est votre serveur DNS. Le nom de la section dans laquelle cette configuration se fait peut varier :
DHCP settings
LAN settings
Vous devriez trouver. Dans mon cas, la configuration se fait dans la section LAN Settings
puis DHCP Server
de mon routeur. Il n'y a qu'à renseigner l'IP d'AdGuard en face de Primary DNS
. Pour le Secondary DNS
, je vous conseille de spécifier celle d'un DNS public connu et fiable (Cloudflare dans mon cas).
Voici les sources qui m'ont largement aidé à réaliser cette installation :
Je suis incontestablement une bille dans ce domaine donc il n'est pas improbable que je dise 2-3 énormités mais tant pis. Si jamais : j'ai une adresse et j'aime bien être aiguillé quand je fais fausse route.
Créer un réseau basé sur cette configuration :
docker network create -d macvlan --scope local --config-from macvlan_config local_macvlan
Le scope choisi ici est bien local
. La raison pour cela est que si nous créeons ce réseau dans le scope d'un swarm, il nous sera impossible d'allouer une IP statique à notre conteneur AdGuard ; hors nous allons avoir besoin d'une IP statique pour le service AdGuard. Remarque : il y a probablement d'autres possibilités sans avoir recours à cette solution et en passant par un load-balancer (type ).