From 5c490c30663c14a5ea7716f7540084ed97f86d55 Mon Sep 17 00:00:00 2001 From: MilesTEG1 Date: Wed, 17 Mar 2021 09:56:51 +0100 Subject: [PATCH] Ajout de AdGuardHome en macvlan --- ...UTO-adguardhome-macvlan_docker-compose.yml | 60 +++++++++++++++++++ .../bridgemacvlan-interface.sh | 39 ++++++++++++ .../docker_network_create_macvlan.sh | 1 + 3 files changed, 100 insertions(+) create mode 100644 docker-compose/adguard-macvlan/TUTO-adguardhome-macvlan_docker-compose.yml create mode 100644 docker-compose/adguard-macvlan/bridgemacvlan-interface.sh create mode 100644 docker-compose/adguard-macvlan/docker_network_create_macvlan.sh diff --git a/docker-compose/adguard-macvlan/TUTO-adguardhome-macvlan_docker-compose.yml b/docker-compose/adguard-macvlan/TUTO-adguardhome-macvlan_docker-compose.yml new file mode 100644 index 0000000..787551c --- /dev/null +++ b/docker-compose/adguard-macvlan/TUTO-adguardhome-macvlan_docker-compose.yml @@ -0,0 +1,60 @@ +##=======================================================================================================## +## ## +## 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/ ## +## ## +##=======================================================================================================## + +--- +version: "2.4" +services: + adguardhome_macvlan: + image: adguard/adguardhome:latest # https://github.com/AdguardTeam/AdGuardHome + container_name: adguardhome_macvlan + environment: + - PUID=1000 # Utiliser la commande (en SSH) : id NOM_UTILISATEUR + - PGID=100 # Utiliser la commande (en SSH) : id NOM_UTILISATEUR + - TZ=Europe/Paris + - LANG=fr_FR.UTF8 + - LANGUAGE=fr_FR.UTF8 + + # ############### + # Le label ci-dessous permet à Watchtower de faire les mises à jour automatiquement + # Cela peut-être supprimé si Watchtower n'est pas utilisé. + labels: + - "com.centurylinklabs.watchtower.enable=true" + # ############### + + volumes: + - "/volume1/docker/adguardhome_macvlan/work:/opt/adguardhome/work" + - "/volume1/docker/adguardhome_macvlan/conf:/opt/adguardhome/conf" + + # La déclaration des ports n'est pas utile lors d'une installation en macvlan, car tous les ports seront directement accessible + # avec l'IP virtuelle. + # ports: + # - "953:53" + # - "967:67/udp" + # - "968:68" + # - "8080:80/tcp" + # - "9443:443/tcp" + # - "9853:853/tcp" + # - "3030:3000/tcp" + + networks: + macvlan-network: + ipv4_address: 192.168.xxx.yyy # Mettre ici l'IP macvlan définie dans les scripts + + restart: unless-stopped + +networks: + macvlan-network: # Ce réseau devra bien entendu être créé avant avec le script annexe ou avec Portainer. + external: true \ No newline at end of file diff --git a/docker-compose/adguard-macvlan/bridgemacvlan-interface.sh b/docker-compose/adguard-macvlan/bridgemacvlan-interface.sh new file mode 100644 index 0000000..2fe0fda --- /dev/null +++ b/docker-compose/adguard-macvlan/bridgemacvlan-interface.sh @@ -0,0 +1,39 @@ +#!/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/ ## +## ## +##========================================================================================## + +# 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.yyy/32 dev macv0 # 192.168.xxx.yyy/32 : Adresse macvlan du conteneur AdguardHome_macvlan sur lequel + # faire pointer l'IP virtuelle ( 1 seule adresse unique avec le /32 ) + # C'est l'adresse du network macvlan-network créée avant de lancer le script. + # 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/adguard-macvlan/docker_network_create_macvlan.sh b/docker-compose/adguard-macvlan/docker_network_create_macvlan.sh new file mode 100644 index 0000000..0e17fc5 --- /dev/null +++ b/docker-compose/adguard-macvlan/docker_network_create_macvlan.sh @@ -0,0 +1 @@ +docker network create -d macvlan --subnet=192.168.xxx.0/24 --ip-range=192.168.x.yyy/28 --gateway=192.168.xxx.1 -o parent=ovs_eth0 macvlan-network \ No newline at end of file