Tuto pour installer AdGuard, un bloqueur de publicités et de traceurs, sur l'ensemble d'un réseau local.

Installer AdGuard sur Raspberry Pi#

J'ai un Raspberry Pi assez vieux (Raspberry Pi Model B Rev 2) abandonné dans une petite caisse en plastique et je me suis dit, damned, pourquoi ne pas l'utiliser comme bloqueur de pub, voir de contrôle parental basique, pour toute la famille ? Et c'est ainsi que j'ai décidé d'y installer non pas Pi-hole mais AdGuard.

Ah, et je précise que ce tuto n'est pas forcément adapté aux grand(e)s débutant(e)s.

DNS ? Oui, on va parler DNS dans ce tutorial, c'est quoi un DNS ? DNS est un « système de noms de domaine ». C'est le système qui permet de relier un nom de domaine (une adresse genre caramail.com, lol) à une adresse physique IP (dans notre exemple de caramail, son adresse IP est 82.165.229.87). Souvent, on peut comparer le DNS à un annuaire téléphonique, qui relie une ligne téléphonique à son titulaire.

AdGuard ? J'ai choisi AdGuard qui est un "logiciel réseau" destiné à bloquer les publicités, le suivi et qui protège d'avantages la vie privée (avec notamment du DOH, voir plus bas). On peut aussi activer un mode qui permet de bloquer des sites non destinés aux enfants. Après l'avoir configuré, il couvrira TOUS nos appareils domestiques branchés sur le réseau.

Et on y va pour le tuto!

Copier l'OS sur une carte SD#

Laisser la carte SD dans le lecteur à la fin, on doit y ajouter quelques fichiers (voir chapitre suivant).

Préconfigurer le Raspberry Pi#

On veut pouvoir se connecter à notre serveur Raspberry Pi via SSH plus tard (donc via la ligne de commande).

On ouvre un terminal à la racine de la carte SD.

Attention ⚠️ il faut ouvrir un terminal dans bootfs/ (et non pas rootfs/), puis :

  1. Créer un fichier vide appelé ssh

    touch ssh
  2. Générer un hash (SHA-512) à partir du mot de passe de son choix. La commande qui suit demande la saisie d'un mot de passe. Saisir ce mot de passe et le retenir (ou le stocker dans un gestionnaire de mots de passe). C'est ce mot de passe dont on se servira pour se connecter à notre Raspberry.

    openssl passwd -6
  3. Une fois le mot de passe saisi deux fois, la fonction de hachage affiche le hash correspondant à notre mot de passe. Copier ce hash. (Pour info il ressemble à un truc genre $6$GHGtb5iUEYqBSRwYvcUnOj.4X.qaFPJc3WFM9pVW/0NIdAQKH1).

  4. Créer un fichier pour le moment vide, appelé userconf.txt

    touch userconf.txt
  5. Ouvrir ce fichier userconf.txt avec l'éditeur (en ligne de commande) de votre choix (nano, vim, etc.). Sur ma machine j'ai nano, donc je lance :

    nano userconf.txt
  6. Insérer une ligne au format nom utilisateur:hash de mot de passe. Par exemple si j'ai envie d'avoir un utilisateur dont le nom est pi, et dont le hash de mot de passe (récupéré à l'étape 3) est $6$GHGtb5iUEYqBSRwYvcUnOj.4X.qaFPJc3WFM9pVW/0NIdAQKH1, je vais insérer la ligne suivante (mais ce n'est qu'un exemple, car chaque hash est unique) :

    pi:$6$GHGtb5iUEYqBSRwYvcUnOj.4X.qaFPJc3WFM9pVW/0NIdAQKH1
  7. Sauvegarder (Ctrl + o sur nano), valider le nom du fichier (Entrée) et quitter l'éditeur (Ctrl + x sur nano).

  8. Insérer la carte SD dans le Raspberry Pi.

  9. Brancher le Raspberry au réseau.

  10. Démarrer le Raspberry.

Trouver le Raspberry sur le réseau#

Ouvrir un terminal sur un ordi branché au même réseau que le Raspberry Pi.

Essayer de ping le nom d'hôte (hostname) du Raspberry :

ping raspberrypi.local

Selon la vitesse du processeur du Raspberry, il sera plus ou moins rapidement visible sur le réseau (Le mien est assez vieux et il met pratiquement 2-3 minutes à être joignable). Lorsqu'il est visible, vous le verrez grâce à l'affichage de son adresse IP.

Se connecter en SSH sur le Rasbperry#

On se connecte au Raspberry depuis un ordi du réseau, via SSH, en lançant la commande ssh VOTRE_LOGIN@raspberrypi.local. Dans mon exemple j'ai créé un utilisateur appelé pi (cf étape 6 du chapitre "Préconfigurer le Raspberry Pi"), donc je vais pouvoir me connecter au Raspberry en faisant :

ssh pi@raspberrypi.local

Lors de la première connexion, il est normal que SSH nous dise que "The authenticity of host 'raspberrypi.local' can't be established" et "Are you sure you want to continue connecting", on tape les trois caractères yes sur le clavier et on valide. (Notre ordi ne nous redemandera plus de confirmer l'identité du serveur, le Raspberry, la prochaine fois.)

Puis SSH nous demande le mot de passe. C'est le mot de passe que nous avons défini (et noté) à l'étape 2 (cf chapitre "Préconfigurer le Raspberry Pi").

Si le mot de passe est le bon, le Raspberry nous retourne quelques informations (version du Raspberry OS) et on obtient surtout un prompt, c'est à dire une invite de commande.

Dans mon cas, j'ai l'invite de commande suivante :

pi@raspberrypi:~ $ 

C'est que je suis bien connecté au Rasberry Pi, et que je peux y faire ce que je veux !

Mise à jour des paquets du Raspberry#

Toujours via un SSH ouvert sur le Rasberry (cf chapitre "Se connecter en SSH sur le Rasbperry")

Mettre les paquets du Raspberry OS à jour, via un classique :

sudo apt update && sudo apt upgrade

La première mise à jour va prendre un certain temps, surtout avec un Rasbperry aussi vieux respectable que le mien.

Une fois la mise à jour faite, on peut redémarrer notre Rasberry, ça mange pas de pain et ça permet potentiellement d'utiliser un noyau Linux plus récent.

sudo reboot

Choix du fuseau horaire du Raspberry#

Notre Rasberry n'est pas forcément sur le bon fuseau horaire, pour le savoir afficher la date du jour :

date

Si la date n'est pas bonne, ouvrir le "logiciel de configuration Raspberry Pi" (Raspberry Pi Software Configuration Tool (raspi-config)), via la commande :

sudo raspi-config

On peut y configurer le fuseau horaire (timezone), en allant dans Localisation Options > Timezone puis en choisissant le continent et une ville.

Puis on quitte ce logiciel, via "Finish".

Installation de AdGuard#

En suivant le process indiqué sur le repo de AdGuard, depuis le Raspberry (cf étape précédente), je lance la commande :

curl -s -S -L https://raw.githubusercontent.com/AdguardTeam/AdGuardHome/master/scripts/install.sh | sh -s -- -v

On laisse le script faire le boulot, c'est magique. Puis à la fin on nous dit que :

AdGuard Home is now installed and running
you can control the service status with the following commands:
sudo /opt/AdGuardHome/AdGuardHome -s start|stop|restart|status|install|uninstall

Et juste en dessous de ces lignes, on regarde bien ⚠️ on a le port sur lequel on va pouvoir accéder à l'interface web (la page web) de AdGuard.

Par exemple, sur mon ordi, AdGuard m'a dit ceci à la fin de son installation :

AdGuard Home is now available at the following addresses:
2023/03/24 09:58:14 [info] go to http://127.0.0.1:3000
2023/03/24 09:58:14 [info] go to http://[::1]:3000
2023/03/24 09:58:14 [info] go to http://192.168.1.14:3000

C'est que je vais pouvoir me connecter sur le port 3000 de mon raspberry, à partir de mon navigateur web.

Ouvrir un navigateur web sur un de ses ordis connecté au réseau, et taper l'adresse du raspberry (adrese IP ou son hostname raspberrypi.local) suivi de deux points : et du port utilisé (3000 en général, voir étape précédente)

http://raspberrypi.local:3000

Ce qui m'affiche une page web "Bienvenue sur AdGuard Home", yeah !

Installation web de AdGuard#

Connexion à l'interface web de AdGuard#

Désormais on peut se connecter directement à l'adresse suivante :

http://raspberrypi.local/

Puis saisir votre identifiant et mot de passe, tels que définis à l'étape "Installation web de AdGuard".

Utiliser AdGuard#

Et oui, l'installer et le configurer, c'est chouette. Mais faut-il aussi l'utiliser en tant que nouveau serveur DNS, pour l'ensemble de notre réseau.

Attribuer au Rasberry Pi une adresse IP fixe#

Pour cette partie, tout dépend de notre réseau. Est-ce qu'on a un routeur indépendant ? Est-ce qu'on a juste une box Internet (qui fait donc office de routeur) ? Ce qui est sûr, c'est qu'il faut se connecter à l'interface de son routeur, y trouver le Raspberry Pi, et lui attribuer une adresse IP fixe.

C'est très important que cette adresse IP soit fixe dans le réseau, car le routeur va bientôt solliciter le Rasberry pour chaque requête, ou plus exactement à chaque fois qu'on va solliciter un nom de domaine, un "site internet", pour faire simple.

Donc on y va, on se connecte au routeur et on attribut un "bail statique", une adresse IP fixe, au Rasberry Pi.

Dès que cette adresse IP est attribuée, on redémarre le Rasberry, via SSH :

sudo reboot

Dès que le Rasberry aura redémarré, faire un ping dessus depuis un ordi du réseau, et vérifier que l'IP affichée soit la bonne :

ping raspberrypi.local

Utiliser AdGuard comme serveur DNS#

Pour que AdGuard puisse filter toutes les requêtes du réseau, on doit utiliser l'adresse IP du Raspberry qui l'héberge en tant que serveur DNS du routeur ou de la box Internet.

⚠️ Si la box (ou routeur) gère les DNS IPv6, il faut bien penser à y mettre également l'adresse IPv6 du Raspberry, sinon on aura encore des "fuites" de requêtes DNS qui ne passeraient pas par AdGuard, ce qui serait fâcheux. Pour retrouver facilement cette adresse IPv6 du Raspberry, on peut se connecter à l'interface web (cf "Connexion à l'interface web de AdGuard") puis aller dans l'onglet "Guide d'installation" et de noter l'avant dernière IP listée, exemple d'adresse : 2a01:e0a:51f:a1e0:9fd4:51c1:e:6cd

Pour appliquer les modifications les appareils (ordis, smartphones, etc) doivent être déconnectés puis reconnectés au réseau pour redemander un bail DHCP. Mais pour gagner du temps, on redémarre juste la box (ou le routeur), ce qui forcera les appareils à renouveler leur bail et à utiliser le nouveau serveur DNS de votre réseau (AdGuard).

Quelques réglages sur AdGuard#

Tableau de bord#

Belle vue d'ensemble sur ce qui est bloqué, autorisé, on a même des graphiques, c'est comme dans un film, sauf que c'est pour de vrai. Hum.

Paramètres#

Avoir un fournisseur DNS c'est chouette, mais rien ne nous empêche d'en rajouter un deuxième, pour bénéficier de l'équilibrage de charge (load balancing). On peut donc, par exemple, parmi la grande liste proposée par AdGuard, choisir les DNS d'AdGuard (qui propose un blocage des pubs, du tracking et du pishing) ou ceux de l'association French Data Network :

https://dns.adguard-dns.com/dns-query
https://ns0.fdn.fr/dns-query
https://ns1.fdn.fr/dns-query

Ne pas oublier de cliquer sur le bouton "Appliquer", plus bas, pour sauvegarder ce changement.

Liste de blocage#

Voilou#

AdGuard est puissant, y'a beaucoup d'options, je ne vais pas tout détailler ici, mais je pense qu'on aura capté ses fonctionnalités de base.

Bons réglages !

This page was last edited on , generated from this markdown. Content is available under the Creative Commons CC BY-SA 3.0 License unless otherwise noted. This site is ad-free and contains no third party cookies or tracking, just as the Web should remain.
HomepageBack to top