From 9465ad324c13acc463ffb088d1e8799cc9d3276b Mon Sep 17 00:00:00 2001 From: MilesTEG Date: Mon, 26 Apr 2021 09:59:05 +0200 Subject: [PATCH] =?UTF-8?q?Ajout=20du=20docker-compose.yml=20pour=20instal?= =?UTF-8?q?ler=20pihole=20en=20mavclan=20+=20Ajouts=20et=20mise=20=C3=A0?= =?UTF-8?q?=20jour=20de=20commentaires=20dans=20les=20scripts=20et=20docke?= =?UTF-8?q?r-compose?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../bridgemacvlan-interface.sh | 12 ++- .../adguard-macvlan/docker-compose.yml | 41 +++++---- .../docker_network_create_macvlan.sh | 13 ++- .../bridgemacvlan-interface.sh | 46 ++++++++++ .../pi-hole_macvlan/docker-compose.yml | 85 +++++++++++++++++++ .../docker_network_create_macvlan.sh | 43 ++++++++++ 6 files changed, 221 insertions(+), 19 deletions(-) create mode 100644 docker-compose/pi-hole_macvlan/bridgemacvlan-interface.sh create mode 100644 docker-compose/pi-hole_macvlan/docker-compose.yml create mode 100644 docker-compose/pi-hole_macvlan/docker_network_create_macvlan.sh diff --git a/docker-compose/adguard-macvlan/bridgemacvlan-interface.sh b/docker-compose/adguard-macvlan/bridgemacvlan-interface.sh index 6fc79aa..0b2c694 100644 --- a/docker-compose/adguard-macvlan/bridgemacvlan-interface.sh +++ b/docker-compose/adguard-macvlan/bridgemacvlan-interface.sh @@ -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 diff --git a/docker-compose/adguard-macvlan/docker-compose.yml b/docker-compose/adguard-macvlan/docker-compose.yml index 0b8c69b..4468786 100644 --- a/docker-compose/adguard-macvlan/docker-compose.yml +++ b/docker-compose/adguard-macvlan/docker-compose.yml @@ -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 diff --git a/docker-compose/adguard-macvlan/docker_network_create_macvlan.sh b/docker-compose/adguard-macvlan/docker_network_create_macvlan.sh index c06f077..5108959 100644 --- a/docker-compose/adguard-macvlan/docker_network_create_macvlan.sh +++ b/docker-compose/adguard-macvlan/docker_network_create_macvlan.sh @@ -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 \ No newline at end of file diff --git a/docker-compose/pi-hole_macvlan/bridgemacvlan-interface.sh b/docker-compose/pi-hole_macvlan/bridgemacvlan-interface.sh new file mode 100644 index 0000000..0b2c694 --- /dev/null +++ b/docker-compose/pi-hole_macvlan/bridgemacvlan-interface.sh @@ -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 diff --git a/docker-compose/pi-hole_macvlan/docker-compose.yml b/docker-compose/pi-hole_macvlan/docker-compose.yml new file mode 100644 index 0000000..ae5e160 --- /dev/null +++ b/docker-compose/pi-hole_macvlan/docker-compose.yml @@ -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 diff --git a/docker-compose/pi-hole_macvlan/docker_network_create_macvlan.sh b/docker-compose/pi-hole_macvlan/docker_network_create_macvlan.sh new file mode 100644 index 0000000..5108959 --- /dev/null +++ b/docker-compose/pi-hole_macvlan/docker_network_create_macvlan.sh @@ -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 \ No newline at end of file