Mettre en place un contrôle parental avec Pihole

pihole
Dernière mise a jour 22 Juil 2020 a 09:03 am

Si vous avez installé un Pihole dans votre réseau, vous avez sans doute vite apprécié ses qualités de bloqueur de pub. Si vous ne savez toujours pas ce qu’est pihole ,je vous invite à lire ce tuto pour pouvoir le tester.

Donc la suite de ce billet est pour ceux qui en utilisent déjà un dans leur réseau. Au risque de me faire traiter de despote, je vous partage ici une petite astuce pour mettre en place un contrôle parental « low cost » très facile à mettre en oeuvre.

En creusant un peu , les options du pihole, je me suis aperçu qu’il était possible de bloquer ou d’autoriser des domaines spécifiques en ligne de commande.

Exemple: blocage de facebook

Exécuter dans un terminal sur votre pihole:

pihole --wild facebook.com

Toutes les requêtes DNS qui comporteront un domaine avec le mot « facebook.com » seront bloquées. terriblement efficace! Le « –wild » signifiant « wildcard« .
Attention si vous testez tout de suite l’accès à facebook.com dans un navigateur, pensez bien avant à vider le cache de Firefox:

shift+ctrl+r pour vider

Pour autoriser à nouveau l’accès à facebook:

pihole --wild -d facebook.com

-d –delmode remove the domain from the list

Mais me direz-vous il est possible de faire la même opération en web dans le joli tableau de bord de pihole , avec 2 clics de souris . Pourquoi s’embêter avec de la ligne de bash ?

Planification des blocages et des autorisations des sites

Tout simplement , parce que l’astuce réside dans le fait de pouvoir planifier les autorisations et les blocages de domaines . Avec 2 simples lignes dans la crontab comme ceci:

 0 22 * * 1-5 /usr/local/bin/pihole --wild facebook.com snapchat.com && /usr/local/bin/pihole updateGravity
 0 08 * * 1-5 /usr/local/bin/pihole --wild -d facebook.com snapchat.com && /usr/local/bin/pihole updateGravity

Ces 2 lignes inscrites dans la crontab ont pour effet de bloquer temporairement l’accès à Facebook et snapshat de 22H à 08h du matin. Et cette règle est valable que vous ayez un smartphone , une tablette ou un pc.

Dans notre exemple, on vise deux réseaux sociaux. On pourrait rajouter instagram.com, twitter.com, nimporte quel domaine de votre choix: youtube, marmiton.fr, lequipe.fr etc…

Pour conclure

Cette technique est efficace mais je me rapproche clairement des méthodes crades de certains FAI.(dns menteurs). L’éthique en prend un coup! Mais bon en général on la revoit à la baisse quand on a des ados connectés H24 .

Je ne suis pas hyper fan du contrôle parental et pour être honnête je ne pensais pas un jour devoir en passer par là. Mais les addictions à nos écrans sont telles, que cette solution peut être salvatrice pour prendre l’habitude de déconnecter quand est venu l’heure de dormir. Et je m’inclus dedans 🙂

Evidemment, pour qui s’y connait un peu ce système est facilement contournable en changeant simplement d’adresse de résolveur .

17 commentaires sur Mettre en place un contrôle parental avec Pihole

  1. Bonjour,

    Je souhaite bloquer temporairement youtube entre 17h et 20h sur le pihole :

    0 22 * * 1-5 /usr/local/bin/pihole –wild facebook.com snapchat.com && /usr/local/bin/pihole updateGravity
    0 08 * * 1-5 /usr/local/bin/pihole –wild -d facebook.com snapchat.com && /usr/local/bin/pihole updateGravity

    J’ai donc recopié et remplacé facebook.com par youtube.com, seulement ca ne fonctionne pas.

    Si quelqu’un pourrait m’aider svp, merci.

    • bjr Dan,
      les lignes que tu as copiées dans ta crontab sont destinées à bloquer « facebook.com et snapchat.com » de 22h à 8h du mat. Si tu souhaites bloquer uniquement youtube entre 17h et 20h, ce serait comme ça:

      0 17 * * 1-5 /usr/local/bin/pihole –wild youtube.com && /usr/local/bin/pihole updateGravity
      0 20 * * 1-5 /usr/local/bin/pihole –wild -d youtube.com && /usr/local/bin/pihole updateGravity

  2. Essaye sans passer par la crontab , de taper directement dans le terminal du pihole:
    /usr/local/bin/pihole –wild youtube.com && /usr/local/bin/pihole updateGravity

    En suite , il faut être patient car ya un cache pour le dns. Si tu fais un:
    dig youtube.com
    Regarde la partie ANSWERsection et le chiffre affiché à côté de « youtube.com ». C’est le temps qu’est gardé en secondes dans le cache la réponse par le résolveur.
    exemple de réponse:
    ;; ANSWER SECTION:
    youtube.com. 28 IN A 172.217.18.206

    Ici donc c’est 28 secondes
    Renouvelle une requête dig et tu verras que ce chiffre diminue. Lorsqu’il arrive à 0 , cest que le cache est vide et youtube sera bloqué!
    (je viens de retester tt ca chez moi)

    • Salut,
      Merci pour votre aide

      Cette commande :
      /usr/local/bin/pihole –wild youtube.com && /usr/local/bin/pihole updateGravity

      C’est comme indiqué directement sur la console admin de Pihole sans passé par le terminal.

      Ca fonctionne mais bizarrement uniquement sur mon pc et pas dans l’ensemble de mon reseau; c’est-à-dire pas sur mon téléphone, apple tv etc

      Du coup, pour la plage d’heure bloquer temporairement de certains site, ca fonctionne comment ?

      Merci encore

      • il peut y avoir plusieurs raisons que le dns de pihole ne fonctionne que sur ton pc
        – assure toi que les autres machines chopent bien leur conf réseau via le dhcp (de la box ou du pihole); Sur ta box, T’as bien mis en dns primaire l’ip du hole et rien en dns secondaire?
        – Pour les objets connectés telles que la TV, elles ont bien souvent leur propre dns codé en dur. Pareil pr ton tel , sauf si cest un android alors la tu peux normalement forcer l’utilisation du dns de ton choix

        Le blocage des sites se fait via la tâche planifiée dans ta crontab, les requêtes sont répondues avec une adresse bidon de type 0.0.0.0

  3. Bonjour benzo,

    Merci de m’avoir répondu.

    J’ai laissé tombé pour les tâches planifiées. Ca ne fonctionne pas.

    Pour empêcher le petit de regarder youtube, je l’ajoute directement depuis la console admin de pihole et ainsi ca bloque immédiatement.

    Et je l’enlève après voilà quoi.

    Je ne comprends pas pourquoi ca ne fonctionne pas avec crontab quoi 🙁

Leave a Reply

Votre adresse de messagerie ne sera pas publiée.


*