Merge pull request 'Ajout du docker-compose.yml pour installer pihole en mavclan' (#68) from Miles-piholemacvlan into master

Reviewed-on: #68
This commit is contained in:
MilesTEG 2021-04-26 14:18:01 +02:00
commit 681fdb0bd1
6 changed files with 221 additions and 19 deletions

View File

@ -6,7 +6,15 @@
## Script de création d'interface virtuelle pour le conteneur AdGuardHome_macvlan ##
## Voir tuto : https://www.nas-forum.com/forum/topic/69319-tuto-docker-macvlan-pi-hole/ ##
## ##
##========================================================================================##
## Rappels des différentes IP : ##
## - Plage d'IP macvlan : 192.168.xxx.MMM/28 ##
## - IP virtuelle unique : 192.168.xxx.zzz/32 ##
## - IP conteneur n°1 : 192.168.xxx.yyy ##
## - IP conteneur n°2 : 192.168.xxx.ooo ##
## - Plage d'IP du LAN : 192.168.xxx.0/24 ##
## - Passerelle/routeur : 192.168.xxx.1 ##
## ##
##==========================================================================================
# Set timeout to wait host network is up and running
sleep 60
@ -16,7 +24,7 @@ echo "$(date "+%R:%S - ") Exécution des commandes..."
ip link add macv0 link ovs_eth0 type macvlan mode bridge # macv0 : est le nom données à l'interface virtuelle
# ovs_eth0 : est l'interface réseau utilisée sur le NAS (lorsque VMM est utilisé)
ip addr add 192.168.xxx.zzz/32 dev macv0 # Adresse IP virtuelle 192.168.x.zzz/32 -- Il faut que cette adresse soit libre dans le réseau
ip addr add 192.168.xxx.zzz/32 dev macv0 # Adresse IP virtuelle 192.168.x.zzz/32 -- Il faut que cette adresse soit libre dans le réseau
# et qu'elle ne fasse pas partie du DHCP du routeur/box
ip link set dev macv0 address 5E:00:01:02:03:04 # MAC adresse pour l'adaptateur ayant l'IP virtuelle

View File

@ -4,21 +4,30 @@
## ##
##==============================================================================================
##=======================================================================================================##
## ##
## Attention, il faut créer le réseau macvlan à l'aide du script : docker_network_create_macvlan.sh , ##
## ou avec Portainer. ##
## Ce dernier va créer un réseau macvlan ayant comme IP unique 192.168.xxx.yyy ##
## Le conteneur sera donc vu comme une machine sur le réseau LAN, mais ne pourra pas être ##
## joint par le NAS lui-même. ##
## Pour celà, il faut utiliser le second script : bridgemacvlan-interface.sh ##
## Ce dernier va créer une IP-interface virtuelle 192.168.xxx.zzz qui pourra être accessible par le NAS. ##
## Cette interface ne persiste pas au démarrage, il faudra mettre le script en tâche planifiée avec le ##
## planificateur de tâches dans DSM. ##
## ##
## Voir tuto : https://www.nas-forum.com/forum/topic/69319-tuto-docker-macvlan-pi-hole/ ##
## ##
##=======================================================================================================##
##============================================================================================##
## ##
## Attention, il faut créer le réseau macvlan à l'aide du script : macvlan-network.sh ##
## Ce dernier va créer un réseau macvlan ayant comme IP unique 192.168.2.210 ##
## Cette IP doit être dans la plage d'IP mavclan définie dans le script de création du réseau.##
## Le conteneur sera donc vu comme une machine sur le réseau LAN, mais ne pourra pas être ##
## joint par le NAS lui-même. ##
## Pour celà, il faut utiliser le second script : boot-bridgemacvlan-interface.sh ##
## Ce dernier va créer une IP-interface virtuelle qui pourra être accessible par le NAS. ##
## Cette interface ne persiste pas au démarrage, il faudra mettre le script en tâche ##
## planifiée avec le planificateur de tâches dans DSM. ##
## ##
## Voir tuto : https://www.nas-forum.com/forum/topic/69319-tuto-docker-macvlan-pi-hole/ ##
## ##
## Attention ! ##
## ##
## Ces deux scripts ne sont à utiliser qu'une seule fois, quelque soit le nombre de ##
## conteneurs qui en bénéficieront. ##
## Par exemple, si vous utilisez 2 conteneurs en macvlan, une fois le réseau macvlan créé ##
## pour le 1er, il est inutile (et impossible) de le recréer. ##
## Le script boot-bridgemacvlan-interface.sh ne doit être lancé qu'une seule fois, et à ##
## chaque reboot. L'IP virtuelle est unique, il ne faut pas en recréer une seconde. ##
## ##
##==============================================================================================
---
version: "2.4"
@ -57,7 +66,7 @@ services:
networks:
macvlan-network:
ipv4_address: 192.168.xxx.yyy # Mettre ici l'IP macvlan définie dans les scripts
ipv4_address: 192.168.xxx.yyy # Mettre ici l'IP macvlan dans la plage définie dans les scripts
restart: unless-stopped

View File

@ -9,7 +9,18 @@
## ##
## Les IPs prévues pour les conteneurs sont : ##
## - AdGuard-Home : 192.168.xxx.yyy ##
## - Pi-Hole : 192.168.xxx.ooo ##
## ##
## Rappels des différentes IP : ##
## - Plage d'IP macvlan : 192.168.xxx.MMM/28 ##
## - IP virtuelle unique : 192.168.xxx.zzz/32 ##
## - IP conteneur n°1 : 192.168.xxx.yyy ##
## - IP conteneur n°2 : 192.168.xxx.ooo ##
## - Plage d'IP du LAN : 192.168.xxx.0/24 ##
## - Passerelle/routeur : 192.168.xxx.1 ##
## ##
##==============================================================================================
##==============================================================================================
## ##
## --ip-range=192.168.xxx.MMM/28 : cela correspond à la plage d'IP pour le réseau macvlan ##
@ -28,5 +39,5 @@ docker network create -d macvlan \
--subnet=192.168.xxx.0/24 \
--ip-range=192.168.xxx.MMM/28 \
--gateway=192.168.xxx.1 \
-o parent=ovs_eth0 \
-o parent=ovs_eth0 \ # Ici, ovs_eth0 est à remplacer par votre interface réseau : eth0 ou autre...
macvlan-network

View File

@ -0,0 +1,46 @@
#!/bin/bash
##========================================================================================##
## Script bridgemacvlan-interface.sh ##
## ##
## Script de création d'interface virtuelle pour le conteneur AdGuardHome_macvlan ##
## Voir tuto : https://www.nas-forum.com/forum/topic/69319-tuto-docker-macvlan-pi-hole/ ##
## ##
## Rappels des différentes IP : ##
## - Plage d'IP macvlan : 192.168.xxx.MMM/28 ##
## - IP virtuelle unique : 192.168.xxx.zzz/32 ##
## - IP conteneur n°1 : 192.168.xxx.yyy ##
## - IP conteneur n°2 : 192.168.xxx.ooo ##
## - Plage d'IP du LAN : 192.168.xxx.0/24 ##
## - Passerelle/routeur : 192.168.xxx.1 ##
## ##
##==========================================================================================
# Set timeout to wait host network is up and running
sleep 60
echo "$(date "+%R:%S - ") Script de création d'une interface virtuelle pour le NAS"
echo "$(date "+%R:%S - ") Exécution des commandes..."
ip link add macv0 link ovs_eth0 type macvlan mode bridge # macv0 : est le nom données à l'interface virtuelle
# ovs_eth0 : est l'interface réseau utilisée sur le NAS (lorsque VMM est utilisé)
ip addr add 192.168.xxx.zzz/32 dev macv0 # Adresse IP virtuelle 192.168.x.zzz/32 -- Il faut que cette adresse soit libre dans le réseau
# et qu'elle ne fasse pas partie du DHCP du routeur/box
ip link set dev macv0 address 5E:00:01:02:03:04 # MAC adresse pour l'adaptateur ayant l'IP virtuelle
# Il faut que l'adresse MAC respecte ces conditions :
# - Elle n'existe pas déjà sur mon hôte et sur mon réseau.
# - Elle respecte la base hexadécimale, les notations allant de 0 à F.
# - Le premier nombre doit être pair, ici 5E = 94 en base 10, c'est donc OK (vous pouvez
# utiliser un convertisseur en ligne, ou faire vos divisions euclidiennes).
# S'il est impair, vous aurez un message :
# RTNETLINK answers: Cannot assign requested address
ip link set macv0 up
ip route add 192.168.xxx.MMM/28 dev macv0 # 192.168.xxx.MMM/28 : Plage d'adresse macvlan
# IP réellement disponible : voir les calculateurs internet
# Utiliser Portainer ou l'interface Docker ou encore le script : create-macvlan-network.sh
echo "$(date "+%R:%S - ") Script terminé"
exit

View File

@ -0,0 +1,85 @@
##==============================================================================================
## ##
## Fichier docker-compose.yml pour Pi-Hole en macvlan ##
## ##
##==============================================================================================
##============================================================================================##
## ##
## Attention, il faut créer le réseau macvlan à l'aide du script : macvlan-network.sh ##
## Ce dernier va créer un réseau macvlan ayant comme IP unique 192.168.2.211 ##
## Cette IP doit être dans la plage d'IP mavclan définie dans le script de création du réseau.##
## Le conteneur sera donc vu comme une machine sur le réseau LAN, mais ne pourra pas être ##
## joint par le NAS lui-même. ##
## Pour celà, il faut utiliser le second script : boot-bridgemacvlan-interface.sh ##
## Ce dernier va créer une IP-interface virtuelle qui pourra être accessible par le NAS. ##
## Cette interface ne persiste pas au démarrage, il faudra mettre le script en tâche ##
## planifiée avec le planificateur de tâches dans DSM. ##
## ##
## Voir tuto : https://www.nas-forum.com/forum/topic/69319-tuto-docker-macvlan-pi-hole/ ##
## ##
## Attention ! ##
## ##
## Ces deux scripts ne sont à utiliser qu'une seule fois, quelque soit le nombre de ##
## conteneurs qui en bénéficieront. ##
## Par exemple, si vous utilisez 2 conteneurs en macvlan, une fois le réseau macvlan créé ##
## pour le 1er, il est inutile (et impossible) de le recréer. ##
## Le script boot-bridgemacvlan-interface.sh ne doit être lancé qu'une seule fois, et à ##
## chaque reboot. L'IP virtuelle est unique, il ne faut pas en recréer une seconde. ##
## ##
##==============================================================================================
---
version: "2.4"
services:
pihole_macvlan:
image: pihole/pihole # https://hub.docker.com/r/pihole/pihole
# https://github.com/pi-hole/docker-pi-hole
# https://github.com/pi-hole/docker-pi-hole/#environment-variables
container_name: pihole_macvlan
hostname: pi-hole-BLABLA # C'est le nom que vous verrez en haut à droite dans l'UI.
environment:
- ADMIN_EMAIL=email@ndd.tld
- TZ=Europe/Paris
# Les deux lignes suivantes sont dépréciées, et ne doivent plus être utilisées. Voir ici : https://github.com/pi-hole/docker-pi-hole/#deprecated-environment-variables
#- DNS1=80.67.169.12 # IP des serveurs DNS FdN
#- DNS2=9.9.9.9 # IP Quad9
# Les deux lignes précédentes sont remplacées par la suivante
- PIHOLE_DNS_=80.67.169.12;9.9.9.9
- DNSSEC=false # Passer à true si les serveurs DNS gèrent le DNSSEC.
- DNS_BOGUS_PRIV=true
- DNS_FQDN_REQUIRED=true
- DNSMASQ_LISTENING=local
- INTERFACE=ovs_eth0 # Remplacer par votre interface réseau
- REV_SERVER=true # Permet de recuperer les noms d hote des peripheriques du reseau
- REV_SERVER_TARGET=192.168.2.1 # Voir paragraphe CONDITIONAL FORWARDING
- REV_SERVER_CIDR=192.168.2.0/24 # Votre sous-reseau local
#- REV_SERVER_DOMAIN=ndd.tld # Domaine local (Je n'utilise pas, donc je commente)
- TEMPERATUREUNIT=C
- WEBUIBOXEDLAYOUT=boxed
- ServerIP=192.168.2.211 # IP du conteneur Pi-hole
- VIRTUAL_HOST=pi.hole # Si on souhaite acceder a Pi-hole par un nom de domaine (proxy inverse par exemple)
- WEBPASSWORD=xxxxxxxxxxxxxxxx
volumes:
- /volume1/docker/pihole_macvlan/etc-pihole:/etc/pihole/
- /volume1/docker/pihole_macvlan/etc-dnsmasq.d:/etc/dnsmasq.d/
# La section suivante ne me semble pas utile, compte tenu du fonctionnement du conteneur
# Je la laisse mais en commentée.
#dns:
# - 127.0.0.1
# - 80.67.169.12
networks:
macvlan-network:
ipv4_address: 192.168.2.211 # Mettre ici l'IP macvlan dans la plage définie dans les scripts
restart: unless-stopped
networks:
macvlan-network: # Ce réseau devra bien entendu être créé avant avec le script
external: true

View File

@ -0,0 +1,43 @@
#!/bin/bash
##============================================================================================##
## Script macvlan-network.sh ##
## ##
## Script de création d'interface virtuelle pour les conteneurs Swag at AdGuard Home ##
## Voir tutos : ##
## https://www.nas-forum.com/forum/topic/69319-tuto-docker-macvlan-pi-hole/ ##
## ##
## Les IPs prévues pour les conteneurs sont : ##
## - AdGuard-Home : 192.168.xxx.yyy ##
## - Pi-Hole : 192.168.xxx.ooo ##
## ##
## Rappels des différentes IP : ##
## - Plage d'IP macvlan : 192.168.xxx.MMM/28 ##
## - IP virtuelle unique : 192.168.xxx.zzz/32 ##
## - IP conteneur n°1 : 192.168.xxx.yyy ##
## - IP conteneur n°2 : 192.168.xxx.ooo ##
## - Plage d'IP du LAN : 192.168.xxx.0/24 ##
## - Passerelle/routeur : 192.168.xxx.1 ##
## ##
##==============================================================================================
##==============================================================================================
## ##
## --ip-range=192.168.xxx.MMM/28 : cela correspond à la plage d'IP pour le réseau macvlan ##
## sachant que 192.168.xxx.MMM doit être la 1ère IP donnée par les calculateurs internet. ##
## Il se peut que ce ne soit pas la même que l'IP macvlan que l'on veut donner au conteneur ##
## AdGuardHome. ##
## ##
## Quelques calculateurs internet : ##
## https://cric.grenoble.cnrs.fr/Administrateurs/Outils/CalculMasque/ ##
## https://www.cidr.eu/en/calculator/+/192.168.2.208/28 ##
## ##
##==============================================================================================
docker network create -d macvlan \
--subnet=192.168.xxx.0/24 \
--ip-range=192.168.xxx.MMM/28 \
--gateway=192.168.xxx.1 \
-o parent=ovs_eth0 \ # Ici, ovs_eth0 est à remplacer par votre interface réseau : eth0 ou autre...
macvlan-network