GNU/Linux >> Tutoriels Linux >  >> Linux

Pi-Hole - Le triangle DNS

L'Internet moderne est un endroit assez ennuyeux. Très souvent, des activités innocentes comme la lecture de texte ou le visionnage de vidéos sont interrompues par des messages promotionnels mieux connus sous le nom de publicités. Ce ne serait pas un problème si les publicités étaient pertinentes, opportunes ou non intrusives, mais malgré de nombreux "progrès" en matière d'intelligence artificielle, d'apprentissage en profondeur et d'autres mots à la mode, elles n'en sont pas. Ensuite, nous avons la vie privée et ainsi de suite.

La bataille entre les diffuseurs de publicités et les bloqueurs de publicités fait rage. Cela s'intensifie également lentement, car de plus en plus de personnes se retournent contre le modèle publicitaire agressif en face à face. Pour la plupart, si vous utilisez une extension de blocage des publicités dans votre navigateur, vous êtes prêt. Mais alors, vous êtes à la merci de la société de navigation et de ce qu'elle autorise, et cela ne fonctionne pas toujours dans tous les navigateurs et/ou systèmes d'exploitation. La solution consiste à compléter les requêtes réseau bloquées aux serveurs publicitaires, et c'est ce que fait Pi-Hole. Passons en revue.

Démarrer

Pi-Hole est un trou noir pour les annonceurs Internet. Il s'agit d'un ensemble d'outils logiciels qui bloqueront les requêtes DNS vers les domaines identifiés comme étant des annonces publicitaires afin que vos sessions de navigation - ou toute activité sur Internet d'ailleurs - n'incluent jamais de publicité. Il s'agit d'une solution au niveau du réseau et, en tant que telle, elle devrait fonctionner pour tous les scénarios. Les avantages, outre la réduction du bruit, incluent également la réduction du volume de trafic, l'amélioration de la confidentialité et ainsi de suite.

Cela m'a intrigué et j'ai décidé de configurer Pi-Hole. Maintenant, en général, Pi-Hole est conçu pour être utilisé comme un appareil. Comme son nom l'indique, vous voudrez peut-être utiliser un appareil Raspberry Pi bon marché, installer Pi-Hole dessus, puis l'utiliser comme filtre réseau. C'est là que réside le problème numéro un - vous avez besoin d'une certaine compréhension de la mise en réseau pour pouvoir configurer Pi-Hole correctement. Dans l'ensemble, une solution Pi-Hole complète couvre :

  • Configuration d'un appareil qui exécutera le logiciel Pi-Hole - il peut s'agir d'un système dédié sur votre réseau, ou vous pouvez configurer Pi-hole sur n'importe quelle machine exécutant Linux. Par exemple, si vous avez quelques ordinateurs portables ou de bureau Linux, chacun peut être son propre filtre réseau.
  • L'étape suivante consiste à configurer Pi-Hole en tant que serveur DNS - Essentiellement, nous naviguons en utilisant des noms de domaine plutôt que des adresses IP. Les humains trouvent beaucoup plus facile de se souvenir de quelque chose comme dedoimedo.com ou example.com qu'une séquence de nombres comme 1.2.3.4 ou similaire. Cela se fait via le service de résolution du système de noms de domaine (DNS), qui effectue la traduction des noms lisibles par l'homme en nombres. Pi-Hole peut appliquer ses règles de filtrage à ce stade - s'il identifie une demande à une adresse qu'il considère appartenir à l'un des annonceurs Internet, il peut alors abandonner cette demande, et ainsi ce contenu ne sera jamais servi. Bien sûr, cela peut également inclure des faux positifs.
  • La dernière étape consiste à configurer d'autres systèmes pour utiliser Pi-Hole comme serveur DNS - Encore une fois, cela nécessite une certaine connaissance de la mise en réseau. Mais cela s'applique en fait à n'importe quel système d'exploitation. Alors que l'appliance Pi-Hole doit être Linux, n'importe quelle machine peut voir sa configuration DNS modifiée pour utiliser l'appliance, et à partir de ce moment, Pi-Hole sera l'intermédiaire, filtrant les requêtes réseau.

Vous devez donc vous rappeler que tout ce qui précède nécessite une expertise. Vous ne pouvez pas simplement brancher et jouer une solution de cette nature dans votre configuration. Mais si vous avez un ami ringard, il pourra peut-être le faire pour vous. Quant à savoir si c'est simple ou compliqué, eh bien, continuons.

Assistant d'installation

J'ai téléchargé le script et l'ai exécuté. Vous obtenez un assistant textuel relativement simple à suivre. J'ai exécuté ceci sur KDE neon, et il n'a installé que des logiciels à partir des référentiels système, à l'exception de ses propres composants, qui proviennent de GitHub.

Vous devez indiquer à Pi-Hole quel DNS utiliser. Par exemple, vous pouvez utiliser votre propre routeur, qui est généralement celui que les systèmes Linux utiliseront, quelque chose comme 192.168.1.1 ou 192.168.2.1 ou similaire. Les choses sont un peu plus difficiles à comprendre avec systemd en place maintenant, mais nous y arriverons. Vous avez également la possibilité d'utiliser certains des DNS Internet existants (comme Google ou CloudFlare). J'ai décidé de commencer avec ma configuration personnalisée.

Comme tout adblocker, Pi-Hole utilise des listes pour bloquer les publicités. C'est le maillon le plus fort et le plus faible de la solution, car si les listes ne sont pas à jour, s'avèrent inexactes ou mal faites, vous pourriez avoir des lacunes ou des faux positifs, où des domaines légitimes seront rejetés. Mais d'ailleurs, ce n'est pas différent du blocage des publicités via les extensions de navigateur, sauf que c'est un peu plus approfondi, donc agressif. La plupart des extensions de navigateur appliquent des règles uniquement aux domaines tiers, de sorte que les chances que le domaine attendu ne se comporte pas sont relativement faibles. Pi-Hole est censé être infaillible, ce qui signifie qu'il pourrait empêcher le chargement de sites légitimes.

L'interface utilisateur Web semble être une bonne chose. Je l'ai fait configurer.

Et c'était tout. Soi-disant, Pi-Hole a été installé et configuré, et je pourrais l'utiliser maintenant.

Cela a-t-il fonctionné ?

Non. Je n'avais pas de connexion Internet - échec de la résolution de nom. Mon système local - neon - s'utilisait lui-même comme son DNS (ou plutôt le Pi-Hole installé, qui utilisait le routeur), mais il semblait que Pi-Hole ne fournissait pas son service de résolution.

Le problème à ce stade est que vous ne pouvez pas vous connecter car vous n'avez pas Internet, donc si vous voulez rechercher des réponses, vous avez besoin d'une autre machine. J'ai essayé de désinstaller Pi-Hole, et c'était une solution simple et propre, et la connectivité a été instantanément restaurée. Je l'ai réinstallé et j'ai obtenu les mêmes résultats.

J'ai décidé d'essayer quelques vérifications en ligne de commande. Pi-Hole est livré avec plusieurs commandes qui vous permettent de l'activer, de le désactiver, de démarrer le service de résolution de noms, de vérifier l'état, etc. Il s'avère que j'avais un problème avec quelque chose appelé pihole-FTL. Eh bien, d'accord.

pihole enable
[i] Activation du blocage
[✗] pihole-FTL :aucun processus trouvé
[✓] Pi-hole activé

J'ai essayé d'exécuter pihole-FTL, mais il ne démarre pas. Eh bien, il s'avère que j'avais besoin de sudo. En regardant la documentation en ligne, les erreurs de configuration ne sont pas si bien documentées. Il semblerait donc que j'aie dépassé mon premier obstacle dans la configuration.

pihole-FTL
FATAL :L'ouverture du journal FTL (/var/log/pihole-FTL.log) a échoué !
Assurez-vous qu'il existe et qu'il est accessible en écriture par l'utilisateur neon

sudo pihole-FTL
FTL démarré !

Mais je n'avais toujours pas Internet. J'ai pensé que le service DNS était toujours en panne, alors j'ai essayé de le redémarrer.

pihole restartdns
[✗] Échec du démarrage de pihole-FTL.service :unité pihole-FTL.service introuvable.

À partir de l'erreur, j'ai pensé qu'il n'y avait pas de fichier d'unité pour démarrer le service FTL, ou qu'il était en panne. En cherchant en ligne, j'ai appris que le fichier de service devait être modifié. À savoir, sous /etc/init.d/pihole-FTL, j'ai dû modifier une ligne qui invoque FTL depuis :

su -s /bin/sh -c "/usr/bin/pihole-FTL" "$FTLUSER"

À cette ligne :

/usr/bin/pihole-FTL

Après cela, Pi-Hole a démarré sans erreur.

sudo pihole restartdns
[✓] Démarrage du service DNS

Pi-Hole ne bloquait pas les publicités

J'avais une connectivité, mais les publicités étaient là. Pi-Hole ne faisait aucun filtrage. J'ai donc décidé d'accéder à l'interface utilisateur Web et de voir si je pouvais y apporter des modifications et des ajustements. Mais quand j'ai essayé d'aller à l'adresse Pi-Hole, il n'y avait pas de serveur Web à l'écoute. Les adresses http://ip-address/admin et http://pi-hole/admin n'ont rien fait.

J'ai fait quelques tests supplémentaires sur la ligne de commande, et il s'est avéré que le service lighttpd ne fonctionnait pas, ce qui expliquerait pourquoi je n'avais pas l'interface utilisateur Web. Il était donc temps de faire un peu plus de sorcellerie, et encore une fois, la documentation était un peu clairsemée à ce sujet. J'ai rencontré plus d'erreurs :

sudo systemctl restart lighttpd.service
La tâche pour lighttpd.service a échoué car le processus de contrôle s'est terminé avec un code d'erreur. Voir "systemctl status lighttpd.service" et "journalctl -xe" pour plus de détails.

Cette fois, cependant, parce que j'avais Internet, j'ai pu effectuer une recherche en ligne et j'ai rapidement découvert la raison du problème. Le fil suivant m'a conduit à la bonne réponse - bien qu'il n'y ait RIEN dans les journaux d'erreurs qui indiquerait la solution. Et ici, je voudrais souligner, une fois de plus, la complexité indéchiffrable de systemd. J'ai dû rechercher des informations dans un journal binaire, et même alors, les informations étaient inutiles.

Il me manquait en fait un paquet - gamin - pourquoi il n'est pas installé en tant que dépendance tout de suite, aucune idée. Mais une fois que j'ai installé cela, lighttpd a très bien démarré et l'interface utilisateur Web était là pour que je puisse l'explorer.

sudo apt-get install gamin

systemctl status lighttpd.service
● lighttpd.service - Démon Lighttpd
Chargé :chargé (/lib/systemd/system/lighttpd.service ; activé ; préréglage du fournisseur :activé)
Actif :actif ( en cours d'exécution) depuis le jeu. 2019-05-09 15:34:03 CEST ; Il y a 2 s
Processus :19060 ExecStartPre=/usr/sbin/lighttpd -tt -f /etc/lighttpd/lighttpd.conf (code=exited, status=0/SUCCESS)
PID principal :19069 (lighttpd )
Tâches :6 (limite :4915)
CGroup :/system.slice/lighttpd.service
├─19069 /usr/sbin/lighttpd -D -f /etc/lighttpd/lighttpd .conf
├─19078 /usr/bin/php-cgi
├─19079 /usr/bin/php-cgi
├─19080 /usr/bin/php-cgi
├─19081 /usr/bin/php-cgi
└─19082 /usr/bin/php-cgi

Identifiant et mot de passe de l'interface utilisateur Web

Mais je n'avais toujours aucune publicité bloquée. J'ai donc essayé de me connecter et j'ai réalisé que j'avais un autre problème - je ne pouvais pas accéder à la page d'administration où je pouvais réellement vérifier tous les journaux et détails, et apporter des modifications. Encore une fois, en cherchant en ligne, j'ai découvert que je devais réinitialiser le mot de passe par défaut à partir de la ligne de commande :

pihole -a -p

J'ai ensuite eu accès aux paramètres de l'interface Web. C'est une interface vraiment agréable et puissante. Vous disposez de nombreuses options, y compris la possibilité d'arrêter temporairement Pi-Hole, donc si vous rencontrez des problèmes, plutôt que de tout changer, vous ne pouvez que suspendre le filtrage. Pas besoin de jouer avec les paramètres DNS.

Remplir les listes de blocage

Et en parcourant l'interface, j'ai réalisé que mes listes de blocage étaient toutes vides. Oui, cela ressort de la page principale, mais vous devez savoir ce que vous recherchez. Pourquoi Pi-Hole ne vous inviterait-il pas à mettre à jour les listes ou à le faire dans le cadre de la configuration ? J'ai exécuté une mise à jour manuelle à partir de la ligne de commande et les listes ont été générées.

pihole -g -f

D'accord, ça a marché ?

Oui, maintenant, ça fonctionnait enfin ! Pi-Hole faisait maintenant son devoir DNS et filtrait également le trafic. Je dois dire que c'était efficace et non intrusif. Et si je ne me trompe pas, il y a même eu une légère amélioration des performances côté réseau, car le système devait gérer moins de requêtes et servir moins de contenu. En effet, même avec une navigation innocente, 20% de toutes les requêtes ont été bloquées. Ça semble beaucoup. Mais cela met également en évidence la situation actuelle de l'Internet moderne. Le fait qu'il y ait plus de 100 000 domaines sur la liste noire raconte également sa part de cette triste histoire. Cela explique également la légère amélioration de la latence.

Conclusion

À la fin de la journée, j'avais Pi-hole en cours d'exécution, mais la configuration était loin d'être triviale. Il y avait quatre ou cinq problèmes cardinaux, et aucun de ceux-ci n'aurait dû se produire, car l'assistant d'installation aurait pu passer par des vérifications séparées pour s'assurer que tout fonctionnait. Une partie de la première exécution pourrait être la vérification du service, et s'il y a des problèmes là-bas, une sorte d'autodiagnostic pour s'assurer que FTL est opérationnel. Il en va de même pour le service Web. Ensuite, il y a la réinitialisation du mot de passe et la mise à jour de la liste. Tous ces éléments rendraient l'expérience beaucoup plus simple.

En tant que produit, Pi-Hole est un outil très agréable et puissant. Il fait extrêmement bien son travail, il est rapide, efficace et robuste, et l'interface utilisateur Web est bien conçue. Vous en gagnez également du côté du trafic, car il y a moins de contenu à servir et moins de requêtes à résoudre, d'où une amélioration des performances pour ce qui compte. La configuration n'est pas triviale mais elle est réalisable, et vous avez beaucoup de flexibilité dans la façon dont vous câblez votre réseau. Vous pourriez avoir Pi-Hole comme système autonome, ou il pourrait servir tous les différents appareils de votre maison. Dans l'ensemble, c'est l'arme apocalyptique pour si et quand Internet devient un voyou contre vous. Cela vaut la peine d'être testé, mais rappelez-vous la deuxième règle de la thermodynamique. Vous ne pouvez pas avoir du trivial et du complexe en même temps.


Linux
  1. Une introduction à l'éditeur vi

  2. Comment installer le résolveur DNS non lié sur Ubuntu 22.04

  3. Lancement sur le Rackspace Cloud

  4. Quels sont les types de serveurs DNS

  5. Qu'est-ce que l'utilitaire de ligne de commande DNS inversé ?

EasyOS 2.3 - Le smoking Prometheus moderne

Cockpit - Autoroute vers la zone administrative

Et la meilleure distribution de 2019 est ...

CentOS 8 Stream - la distribution streampunk

Revue Cairo Dock - Le quai est dans le détail

Sauvegarde du répertoire personnel - Le guide rapide et sale