authsec.pihole
Pihole
Pi-hole Rolle. Dies wird Pi-hole®: Ein schwarzes Loch für Internet-Werbung für Sie installieren.
Es hilft Ihnen auch bei der Verwaltung von Pi-hole mithilfe einer einfachen CSV-Datei, die Sie mit Ihrem bevorzugten Editor bearbeiten können.
Voraussetzungen
Ein Host, der Ubuntu/Debian/Photon OS oder z.B. einen Raspberry Pi mit Raspberry Pi OS (Lite) ausführt.
Wenn Sie auf Probleme stoßen, kann ein Blick in die Pi-hole-Dokumentation hilfreich sein.
Host CSV-Datei
Die Konfiguration von Pi-hole erfolgt über eine CSV-Datei. Dies gibt Ihnen einen guten Überblick und erleichtert die Verwaltung Ihrer Umgebung.
Die Rolle enthält eine vollständige Beispiel-CSV-Datei im files
-Ordner zur Überprüfung.
Die folgenden Zeilen zeigen dhcp-option
-Einstellungen, die in die dnsmasq-Konfigurationsdatei geschrieben werden. Die Zeilen kennzeichnen eine IP-Adresse als den vm-basierten DNS-Server und den auf einem tatsächlichen Raspberry Pi laufenden DNS-Server.
DHCP-Optionen einstellen
hostname,domainname,ip_address,static,mac_address,dhcp_option,type,comment
,,,,,"tag:vm-dns,option:dns-server,192.168.30.253","<<tag>>","Legt den Wert der dhcp-option-Konfiguration fest, hier welcher DNS-Server verwendet werden soll"
,,,,,"tag:pi-dns,option:dns-server,192.168.30.254","<<tag>>","Legt den Wert der dhcp-option-Konfiguration fest, hier welcher DNS-Server verwendet werden soll"
Hinweis: Wenn Sie hier mehrere DNS-Server einrichten, möchten Sie wahrscheinlich die Option riv_pihole_dns_default_tag
beim Konfigurieren Ihrer Einrichtung festlegen, um einen Standard-DNS-Server für Clients ohne spezifische Konfiguration festzulegen.
IP/Host-Zuordnung einrichten
Die folgende Konfiguration weist dem Host mit dem Namen slash
die IP-Adresse 192.168.128.2
zu, sofern diese Adresse noch verfügbar ist. Wenn ein DHCP-Lease bereits an ein anderes Gerät vergeben wurde, wird eine neue IP-Adresse zugewiesen. Außerdem wird das Gerät als physischer Host identifiziert.
hostname,domainname,ip_address,static,mac_address,dhcp_option,type,comment
slash,example.net,192.168.128.2,true,,,"<<physical>>","ESXi Host"
Statische IP-Adresse einrichten
Wenn Sie sicherstellen möchten, dass die IP-Adresse nur einem bestimmten Hostnamen zugewiesen wird, können Sie das Feld static
auf true
setzen. Durch das Setzen dieser Option wird dnsmasq angewiesen, DHCP-Anfragen von Hosts namens vmhole
zu ignorieren, wie im folgenden Beispiel gezeigt. Der Typ wird ebenfalls als virtuelle Maschine identifiziert.
hostname,domainname,ip_address,static,mac_address,dhcp_option,type,comment
vmhole,example.net,192.168.128.253,true,,,"<<virtual>>","Pi-hole Virtuelle Maschine DNS-Server"
Zuordnung von Mac-Adresse/IP-Adresse einrichten
Um einem speziellen Gerät mithilfe der Mac-Adresse des Geräts eine bestimmte IP-Adresse und einen Hostnamen zuzuweisen, verwenden Sie den folgenden Eintrag in der CSV-Konfigurationsdatenbank.
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>>","Pi-hole Virtuelle Maschine DNS-Server"
Anderen DNS-Server einstellen
Die Einrichtung eines speziellen DNS-Servers für einige Geräte kann erreicht werden, indem die entsprechende DHCP-Option beim Definieren der Zuordnung bereitgestellt wird. Das folgende Beispiel zeigt, wie der vm-dns
DNS-Server für den Photon-Host festgelegt wird.
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","Proxy-Server-VM basierend auf einem Docker-Image, verwendet den vm-dns-Server"
Rollenvariablen
Die Rolle verwendet die folgenden Variablen:
Variable | Standard | Beschreibung |
---|---|---|
riv_pihole_admin_password_generated | {{ lookup('password', '/dev/null length=15 chars=ascii_letters') }} | Diese Variable legt das Passwort für die Webbenutzeroberfläche fest. Wenn kein Passwort festgelegt ist, wird es automatisch generiert. Der Passwortwert wird im letzten Schritt im Klartext angezeigt, wenn die Variable riv_pihole_show_summary auf true gesetzt ist. |
riv_pihole_dns_default_tag | Diese Variable legt ein DHCP-Tag fest, mit dem Sie einen Standard-DNS-Server für Hosts, die nicht in der Konfigurations-CSV-Datei aufgeführt sind, angeben können. | |
riv_pihole_show_summary | false | Wenn auf true gesetzt, zeigt der letzte Schritt das (generierte) Passwort im Klartext zusammen mit nützlichen Informationen wie der IP-Adresse und dem Namen des Hosts, auf dem Pi-hole installiert wurde. |
riv_pihole_docker_network | host | Das Netzwerk, mit dem Docker verbunden wird. Wenn Sie DHCP verwenden möchten, müssen Sie sich mit dem Hostnetzwerk verbinden. |
riv_pihole_docker_purge_networks | ja | Entfernen Sie das erstellte Netzwerk, wenn der Docker-Container heruntergefahren wird. |
riv_pihole_dhcp_active | false | Aktivieren oder deaktivieren Sie den integrierten DHCP-Server. Wenn Sie Pi-hole als DHCP-Server verwenden möchten, müssen Sie dies aktivieren. |
riv_pihole_dhcp_leasetime | 24h | Die Standard-Leasezeit, die festgelegt wird, wenn einem Client eine IP-Adresse vergeben wird. |
riv_pihole_dhcp_start | 192.168.1.2 | Der Startbereich des integrierten DHCP-Servers. |
riv_pihole_dhcp_end | 192.168.1.253 | Die letzte Adresse des integrierten DHCP-Servers. |
riv_pihole_dhcp_router | 192.168.1.1 | Der Router, der an Clients, die eine IP-Adresse erhalten, beworben werden soll. |
riv_pihole_domain | example.net | Die Domain Ihres lokalen Netzwerks. |
riv_pihole_interface | eth0 | Die Schnittstelle, an die sich Pi-hole binden wird. |
riv_pihole_dhcp_ipv6 | false | Aktivieren Sie die IPv6-Unterstützung im DHCP. |
riv_pihole_dhcp_rapid_commit | false | Steuerungsschalter für die schnelle Bestätigungsoption. |
riv_pihole_dnsmasq_listening | all | Die Schnittstelle, auf der dnsmasq lauschen soll. |
riv_pihole_query_logging | true | Log DNS-Anfragen. |
riv_pihole_install_web_server | true | Installieren Sie den integrierten Web-Server. |
riv_pihole_install_web_interface | true | Installieren Sie die Web-Oberfläche. |
riv_pihole_lighttpd_enabled | Aktivieren Sie lighttpd. | |
riv_pihole_ipv4_address | {{ hostvars[inventory_hostname]['ansible_default_ipv4']['address'] | default(ansible_host) }} | Die IPv4-Adresse, auf die Pi-Hole lauschen soll. |
riv_pihole_ipv6_address | Die IPv6-Adresse, auf die Pi-Hole lauschen soll. | |
riv_pihole_dns_bogus_priv | Steuerung falscher privater Rückwärtssuchanfragen. | |
riv_pihole_dns_fqdn_required | Steuert, ob der unqualifizierte Name auch in DNS gesetzt wird. | |
riv_pihole_dnssec | Steuerung von DNSSEC. | |
riv_pihole_rev_server_enabled | Aktivieren Sie die DNS-bedienungsbedingte Weiterleitung für die Auflösung von Gerätenamen. | |
riv_pihole_rev_server_cidr | Wenn die bedingte Weiterleitung aktiviert ist, setzen Sie die rückwärtige DNS-Zone (z.B. 192.168.0.0/24). | |
riv_pihole_rev_server_domain | Wenn die bedingte Weiterleitung aktiviert ist, setzen Sie die Domain des lokalen Netzwerkrouters (z.B. example.net). | |
riv_pihole_rev_server_target | Wenn die bedingte Weiterleitung aktiviert ist, setzen Sie die IP des lokalen Netzwerkrouters. | |
riv_pihole_docker_image | pihole/pihole:latest | Welches Docker-Image heruntergeladen werden soll. Sie können z.B. eine Version angeben. |
riv_pihole_configuration_base_folder | /opt/pihole | Wo möchten Sie, dass Ihre Konfiguration auf dem Zielhost gespeichert wird? |
riv_pihole_etc_pihole_folder | {{ riv_pihole_configuration_base_folder }}/pihole | Steuert den Speicherort des pihole-Ordners. |
riv_pihole_etc_dnsmasq_folder | {{ riv_pihole_configuration_base_folder }}/dnsmasq.d | Steuert den Speicherort des dnsmasq.d-Ordners. |
riv_pihole_sys_dns_server1 | 127.0.0.1 | System-DNS-Server für Pi-hole. Der erste muss 127.0.0.1 sein. |
riv_pihole_sys_dns_server2 | 8.8.8.8 | System-DNS-Server für Pi-hole. |
riv_pihole_dns_server1 | 1.1.1.1 | DNS-Server, der innerhalb des Docker-Containers verwendet wird. |
riv_pihole_dns_server2 | 8.8.8.8 | DNS-Server, der innerhalb des Docker-Containers verwendet wird. |
riv_pihole_serverip | {{ hostvars[inventory_hostname]['ansible_default_ipv4']['address'] | default(ansible_host) }} | Die IP-Adresse des Pi-hole-Hosts. |
riv_pihole_timezone | Europe/Berlin | Ihre Zeitzone. |
riv_pihole_open_firewall_ports | true | Auf false setzen, wenn Sie nicht möchten, dass die Rolle die erforderlichen Firewall-Ports öffnet. |
riv_pihole_dns_db_configuration_file | {{ role_path }}/files/mappings.csv | Der Speicherort der DNS-Konfigurationsdatei. Die Standarddatei sollte kopiert und entsprechend angepasst werden. |
Beispiel-Playbook
Das folgende Beispiel zeigt ein Playbook, das Sie verwenden können, um Pi-hole auf einer Photon OS-basierten virtuellen Maschine zu konfigurieren, die in der Inventardatei abgebildet ist.
Ordnerstruktur
Die Ordnerstruktur ist wie folgt (der Rollenordner wird später automatisch erstellt):
|-- 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
Rolle importieren
Sie können die Rolle mit folgendem Befehl in Ihr Projekt importieren:
#> ansible-galaxy install -p roles authsec.pihole
Datenbank erstellen
Dies ist eine Kopie der Beispieldatenbank in 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","Legt den Wert der dhcp-option-Konfiguration fest"
,,,,,"tag:pi-dns,option:dns-server,192.168.128.254","Legt den Wert der dhcp-option-Konfiguration fest"
slash,example.net,192.168.128.2,,,,"ESXi Host"
mohh,example.net,192.168.128.5,,,,"Das Gehirn (vCenter Server)"
blib,example.net,192.168.128.18,,00:0c:29:43:37:dc,"pi-dns","VM, die den Raspberry Pi-basierten DNS- (und DHCP-)Server verwendet"
photon,example.net,192.168.128.19,,00:0c:29:51:80:1f,"vm-dns","VM, die den VM-basierten DNS-Server verwendet"
vmhole,example.net,192.168.128.253,true,,,"Pi-hole Virtuelle Maschine DNS-Server"
pihole,example.net,192.168.128.254,,,,"Raspberry Pi-basierter Pi-hole DNS- und DHCP-Server für dieses Netzwerk, dockerbasiert und ansible-gemangt"
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:
---
# Konfigurieren Sie eine Maschine, die pi-hole in einem Docker-Container ausführt
- 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"
Ansible ausführen
Sobald alles konfiguriert ist, können Sie ansible
ausführen, um Pi-hole auf dem im inventory
konfigurierten System einzurichten.
#> ansible-playbook -i inventory pihole-vm.yml
Lizenz
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