Aller au contenu

[TUTO] [Docker - macvlan] Pi-Hole


.Shad.

Messages recommandés

Bon alors, avec les scripts ci-dessous, ça a fonctionné :
H1HserA.png

Bon maintenant je vais voir pour faire la suite 😉 

 

Le script de création du réseau macvlan :

#!/bin/bash

##========================================================================================##
##                              Script macvlan-network.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/   ##
##                                                                                        ##
##========================================================================================##

echo "$(date "+%R:%S - ") Script de création de réseau macvlan pour DOCKER"
echo "$(date "+%R:%S - ") Un réseau macvlan-network sera créé avec une seule IP macvlan 192.168.2.210"
echo "$(date "+%R:%S - ") avec la commande suivante :"
echo "$(date "+%R:%S - ")    docker network create -d macvlan \ "
echo "$(date "+%R:%S - ")    --subnet=192.168.2.0/24 \ "
echo "$(date "+%R:%S - ")    --ip-range=192.168.2.210/32 \ "
echo "$(date "+%R:%S - ")    --gateway=192.168.2.1 \ "
echo "$(date "+%R:%S - ")    -o parent=ovs_eth0 \ "
echo -e "$(date "+%R:%S - ")    macvlan-network\n"


docker network create -d macvlan \
--subnet=192.168.2.0/24 \
--ip-range=192.168.2.210/32 \
--gateway=192.168.2.1 \
-o parent=ovs_eth0 \
macvlan-network


echo -e "\n\n$(date "+%R:%S - ") Liste des réseaux docker : docker network ls\n"

docker network ls
echo -e "\n$(date "+%R:%S - ") Script terminé\n"

exit

Le script à lancer à chaque démarrage pour refaire le lien entre l'IP virtuelle et l'IP macvlan du conteneur :
 

#!/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
ip addr add 192.168.2.230/32 dev macv0              # Adresse IP virtuelle 192.168.2.230/32

ip link set dev macv0 address 5E:11:01:01:01:01     # MAC adresse pour l'adaptateur ayant l'IP virtuelle
ip link set macv0 up

ip route add 192.168.2.210/32 dev bridgemacvlan     # 192.168.2.210/32 : Adresse macvlan du conteneur
                                                    # AdguardHome_macvlan - 1 seule adresse unique avec le /32
echo "$(date "+%R:%S - ") Script terminé"
exit

 

 

Si j'y arrive, je vais améliorer les scripts pour récupérer dans des variables le résultats des commandes, afin de les afficher à la fin, pour vérifier que tout s'est bien passé.
 

petit effet secondaire non prévu, j'ai un deuxième NAS 920+ dans mon réseau :
CYNxMUc.png


mais, mais, il est où ??? 🤪 Je voudrais bien un vrai clone du NAS, un second 4 baies je cracherais pas dessus 🤪

Modifié par MilesTEG1
Correction de petites erreurs dans le script et donc dans la capture d'écran
Lien vers le commentaire
Partager sur d’autres sites


Je continue mes monologues   
Je teste la création de l'interface virtuelle avec la commande du tuto de @.Shad. , mais elle ne retourne rien... Pour voir l'IP virtuelle créée il faut que je fasse ifconfig. Et je viens de comprendre pourquoi... Le nom ne peux pas dépasser 9 caractères apparemment...
Vu qu'il y avait une petite erreur dans le script (oui encore... c'est ça quand on est pas 100% dessus, et fatigué 😅), j'ai rebooté le NAS, et voilà :
OJiuu8o.png

Et comme tu as dit ceci :

Citation

Un autre moyen de vérifier que ça a marché est de lancer Synology Assistant, l'interface virtuelle devrait dorénavant apparaître.

Et que je vois bien une nouveau NAS dans Synology Assistant... je suis bon 😄 

Purée, ce fut laborieux, entre moi qui ne comprends pas bien certaines notions, moi qui fait des erreurs d'inattention liée à ma fatigue ... 
 

Bon il est maintenant temps de créer mon conteneur avec Portainer car j'aime bien 😉
2EacNMQ.png


z6ZyEm4.png
J'ai volontairement pas repris la configuration de mon Adguard actuel, pour repartir de 0 avec celui là.

Il me reste donc à le configurer et à le tester pour voir si tout fonctionne bien comme avant celui en HOST.
Ce message marquera donc le dernier HS (bien que ça m'ait grandement aider) à ce sujet.
D'ici à ce que j'ai le temps de rédiger un tuto complet pour l'installation, la configuration de AdGuard... 😉 
Je le rédigerais et le publierais sur GitHub, car je vais le partager sur plusieurs forums 😅

En tout cas, merci beaucoup encore une fois @.Shad. et @bruno78 pour votre aide bienveillante et votre patience 😇

Lien vers le commentaire
Partager sur d’autres sites

Donc finalement ça marchait comme je l'avais proposé ?
Désolé ce n'est pas très clair pour moi.

Et je viens seulement de voir ta question, tu n'as nullement besoin de redémarrer ton NAS pour supprimer l'interface : https://stackoverflow.com/questions/34326704/how-do-i-delete-virtual-interface-in-linux (premier résultat 🤪)

Lien vers le commentaire
Partager sur d’autres sites

@.Shad. En fait non, ce que tu avais proposé ne fonctionnait pas, seul une IP unique sur la dernière commande fonctionne chez moi.
En soit, c'est pas grave, ça fonctionne comme je le souhaite 🙂

J'ai passé quelques heures de plus hier, et j'ai fini pas arrêter mon conteneur et le recréé en ayant auparavant copié les données de la version HOST, car j'avais la flemme de refaire les associations IP type de machine... bien que les machines étaient bien détectées niveau nom, je peux définir le type de machine pour plus tard faire un filtrage par type.

Bref, j'aurais une question : comment bien vérifier que mes machines utilisent bien mon Adguard comme serveur DNS et pas le DNS secondaire (en secours) ?

J'ai modifié les paramètres dans le routeur pour que le serveur DHCP utilise bien l'IP macvlan de Adguard, et donc que mes périphériques aient bien ce DNS là en serveur 😉
Du coup question : dans le NAS, je choisi quelle IP pour le serveur DNS dans DSM ? Je lui mets l'IP macvlan ? ou l'IP virtuelle ?
 

Pour le NAS DSM, je me rends compte que je peux changer le serveur de DNS à deux endroits dans la partie Réseau :

  • Soit dans l'onglet Général : Configurer manuellement le serveur DNS 
  • Soit dans l'onglet Interface réseau/LAN1 : en modifiant l'interface réseau LAN1 (choix du DHCP, IP fixe...)

Tu ferais le changement où ? 

Lien vers le commentaire
Partager sur d’autres sites

C'est étrange car pour les autres ça a fonctionné.

il y a 46 minutes, MilesTEG1 a dit :

Bref, j'aurais une question : comment bien vérifier que mes machines utilisent bien mon Adguard comme serveur DNS et pas le DNS secondaire (en secours) ?

nslookup ?

il y a 47 minutes, MilesTEG1 a dit :

Du coup question : dans le NAS, je choisi quelle IP pour le serveur DNS dans DSM ? Je lui mets l'IP macvlan ? ou l'IP virtuelle ?

L'IP du conteneur, le NAS choisira l'interface virtuelle pour communiquer avec.
L'IP virtuelle ça ne marcherait pas, elle fait référence au NAS, pas au conteneur.

il y a 48 minutes, MilesTEG1 a dit :

Pour le NAS DSM, je me rends compte que je peux changer le serveur de DNS à deux endroits dans la partie Réseau :

  • Soit dans l'onglet Général : Configurer manuellement le serveur DNS 
  • Soit dans l'onglet Interface réseau/LAN1 : en modifiant l'interface réseau LAN1 (choix du DHCP, IP fixe...)

Tu ferais le changement où ? 

DSM ne prend en compte qu'un seul serveur DNS via DHCP, si tu dois en définir une deuxième il faut passer par la configuration manuelle des DNS (premier choix).

Lien vers le commentaire
Partager sur d’autres sites

Renseigne-toi sur ce qu'est un "authoritative server" pour ce qui est DNS, c'est un serveur qui est un nameserver pour un domaine donné.

En l'occurrence, ton serveur DNS Adguard n'est le NS d'aucun domaine publique. Il va donc chercher l'information de trois manières possibles : récursive, itérative ou par transfert.

Dans tous les cas, il finit par obtenir l'information que tu cherches et te précise qu'il ne fait pas autorité pour le domaine demandé. Si tu as un domaine OVH, et que tu fais un nslookup sur ton domaine en utilisant l'IP d'un des NS de ta zone DNS, tu verras qu'il ne te mettra pas ce message. Normal car tu interroges directement le NS du domaine en question.

Tu te prépares à écrire un tutoriel pour la mise en place d'un serveur DNS, et le DNS c'est dense comme protocole. Je t'invite à te renseigner plus amplement sur tous les concepts qui y ont trait. 😉

Modifié par .Shad.
Lien vers le commentaire
Partager sur d’autres sites

Oui effectivement, le monde du DNS c'est vraiment costaud...
Et je suis très très loin de comprendre tout ça...
Rien que pour ça j'ai beaucoup de mal à comprendre ce que ça va faire et comment utiliser ça :
oN5LFCX.png

Bref, du coup mon projet de tuto complet AdguardHome risque de se transformer en tuto d'installation comme il en existe déjà plein 😅 car d'ici à ce que je maitrise suffisamment ce qui touche aux DNS, il se sera passé du temps...

Adguard Home est plus jeune que pihole, du coup il n'y a pas autant de tuto explicatifs sur les notions complexes...

Bon j'ai le temps d'y réfléchir et de me documenter, mais mon cerveau devient hermétique à ces notions complexes...

Ha dernière question (j'espère pour la journée ^^), est-ce que les autres conteneurs comme Plex, ou d'autres qui se connectent à internet) profitent du serveur DNS qu'est Adguard Home ?

Lien vers le commentaire
Partager sur d’autres sites

  • 1 mois après...

Bonsoir,

Je tente actuellement de mettre en place pi hole sur mon réseau en suivant ce tuto mais je reste bloqué lors de la création du conteneur docker.

Lorsque j'exécute "sudo docker-compose pull && docker-compose up -d" j'obtiens l'erreur suivante :
 

Citation

Pulling pi-hole ... done

ERROR: Couldn't connect to Docker daemon at http+docker://localhost - is it running?

If it's at a non-standard location, specify the URL with the DOCKER_HOST environment variable.

D'après mes recherches un "sudo" corrige le problème mais visiblement pas chez moi. J'ai relancé docker via le centre de paquet mais toujours le même souci...

Auriez vous une solution à m'apporter ? 

Merci, Guitouuu

Modifié par guitouuu
Précision erreur
Lien vers le commentaire
Partager sur d’autres sites

Bonjour tout le monde,
Un point que j'ai découvert lorsque j'ai mis en place le link aggregation, j'ai ajouté cela dans les paramètres 

networks:
  pihole_network:
    driver: macvlan
    driver_opts:
      parent: ovs_bond0
    ipam:
      config:
        - subnet: 192.168.1.0/24            # <-- Update
          gateway: 192.168.1.3              # <-- Update
          ip_range: 192.168.1.192/24

 

Une question, 

est-il possible d'expliquer un peu plus ces "advanced settings"
 

Merci

 

Advanced DNS settings

Never forward non-FQDNs

When there is a Pi-hole domain set and this box is ticked, this asks FTL that this domain is purely local and FTL may answer queries from /etc/hosts or DHCP leases but should never forward queries on that domain to any upstream servers.

Never forward reverse lookups for private IP ranges

All reverse lookups for private IP ranges (i.e., 192.168.0.x/24, etc.) which are not found in /etc/hosts or the DHCP leases are answered with "no such domain" rather than being forwarded upstream. The set of prefixes affected is the list given in RFC6303.

Important: Enabling these two options may increase your privacy, but may also prevent you from being able to access local hostnames if the Pi-hole is not used as DHCP server.

 
Use DNSSEC

Validate DNS replies and cache DNSSEC data. When forwarding DNS queries, Pi-hole requests the DNSSEC records needed to validate the replies. If a domain fails validation or the upstream does not support DNSSEC, this setting can cause issues resolving domains. Use an upstream DNS server which supports DNSSEC when activating DNSSEC. Note that the size of your log might increase significantly when enabling DNSSEC. A DNSSEC resolver test can be found here.

 

Conditional forwarding

If not configured as your DHCP server, Pi-hole typically won't be able to determine the names of devices on your local network. As a result, tables such as Top Clients will only show IP addresses.

One solution for this is to configure Pi-hole to forward these requests to your DHCP server (most likely your router), but only for devices on your home network. To configure this we will need to know the IP address of your DHCP server and which addresses belong to your local network. Exemplary input is given below as placeholder in the text boxes (if empty).

If your local network spans 192.168.0.1 - 192.168.0.255, then you will have to input 192.168.0.0/24. If your local network is 192.168.47.1 - 192.168.47.255, it will be 192.168.47.0/24 and similar. If your network is larger, the CIDR has to be different, for instance a range of 10.8.0.1 - 10.8.255.255 results in 10.8.0.0/16, whereas an even wider network of 10.0.0.1 - 10.255.255.255 results in 10.0.0.0/8. Setting up IPv6 ranges is exactly similar to setting up IPv4 here and fully supported. Feel free to reach out to us on our Discourse forum in case you need any assistance setting up local host name resolution for your particular system.

You can also specify a local domain name (like fritz.box) to ensure queries to devices ending in your local domain name will not leave your network, however, this is optional. The local domain name must match the domain name specified in your DHCP server for this to work. You can likely find it within the DHCP settings.

 

Lien vers le commentaire
Partager sur d’autres sites

Pour les deux premières fonctionnalités, je ne pourrai pas t'aider plus que ça, c'est un réglage par défaut que je trouve sur d'autres périphériques de mon réseau.

Pour DNSSEC, mon pfSense l'utilise, sur Pi-hole je n'ai pas trouvé de documentation exhaustive à ce sujet, ça a l'air de fonctionner out-of-the-box. C'est un outil pour se prémunir contre le cache poisoning.

En revanche le dernier point je l'explicite dans le tutoriel :

Le 06/02/2021 à 19:04, .Shad. a dit :

C'est une question qui revient souvent, les utilisateurs de Pi-hole n'arrivent pas à afficher les noms d'hôte des périphériques.
Il faut comprendre que Pi-hole n'a connaissance que de ce qu'on lui transmet. Voyons les différents cas de figure :

  • Serveur DHCP et serveur DNS local sont confondus sur le même matériel, le serveur DHCP récupère le nom d'hôte envoyé par le périphérique , et l'inscrit dans sa zone DNS.
    En définissant REV_SERVER_TARGET avec l'IP du serveur DHCP/DNS (étant confondus dans ce cas précis), Pi-hole affichera les noms d'hôte de l'ensemble de vos périphériques dans son tableau de bord.
    C'est le cas le plus fréquent, ces deux serveurs sont hébergés sur la passerelle (votre box ou routeur).
    Dans ce cas, vous devez mettre l'IP du serveur dhcp/dns, ou celle de la passerelle (box ou routeur) si tout y est localisé.
  • Serveur DHCP et serveur DNS local sont distincts. Or, Pi-hole ne permet d'interroger qu'une seule IP.
    Dans ce cas-là vous devez faire pointer REV_SERVER_TARGET sur le serveur qui définit un nom d'hôte et un domaine pour chaque périphérique, donc a priori votre serveur DNS, mais attention, tous les périphériques pour lesquels vous n'avez pas associé d'enregistrement dans votre serveur DNS (car purement des clients par exemple, ce sont eux qui accèdent au monde, pas l'inverse, utilisation typique : vous n'auriez jamais besoin d'accéder à votre tablette, smartphone, etc...) n'auront pas de nom d'hôte attribué, et seule apparaîtra l'IP, si vous avez bien suivi c'est normal car c'est le serveur DHCP qui dispose de cette information. Il faut donc dans ce cas-là définir un nom d'hôte pour chacun des périphériques de votre réseau utilisant Pi-hole comme serveur DNS dans votre zone DNS.
  • La troisième possibilité est d'utiliser Pi-hole comme serveur DNS local, dans ce cas-là le conditional forwarding peut être désactivé.
    Ce point est abordé plus loin dans le tutoriel.

 

Lien vers le commentaire
Partager sur d’autres sites

@.Shad. merci beaucoup

Pour ma part, dans les DNS settings, j'ai uniquement sélectionné Conditional forwarding

Par contre,  ni Never forward non-FQDNs ni Never forward reverse lookups for private IP ranges ni Use DNSSEC ne sont cochés dans ma config

Est ce que tu les sélectionnes de ton coté ?

Lien vers le commentaire
Partager sur d’autres sites

@.Shad. merci pour l'info,

Je posais tout simplement la question car chez moi, aucune de ces options ne sont cochées.

J'ai simplement coché le conditional forwarding afin de voir l'identifiant des clients qui sont connectés.
Honnêtement, je ne sais pas trop ce que ça apporte de plus (ça reste très nébuleux pour moi)

 

Lien vers le commentaire
Partager sur d’autres sites

Ben comme tu dis ça permet de voir autre chose que des IP, généralement les périphériques émettent leur propre nom d'hôte auquel vient s'accoler le domaine local poussé par le serveur DHCP.

Ce que j'ai chez moi, et je me rends compte que j'ai oublié de parler des autres champs dans Conditional Forwarding que le deuxième. 😄

pihole_conditional_forwarding.png

Le premier champ est nécessaire, il définit le sous-réseau que tu utilises dans ton réseau local. C'est bien expliqué dans le paragraphe descriptif de l'impression d'écran. Le nom de domaine n'est normalement pas nécessaire, si pas ça se trouve normalement dans les infos de ton serveur DHCP.

Lien vers le commentaire
Partager sur d’autres sites

Il y a 14 heures, .Shad. a dit :

Et du coup ? Ça marche ? Pas bien suivi si c'était juste une remarque de ta part ou une question 😉

ça fonctionne nickel ! ça filtre et j'ai les infos nécessaires pour gérer les différents clients.
Je ne pense pas que ces settings influences la capacité de pi-hole à filtrer

Il faudrait que j'essaie en les activants

Une question, quelles listes utilises tu pour filtrer ?
J'utilise ce portail 
https://firebog.net, j'ai pris toutes les listes mais j'arrive à plus de 1.400.000 de domaines !

Lien vers le commentaire
Partager sur d’autres sites

Rejoindre la conversation

Vous pouvez publier maintenant et vous inscrire plus tard. Si vous avez un compte, connectez-vous maintenant pour publier avec votre compte.

Invité
Répondre à ce sujet…

×   Collé en tant que texte enrichi.   Coller en tant que texte brut à la place

  Seulement 75 émoticônes maximum sont autorisées.

×   Votre lien a été automatiquement intégré.   Afficher plutôt comme un lien

×   Votre contenu précédent a été rétabli.   Vider l’éditeur

×   Vous ne pouvez pas directement coller des images. Envoyez-les depuis votre ordinateur ou insérez-les depuis une URL.

×
×
  • Créer...

Information importante

Nous avons placé des cookies sur votre appareil pour aider à améliorer ce site. Vous pouvez choisir d’ajuster vos paramètres de cookie, sinon nous supposerons que vous êtes d’accord pour continuer.