J’ai finalement décidé d’utiliser mon serveur Pihole comme serveur DHCP. Il sera donc en charge d’attribuer les adresses IP sur mon réseau local, et se définira en même temps comme serveur DNS. De cette façon, tous les appareils du réseau bénéficieront du filtre anti-pubs de Pihole.
Je précise tout de suite que je suis en IPv4 pour la box comme pour mon LAN, et que IPv6 est désactivé sur la box (voir le commentaire d’Eliastik à ce sujet).
On verra en fin d’article que cela apporte pas mal d’informations sur ce qui se passe sur mon réseau local, j’ai fait des découvertes. 😮
Il aurait été plus simple de définir le serveur DNS au niveau de la box, mais Orange ne permet pas de changer ceux-ci, pour des raisons de VOIP apparemment. Autre problème avec cette box, le décodeur TV d’Orange doit obtenir son adresse de la box (un VLAN est créé semble-t-il), sinon plus de TV ! Ce sont d’ailleurs les deux gros reproches que l’on faire à Orange au niveau de sa box ! 🙁
Ce dernier problème m’a fait longuement fait hésiter à faire la manip, et puis finalement je me suis décidé à franchir le pas, car parfois le DNS IPv6 de la box (attribué lors de la requête DHCP) prenait le pas sur le DNS IPv4 (définit manuellement sur le PC pour pointer sur Pihole, voir cet article) sans que je sache vraiment pourquoi.
Il était temps de reprendre le contrôle…
Le décodeur TV
Avant d’activer le serveur DHCP de Pihole, il va d’abord falloir s’organiser pour que le décodeur d’Orange obtienne toujours son adresse IP de la box Orange.
Pour cela, on va faire deux choses : limiter au minimum le champ d’adresses disponibles sur la box, puis ajouter l’adresse MAC du décodeur dans la liste des adresses rejetées par le serveur Pihole.
Sur la box, il suffit d’aller dans l’interface de gestion, Configuration avancée, onglet DHCP, et de définir le « scope » comme suit (c’est un exemple) :
Redémarrer la box puis le décodeur, et vérifier que la TV fonctionne. Sur cette même page, récupérer l’adresse MAC du décodeur :
Reste à exclure cette adresse du serveur Pihole. De ce que j’ai lu, Pihole utilise un fork de dnsmasq
, on peut donc à priori utiliser ses fonctionnalités. J’ai donc créé un fichier 04-bypass.conf
dans /etc/dnsmasqd
comme suit :
C’est d’ailleurs ce qui est indiqué dans le fichier 01-pihole.conf
créé pendant l’installation :
FILE AUTOMATICALLY POPULATED BY PI-HOLE INSTALL/UPDATE PROCEDURE. ANY CHANGES MADE TO THIS FILE AFTER INSTALL WILL BE LOST ON THE NEXT UPDATE. ANY OTHER CHANGES SHOULD BE MADE IN A SEPARATE CONFIG FILE WITHIN /etc/dnsmasq.d/yourname.conf
Le serveur
On peut maintenant activer le serveur DHCP de Pihole (dans Settings), en s’assurant d’affecter un ‘range’ d’adresses différentes de celle de la box Orange, et en définissant cette dernière comme routeur :
Avant de redémarrer le serveur Pihole, il reste une chose importante à faire, c’est de lui assigner une adresse IP fixe. C’est normalement fait lors de l’installation de Pihole, et je ne sais pas trop où cette information est stockée.
J’ai toutefois procédé comme indiqué sur Raspbian, en renseignant le fichier /etc/dhcpcd.conf
. On trouve le nom des interfaces en faisant un ip link
, puis on définit ce que l’on souhaite :
interface eth0
static ip_address=192.168.1.18/24
static routers=192.168.1.1
static domain_name_servers=208.67.222.222 208.67.220.220
interface wlan0
static ip_address=192.168.1.17/24
static routers=192.168.1.1
static domain_name_servers=208.67.222.222 208.67.220.220
J’ai donc deux interfaces actives : eth0
pour ethernet, et wlan0
pour le wifi. Les deux serveurs DNS définis sont ceux d’OpendDNS. Au passage, le fichier pour le mot de passe wifi est /etc/wpa_supplicant/wpa_supplicant.conf
.
À ce stade, on peut redémarrer le serveur Pihole, et dans la foulée redémarrer le décodeur TV pour vérifier qu’il obtient toujours son adresse de la box, et que la TV fonctionne.
À toutes fins utiles, le service pihole s’appelle pihole-FTL, on peut donc le contrôler avec les commandes suivantes (avec « disable » on l’empêche de redémarrer au boot de la machine) :
$ sudo systemctl status pihole-FTL
$ sudo systemctl stop pihole-FTL
$ sudo systemctl start pihole-FTL
$ sudo systemctl disable pihole-FTL
$ sudo systemctl enable pihole-FTL
Si tout se passe bien, on peut passer au reste des appareils sur le réseau, à savoir mon PC desktop, un PC portable, mon smartphone BQ Aquaris, la TV, etc… Vérifier que tout se passe bien, et éventuellement assigner des baux fixes à chaque appareil :
Sur le PC, on peut vérifier en allant voir le fichier /var/lib/dhcp/dhclient.leases
:
On peut aussi forcer le renouvellement de notre adresse IP, ici sur mon portable, avec la commande dhclient -d -nw wlp2s0
(après avoir identifié le nom de l’interface wifi) :
Voilà, tout fonctionne comme attendu. Désormais, tous les appareils sur le réseau bénéficient de Pihole comme bloqueur de pub, c’est plutôt sympa :
On voit que mon serveur odroidhc2 est plutôt bavard : c’est normal, puisque j’ai installé dessus un serveur Nextcloud, et qu’il est accessible depuis internet via un proxy (voir l’installation de Nextcloud sur Openmediavault). Il s’agit en l’occurence de requêtes DNS déjà en cache.
Plus intéressant, on voit que le smartphone est celui qui est qui a le plus de requêtes bloquées !
Pourtant, j’utilise LineageOS, je n’ai aucune appli Google d’installées… Et à y regarder de plus près, un bon nombre de ces requêtes sont bloquées par Pihole ! Un peu inquiétant sur notre vie privée tout ça, je n’ose imaginer ce que fait un smartphone avec tous les services Google d’installés !
Mais il y a encore plus surprenant : Pihole offre des statistiques très intéressantes, et en allant dans « Long-term data – Top Lists », je vois que la TV Samsung est également très active :
La « Smart TV » est effectivement très smart… un peu trop à mon goût. 😉 Du coup, après quelques recherches pour comprendre ce qui se passe, je trouve une « Ad List » spécialement conçue pour filtrer les accès de ces Smart TVs. Voici le lien :
https://raw.githubusercontent.com/Perflyst/PiHoleBlocklist/master/SmartTV.txt
à ajouter dans « Group Management – Adlists » de Pihole, suivi d’un pihole -g
pour mettre à jour la liste utilisée par Pihole.
Reste à vérifier que la TV fonctionne toujours correctement avec cette liste active. Je n’ai aucun besoin d’un accès internet sur celle-ci (il n’y a que Plex que j’utilise en local comme media serveur), ce sera donc très bien de lui couper le sifflet.
Voilà, ce changement de serveur DHCP est finalement très bénéfique : non seulement Pihole filtre les publicités, mais il fournit aussi beaucoup d’informations sur ce qui se passe sur votre réseau personnel ! 😎
Avec cette config, la box ne risque t-elle pas d’attribuer l’ip destinée au décodeur à un autre matériel sur le réseau ?
Bonjour,
Il y a toujours un risque, mais en cas de problème (reboot de la box, etc…), le premier périphérique que je redémarre, c’est le décodeur TV, en ayant coupé le serveur pi-hole (a ucas où). Une fois que la TV fonctionne, je réactive pi-hole. Les adresses précédemment attribuées par pi-hole ont toujours leur bail valide, donc aucun souci.
J’ai du être amené à faire cette manip peut-être deux fois dans l’année, dont une fois suite à un changement de décodeur TV.
Suffit de récupérer l’@MAC de la boxTV et de configurer directement la réservation DHCP 🙂
Oui et non : la question est quel sera le serveur DHCP à répondre en premier. L’@MAC du décodeur a bien un bail sur la box Orange. Mais il faut aussi l’exclure du serveur DHCP de Pi-Hole.
Comme expliqué dans l’article… 😉
En effet j’ai oublié de préciser ce point !
En plus de la réservation DHCP sur la livebox, il faut mettre une exclusion sur le DHCP secondaire !
Dans mon cas c’est sur mon serveur NAS.
Cette configuration fonctionne assez mal sur les versions récentes du firmware de la Livebox
Il y a un DHCPv6 qui n’est pas désactivable sur la Livebox, ça fait que le DNS de Orange est distribué et remplace le DNS de PI-Hole sur les équipements connectés en IPV6
Il faut carrément désactiver l’IPV6 pour passer outre cette problématique, et forcer le passage sur le DNS PI-Hole
Donc soit le désactiver sur la Livebox pour tous les équipements, ou alors le désactiver sur chaque équipement individuellement
Désactiver le SLAAC sur les équipements résoud aussi ce problème
Merci pour les infos. Effectivement, mon IPv6 est désactivé sur ma box, je vais rajouter cette info en début d’article.
Du coup cela m’amène une question : Je ne connais pas IPv6, je n’ai jamais bossé avec, mais quel est l’intérêt de l’activer sur la box puis sur les quelques machines de mon LAN ?
Et même une autre question : PiHole offre aussi la possibilité d’activer l’IPv6, et on se retrouve alors avec le même problème qu’avec l’IPv4 non ? Orange ne permet pas de désactiver le DHCP, mais on trouve un moyen pour que les machines du LAN obtiennent leur adresse du serveur Pihole. Une fois qu’elles ont leur bail (que l’on a choisit long), on est à peu près tranquille non ?
Pour l’IPV6 en tant que particuliers, l’intérêt est minime. Il n’y a pas de grands risques aujourd’hui à le désactiver. Je ne pense pas qu’il y ait beaucoup de serveurs qui soient en IPV6-only.
Dans le cas de Pi-Hole, j’avais un peu regardé sur Internet et à priori les appareils envoient des paquets RA (Router Discovery) qui permettent de récupérer les serveurs DNS de la box. Pi-Hole répond à priori à ces messages et renvoie son serveur DNS. Du coup à ces moments, le serveur DNS en IPV6 de la box est remplacé par celui de Pi-Hole, puis celui de Pi-Hole est remplacé par celui de la box, et ainsi de suite. Il y a donc un conflit entre les deux. Donc impossible de passer outre le soucis autrement qu’en désactivant l’IPV6. Il y aurait même une histoire de priorité qui est donnée à la box plutôt qu’à Pi-Hole.
Pour ça que désactiver le SLAAC sur les appareils peut résoudre le soucis (ça désactive l’envoi de paquets RA pour sonder le réseau local).
Donc même si le DHCPv6 de Pi-Hole est activé avec un temps de bail assez long, une fois le DHCPv6 de la Livebox réactivé, les annonces du serveur DNS de la box seront quand même prises en compte par les appareils.
J’ai installé un orange-pi avec pi-hole 5 sur la livebox 4. Pas de décodeur Tv car pas besoin. J’ai un soucis : toutes les 24H environ l’orange-pi perd sa connection avec la livebox lorsqu’elle a son DHCP désactivé. le pi a bien son adresse réservée sur une IP fixe. Je dois alors activer/désactiver le DHCP de la livebox puis débrancher/rebrancher l’ethernet du pi pour que ça reparte… Très pénible!
La solution qui fonctionne est de garder le DHCP de la livebox actif avec une plage restreinte comme dans ce auto pour le décodeur TV (2 adresse IP min), mais cette solution est tellement inélégante!
Il semble que le la livebox fasse dans notre dos des choses qu’elle ne devrait pas faire selon sa configuration! Est-ce que qqn à trouvé une parade?
Merci pour votre aide.
Bonjour,
Donc tu as le boitier orange-pi défini avec une adresse IP fixe, et tu pers l’accès à la box (soit le routeur, ou la gateway de l’orange-pi) systématiquement ? C’est très étrange : quoique que fasse la box orange, elle a toujours la même adresse (disons 192.168.1.1) ? et ta config IP côté orange-pi est fixe, donc ta gateway ne change pas non plus. Après effectivement ce que fait la livebox, on ne sait pas trop !
Il faudrait que tu creuses côté orange-pi, car je ne sais pas trop ce que ça veut dire « perd sa connexion avec la livebox » ? comment est ton IP côté orange-pi à ce moment là, est-ce que tu ping la livebox ? etc… Au pire faire une trace wireshark pour mieux voir ce qui se passe sur le réseau à ce moment là.
Tu peux aussi poser ta question sur un forum orange, tu auras plus de chance d’avoir une réponse qu’ici ! 😉
Bonjour,
N’ayant pas de notion réseau je me demandais comment les appareils passent automatiquement par le DHCP de pihole: ils envoient en broadcast la demande d’une assignation automatique d’IP à destination du/des serveurs DHCP.
Dans mon cas, j’avais docker en network bridge mode (qui est la conf par défaut).
Ça ne pouvait pas fonctionner car le server DHCP était dans le réseau docker (et donc ne pouvait recevoir ni répondre aux broadcast DHCP).
La solution simple est de passer le network mode en host.
Dans mon cas, je souhaitais garder le network en bridge pour éviter le conflit de ports.
La documentation se trouve ici : https://docs.pi-hole.net/docker/dhcp/
Suivez d’abord les instructions de ce post et si ça ne fonctionne pas vous pouvez vous inspirer de ma config :
services:
pihole:
image: pihole/pihole:latest
restart: always
volumes:
- ./etc-pihole:/etc/pihole
- ./etc-dnsmasq.d:/etc/dnsmasq.d
ports:
- '53:53/tcp'
- '53:53/udp'
- '8125:80/tcp' # or use reverse proxy instead
environment:
TZ: 'Europe/Paris'
WEBPASSWORD: secretpassword
VIRTUAL_HOST: pi.hole
PIHOLE_DNS_: 1.1.1.1;8.8.4.4
ServerIP:
DNSMASQ_LISTENING: all
cap_add:
- NET_ADMIN
dns:
- 1.1.1.1
depends_on:
- dhcphelper
networks:
backend:
ipv4_address: '172.31.0.100'
dhcphelper:
build: ./dhcp-helper
restart: unless-stopped
network_mode: host
command: -s 172.31.0.100
cap_add:
- NET_ADMIN
networks:
backend:
ipam:
config:
- subnet: 172.31.0.0/16
Merci, des infos utiles si l’on veut utiliser docker en mode bridge, effectivement.
Dans ma config, Pi-hole est installé sur le même LAN, sans container, il reçoit donc bien les requêtes DHCP.
Si j’utilisais Docker, je passerai le network du docker Pi-hole en mode host, c’est plus simple, car je ne vois pas bien à quels « conflit de ports » tu fais allusion…