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#
- Télécharger et exécuter le logiciel Rasberry Pi Imager.
- Insérer une carte SD dans votre ordi (ou un lecteur).
- Cliquer sur le bouton "Choisissez l'OS".
- Aller dans "Raspberry Pi OS (other)".
- Choisir "Rasbperry Pi OS Lite (32-bit)".
- Cliquer sur Stockage et sélectionner sa carte SD.
- Cliquer sur "Écrire".
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 :
-
Créer un fichier vide appelé
ssh
touch ssh
-
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
-
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
). -
Créer un fichier pour le moment vide, appelé
userconf.txt
touch userconf.txt
-
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
-
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 estpi
, 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
-
Sauvegarder (
Ctrl
+o
sur nano), valider le nom du fichier (Entrée
) et quitter l'éditeur (Ctrl
+x
sur nano). -
Insérer la carte SD dans le Raspberry Pi.
-
Brancher le Raspberry au réseau.
-
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#
- Interface web administrateur : on peut laisser les choix par défaut.
- Serveur DNS : pareil, on laisse les choix par défaut.
- Authentification : choisir un nom d'utilisateur et un mot de passe, qui serviront à l'administration de votre AdGuard.
- Configurer vos appareils : on peut passer directement à l'étape suivante.
- Félicitations : ok cool merci.
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.
- Se connecter à l'interface de la box (ou du routeur).
- Changer les DNS (sur la Freebox par exemple ça se trouve dans Paramètres de la Freebox, Mode avancé, DHCP, et là on peut préciser l'adresse IP du Rasberry dans "Serveur DNS 1").
⚠️ 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#
- Paramètres généraux : la première option est activée par défaut, c'est ce qui permet de filtrer les publicités et contenus dangereux. On peut aussi activer toutes les options suivantes, à vous de voir. On laisse le journal (log) actif, ce qui permet de pouvoir remonter à l'origine d'une connexion indésirée, un jour, si besoin.
- Paramètres DNS : par défaut AdGuard utilise le fournisseur de DNS "Quad9" dans un mode sécurisé (DOH, pour DNS-over-HTTPS). Ce mode DOH permet d'éviter que votre fournisseur d'accès Internet, ou tout autre acteur, sache constamment sur quels sites vous allez.
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#
- Aller dans Filtres > Liste de blocage DNS
- Cliquer sur "Ajouter liste de blocage"
- Cliquer sur "Choisir dans la liste"
- Perso j'ai activé :
- 1Hosts (Lite)
- Dan Pollock's List
- OISD Blocklist Basic
- Peter Lowe's Blocklist
- Steven Black's List
- WindowsSpyBlocker - Hosts spy rules
- Malicious URL Blocklist (URLHaus)
- Cliquer sur "Enregistrer"
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 !