authsec.pihole
Pihole
Rôle Pi-hole. Cela installera Pi-hole® : Un trou noir pour les publicités Internet pour vous.
Cela vous aide également à gérer Pi-Hole à l'aide d'un simple fichier CSV que vous pouvez éditer avec votre éditeur préféré.
Exigences
Un hôte exécutant Ubuntu/Debian/Photon OS ou par exemple un Raspberry Pi exécutant Raspberry Pi OS (Lite).
Si vous rencontrez des problèmes, un coup d'œil à la documentation de Pi-hole peut vous aider.
Fichier CSV de l'hôte
La configuration de Pi-hole se fait via un fichier CSV. Cela vous donne une belle vue d'ensemble et facilite la gestion de votre environnement.
Le rôle comprend un fichier CSV d'exemple complet dans le dossier files
pour que vous puissiez le consulter.
Les lignes suivantes montrent les paramètres dhcp-option
qui seront écrits dans le fichier de configuration dnsmasq. Les lignes identifient une adresse IP comme le serveur DNS basé sur une VM et le serveur DNS basé sur Raspberry Pi fonctionnant sur un véritable Raspberry Pi.
Définir les options DHCP
hostname,domainname,ip_address,static,mac_address,dhcp_option,type,comment
,,,,,"tag:vm-dns,option:dns-server,192.168.30.253","<<tag>>","Définit la valeur de l'option de configuration dhcp-option, ici quel serveur DNS utiliser"
,,,,,"tag:pi-dns,option:dns-server,192.168.30.254","<<tag>>","Définit la valeur de l'option de configuration dhcp-option, ici quel serveur DNS utiliser"
Note : Si vous configurez plusieurs serveurs DNS ici, vous voudrez probablement définir l'option riv_pihole_dns_default_tag
lors de la configuration pour définir un serveur DNS par défaut pour les clients sans configuration spécifique.
Configurer le mapping IP/Hôte
La configuration ci-dessous configure l'hôte avec le nom slash
pour recevoir une adresse IP de 192.168.128.2
si cette adresse est encore disponible. Si un bail DHCP a déjà été attribué à une autre machine, une nouvelle adresse IP sera assignée. Cela identifie également la machine comme un hôte physique.
hostname,domainname,ip_address,static,mac_address,dhcp_option,type,comment
slash,example.net,192.168.128.2,true,,,"<<physical>>","Hôte ESXi"
Configurer une adresse IP statique
Si vous souhaitez vous assurer que l'adresse IP est attribuée uniquement à un nom d'hôte spécifique, vous pouvez définir le champ static
sur true
pour y parvenir. Définir cette option indiquera à dnsmasq d'ignorer les demandes DHCP de tout hôte nommé vmhole
, comme indiqué dans l'exemple ci-dessous. Le type est également identifié comme une machine virtuelle.
hostname,domainname,ip_address,static,mac_address,dhcp_option,type,comment
vmhole,example.net,192.168.128.253,true,,,"<<virtual>>","Serveur DNS virtuel Pi-hole"
Configurer le mapping adresse Mac/adresse IP
Pour attribuer une adresse IP et un nom d'hôte spécifiques à un appareil spécial en utilisant l'adresse MAC de l'appareil, utilisez l'entrée suivante dans la base de données de configuration CSV.
hostname,domainname,ip_address,static,mac_address,dhcp_option,type,comment
blib,example.net,192.168.128.18,,00:0c:29:43:37:dc,,"<<virtual>>","Serveur DNS virtuel Pi-hole"
Définir un serveur DNS différent
La configuration d'un serveur DNS spécial pour certains appareils peut être réalisée en fournissant l'option DHCP appropriée lors de la définition du mapping. L'exemple ci-dessous montre comment définir le serveur DNS vm-dns
pour l'hôte photon.
hostname,domainname,ip_address,static,mac_address,dhcp_option,type,comment
photon,example.net,192.168.128.19,,00:0c:29:51:80:1f,"vm-dns","Serveur proxy VM basé sur une image docker, utilisant le serveur vm-dns"
Variables du rôle
Le rôle utilise les variables suivantes :
Variable | Par défaut | Description |
---|---|---|
riv_pihole_admin_password_generated | {{ lookup('password', '/dev/null length=15 chars=ascii_letters') }} | Cette variable définit le mot de passe pour l'interface utilisateur Web. S'il n'y a pas de mot de passe défini, il sera généré automatiquement. La valeur du mot de passe est affichée en texte brut à la dernière étape si la variable riv_pihole_show_summary est définie sur true . |
riv_pihole_dns_default_tag | Cette variable définit un tag DHCP qui vous permet de spécifier un serveur DNS par défaut pour les hôtes non listés dans le fichier de configuration CSV. | |
riv_pihole_show_summary | false | Si défini sur true , la dernière étape affichera le mot de passe (généré) en texte brut avec quelques informations utiles comme l'adresse IP et le nom de l'hôte sur lequel Pi-hole a été installé. |
riv_pihole_docker_network | host | Le réseau auquel docker se connecte. Si vous souhaitez utiliser DHCP, vous devez vous connecter au réseau de l'hôte. |
riv_pihole_docker_purge_networks | yes | Supprime le réseau créé lorsque le conteneur docker est arrêté. |
riv_pihole_dhcp_active | false | Activez ou désactivez le serveur DHCP intégré. Si vous souhaitez utiliser Pi-hole en tant que serveur DHCP, vous devez activer cette option. |
riv_pihole_dhcp_leasetime | 24h | La durée de bail par défaut à définir lors de l'attribution d'une adresse IP à un client. |
riv_pihole_dhcp_start | 192.168.1.2 | La plage de départ du serveur DHCP intégré. |
riv_pihole_dhcp_end | 192.168.1.253 | La dernière adresse du serveur DHCP intégré. |
riv_pihole_dhcp_router | 192.168.1.1 | Le routeur qui doit être annoncé aux clients obtenant une adresse IP. |
riv_pihole_domain | example.net | Le domaine de votre réseau local. |
riv_pihole_interface | eth0 | L'interface à laquelle Pi-hole se liera. |
riv_pihole_dhcp_ipv6 | false | Activez le support IPv6 sur DHCP. |
riv_pihole_dhcp_rapid_commit | false | Option de contrôle pour l'option de commit rapide. |
riv_pihole_dnsmasq_listening | all | L'interface sur laquelle dnsmasq doit écouter. |
riv_pihole_query_logging | true | Journalisez les requêtes DNS. |
riv_pihole_install_web_server | true | Installez le serveur web intégré. |
riv_pihole_install_web_interface | true | Installez l'interface Web. |
riv_pihole_lighttpd_enabled | Activez lighttpd. | |
riv_pihole_ipv4_address | {{ hostvars[inventory_hostname]['ansible_default_ipv4']['address'] | default(ansible_host) }} | L'adresse IPv4 à laquelle vous souhaitez que Pi-Hole écoute. |
riv_pihole_ipv6_address | L'adresse IPv6 à laquelle vous souhaitez que Pi-Hole écoute. | |
riv_pihole_dns_bogus_priv | Contrôler les recherches inversées privées. | |
riv_pihole_dns_fqdn_required | Contrôle si le nom non qualifié est également mis dans le DNS. | |
riv_pihole_dnssec | Contrôler DNSSEC. | |
riv_pihole_rev_server_enabled | Activez le transfert conditionnel DNS pour la résolution de noms d'appareil. | |
riv_pihole_rev_server_cidr | Si le transfert conditionnel est activé, définissez la zone DNS inversée (par exemple 192.168.0.0/24). | |
riv_pihole_rev_server_domain | Si le transfert conditionnel est activé, définissez le domaine du routeur du réseau local (par exemple example.net). | |
riv_pihole_rev_server_target | Si le transfert conditionnel est activé, définissez l'adresse IP du routeur du réseau local. | |
riv_pihole_docker_image | pihole/pihole:latest | Quelle image docker tirer. Vous pouvez par exemple spécifier une version. |
riv_pihole_configuration_base_folder | /opt/pihole | Où souhaitez-vous que votre configuration se trouve sur l'hôte cible. |
riv_pihole_etc_pihole_folder | {{ riv_pihole_configuration_base_folder }}/pihole | Contrôler la position du dossier pihole. |
riv_pihole_etc_dnsmasq_folder | {{ riv_pihole_configuration_base_folder }}/dnsmasq.d | Contrôler la position du dossier dnsmasq.d. |
riv_pihole_sys_dns_server1 | 127.0.0.1 | Serveurs DNS système pour Pi-hole. Le premier DOIT ÊTRE 127.0.0.1. |
riv_pihole_sys_dns_server2 | 8.8.8.8 | Serveur DNS système pour Pi-hole. |
riv_pihole_dns_server1 | 1.1.1.1 | Serveur DNS utilisé à l'intérieur du conteneur docker. |
riv_pihole_dns_server2 | 8.8.8.8 | Serveur DNS utilisé à l'intérieur du conteneur docker. |
riv_pihole_serverip | {{ hostvars[inventory_hostname]['ansible_default_ipv4']['address'] | default(ansible_host) }} | L'adresse IP de l'hôte Pi-hole. |
riv_pihole_timezone | Europe/Berlin | Votre fuseau horaire. |
riv_pihole_open_firewall_ports | true | Définissez sur false si vous ne voulez pas que le rôle ouvre les ports de pare-feu requis. |
riv_pihole_dns_db_configuration_file | {{ role_path }}/files/mappings.csv | L'emplacement du fichier de configuration DNS. Le fichier par défaut pointé doit être copié et adapté de manière appropriée. |
Exemple de Playbook
L'exemple ci-dessous montre un playbook que vous pouvez utiliser pour configurer Pi-hole sur une machine virtuelle basée sur Photon OS, comme reflété dans le fichier d'inventaire.
Structure de dossier
La structure du dossier est la suivante (le dossier des rôles sera créé automatiquement plus tard) :
|-- dns-db.csv
|-- inventory
|-- pihole-vm.yml
`-- roles
`-- authsec.pihole
|-- defaults
| `-- main.yml
|-- files
| `-- mappings.csv
|-- LICENSE
|-- meta
| `-- main.yml
|-- README.md
|-- tasks
| |-- checkssh-photonos.yml
| |-- checkssh.yml
| |-- firewall-iptables.yml
| |-- install-apt.yml
| |-- install-photonos.yml
| `-- main.yml
`-- templates
|-- 02-pihole-dhcp.conf.j2
|-- 10-pihole-custom-static.conf.j2
`-- setupVars.conf.j2
Importer le rôle
Vous pouvez importer le rôle dans votre projet en utilisant :
#> ansible-galaxy install -p roles authsec.pihole
Créer la base de données
Ceci est une copie de la base de données d'exemple dans roles/authsec.pihole/files
.
dns-db.csv :
hostname,domainname,ip_address,static,mac_address,dhcp_option,comment
,,,,,"tag:vm-dns,option:dns-server,192.168.128.253","Définit la valeur de l'option de configuration dhcp-option"
,,,,,"tag:pi-dns,option:dns-server,192.168.128.254","Définit la valeur de l'option de configuration dhcp-option"
slash,example.net,192.168.128.2,,,,"Hôte ESXi"
mohh,example.net,192.168.128.5,,,,"Le Cerveau (Serveur vCenter)"
blib,example.net,192.168.128.18,,00:0c:29:43:37:dc,"pi-dns","VM utilisant un serveur DNS (et DHCP) basé sur Raspberry Pi"
photon,example.net,192.168.128.19,,00:0c:29:51:80:1f,"vm-dns","VM utilisant un serveur DNS basé sur VM"
vmhole,example.net,192.168.128.253,true,,,"Serveur DNS virtuel Pi-hole"
pihole,example.net,192.168.128.254,,,,"Serveur DNS et DHCP Pi-hole soutenu par Raspberry Pi pour ce réseau, basé sur Docker et géré par Ansible"
inventory :
[dns_vms]
vmhole.example.net ansible_host=192.168.128.253 ansible_user=pihole ansible_become_method='su' ansible_become_password='kevin.is.dead' ansible_python_interpreter=/usr/bin/python3
pihole-vm.yml :
---
# Configure une machine pour exécuter pi-hole à l'intérieur d'un conteneur docker
- hosts: dns_vms
gather_facts: yes
become: yes
tasks:
- include_role:
name: authsec.pihole
vars:
# true|false
riv_pihole_admin_password: "secure.me"
riv_pihole_dhcp_active: "false"
riv_pihole_dhcp_start: "192.168.128.8"
riv_pihole_dhcp_end: "192.168.128.252"
riv_pihole_dhcp_router: "192.168.128.1"
riv_pihole_domain: "example.net"
riv_pihole_show_summary: true
riv_pihole_dns_db_configuration_file: "dns-db.csv"
Exécuter ansible
Une fois que tout est configuré, vous pouvez exécuter ansible
pour mettre en place Pi-hole sur le système configuré dans l'inventaire.
#> ansible-playbook -i inventory pihole-vm.yml
Licence
MIT
Install, run and configure Pi-Hole using docker and a CSV file where you can map your hosts to IP addresses.
ansible-galaxy install authsec.pihole