Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentesRévision précédenteProchaine révision | Révision précédente | ||
tutoriaux:docker-related:stacks-pi-hole [2024/07/06 01:43] – a frater | tutoriaux:docker-related:stacks-pi-hole [2024/07/31 09:59] (Version actuelle) – frater | ||
---|---|---|---|
Ligne 3: | Ligne 3: | ||
Il n'est plus nécessaire de présenter [[https:// | Il n'est plus nécessaire de présenter [[https:// | ||
- | En migrant mon instance pi-Hole vers docker, je me suis heurté à un soucis imprévu, l' | + | En migrant mon instance pi-Hole vers docker, je me suis heurté à un soucis imprévu, l' |
+ | |||
+ | il existe des images [[https:// | ||
Avec docker, il est très facile d' | Avec docker, il est très facile d' | ||
===== Cahier de charges ===== | ===== Cahier de charges ===== | ||
+ | |||
+ | Le stack doit être basé sur des images officielles et maintenues, pour l' | ||
J'ai décidé de composer mon propre " | J'ai décidé de composer mon propre " | ||
Ligne 13: | Ligne 17: | ||
Les raisons sont multiples, mais la plus évidente est d' | Les raisons sont multiples, mais la plus évidente est d' | ||
+ | pour parvenir a ce résultat, il va falloir modifier les configurations du serveur unbound, mais aussi de modifier le // | ||
+ | |||
+ | ==== En résumé ==== | ||
+ | |||
+ | * pi-hole dns serveur sur le port udp#53 | ||
+ | * pi-hole web admin sur le port http#8053 | ||
+ | * recursive dns root query (no forwarder) | ||
+ | * recursive dns serveur interne sur le port udp#53 | ||
+ | |||
+ | ===== Architecture ===== | ||
+ | |||
+ | {{drawio> | ||
+ | |||
+ | cette architecture est décrite dans le fichier compose (en fin d' | ||
+ | |||
+ | ==== unbound ==== | ||
+ | dans la partie service " | ||
+ | |||
+ | <code yaml> | ||
+ | | ||
+ | - " | ||
+ | </ | ||
+ | |||
+ | ==== pi-hole ==== | ||
+ | dans la partie service " | ||
+ | <code yaml> | ||
+ | | ||
+ | - " | ||
+ | - " | ||
+ | </ | ||
+ | |||
+ | ===== unbound ===== | ||
+ | |||
+ | Le container de Matthew contient tout ce qu'il faut pour avoir un unbound serveur avec un résolveur privé et un indicateur de '' | ||
+ | |||
+ | Par [[https:// | ||
+ | |||
+ | <code yaml> | ||
+ | volumes: | ||
+ | - " | ||
+ | </ | ||
+ | |||
+ | Nous allons donc modifier certains fichiers "par défaut" | ||
+ | |||
+ | Je me suis inspiré de la documentation de pi-Hole concernant l' | ||
+ | |||
+ | on va surtout modifier les paramètres d' | ||
+ | |||
+ | <code yaml> | ||
+ | # Listen to for queries from clients and answer from this network interface | ||
+ | # and port. | ||
+ | interface: 0.0.0.0 | ||
+ | port: 53 | ||
+ | do-ip4: yes | ||
+ | do-udp: yes | ||
+ | do-tcp: yes | ||
+ | |||
+ | # May be set to yes if you have IPv6 connectivity | ||
+ | do-ip6: yes | ||
+ | </ | ||
+ | |||
+ | Ces paramètres sont également a configurer dans le fichier compose, pour valider le healthcheck: | ||
+ | <code yaml> | ||
+ | healthcheck: | ||
+ | test: drill @127.0.0.1 -p 53 cloudflare.com || exit 1 | ||
+ | interval: 30s | ||
+ | timeout: 30s | ||
+ | retries: 3 | ||
+ | start_period: | ||
+ | </ | ||
+ | |||
+ | On va également vérifier et adapter les droits d' | ||
+ | |||
+ | <code yaml> | ||
+ | ########################################################################### | ||
+ | # SECURITY SETTINGS | ||
+ | ########################################################################### | ||
+ | # Only give access to recursion clients from LAN IPs | ||
+ | access-control: | ||
+ | access-control: | ||
+ | access-control: | ||
+ | access-control: | ||
+ | # access-control: | ||
+ | # access-control: | ||
+ | </ | ||
+ | |||
+ | On va retirer la référence au " | ||
+ | |||
+ | <code yaml> | ||
+ | ########################################################################### | ||
+ | # FORWARD ZONE | ||
+ | ########################################################################### | ||
+ | |||
+ | #include: / | ||
+ | </ | ||
+ | |||
+ | j' | ||
+ | vous y trouverez plusieurs classifications de serveurs sources déjà filtrés (malware, adulte, etc.) ainsi que d' | ||
+ | |||
+ | Pour ma facilité de test (et ne pas de voir a chaque fois redémarrer le container complétement, | ||
+ | <code yaml> | ||
+ | remote-control: | ||
+ | control-enable: | ||
+ | </ | ||
+ | |||
+ | ===== pi-hole ===== | ||
+ | |||
+ | Pour accéder à l' | ||
+ | |||
+ | {{ tutoriaux: | ||
+ | |||
+ | il suffit de référencé votre mot de passe, et de se connecter, et de directement aller vers les " | ||
+ | |||
+ | {{ tutoriaux: | ||
+ | Par défaut, Pi-Hole ne réponds que aux clients situé sur le même réseau et sub-net (172.20.x.x), | ||
+ | * Désélectionner tout les serveurs par défaut (de google dans mon cas) | ||
+ | * Définir notre " | ||
+ | * Autoriser le serveur a répondre à tout nos client, pour ce faire, nous devons préciser l' | ||
+ | Il nous suffit de configurer les clients pour utiliser ce serveur DNS Pi-Hole. | ||
===== fichiers ===== | ===== fichiers ===== | ||
- | <code yaml name: | + | <file yaml name: |
networks: | networks: | ||
infrastructure: | infrastructure: | ||
Ligne 26: | Ligne 149: | ||
services: | services: | ||
unbound: | unbound: | ||
- | |||
- | cap_drop: | ||
- | - " | ||
- | - " | ||
- | - " | ||
- | - " | ||
- | - " | ||
- | - " | ||
- | - " | ||
- | - " | ||
- | - " | ||
- | - " | ||
- | - " | ||
- | - " | ||
- | - " | ||
- | - " | ||
- | - " | ||
- | - " | ||
- | - " | ||
- | - " | ||
- | - " | ||
- | - " | ||
- | - " | ||
- | - " | ||
- | - " | ||
command: | command: | ||
Ligne 56: | Ligne 154: | ||
healthcheck: | healthcheck: | ||
- | test: drill @127.0.0.1 | + | test: drill @127.0.0.1 cloudflare.com || exit 1 |
interval: 30s | interval: 30s | ||
timeout: 30s | timeout: 30s | ||
Ligne 107: | Ligne 205: | ||
dns-pihole: | dns-pihole: | ||
- | |||
- | cap_drop: | ||
- | - " | ||
- | - " | ||
- | - " | ||
- | - " | ||
- | - " | ||
- | - " | ||
- | - " | ||
- | - " | ||
- | - " | ||
- | - " | ||
- | - " | ||
- | - " | ||
- | - " | ||
- | - " | ||
- | - " | ||
- | - " | ||
- | - " | ||
- | - " | ||
- | - " | ||
- | - " | ||
- | - " | ||
- | - " | ||
- | - " | ||
container_name: | container_name: | ||
Ligne 150: | Ligne 223: | ||
- " | - " | ||
- " | - " | ||
- | - " | + | - " |
hostname: " | hostname: " | ||
Ligne 179: | Ligne 252: | ||
- " | - " | ||
- " | - " | ||
- | - "81: | + | - "8053: |
restart: " | restart: " | ||
Ligne 192: | Ligne 265: | ||
pihole_config: | pihole_config: | ||
pihole_dnsmasq: | pihole_dnsmasq: | ||
- | </code> | + | |
- | + | </file> | |
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + |