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

Über das Projekt

Install, run and configure Pi-Hole using docker and a CSV file where you can map your hosts to IP addresses.

Installieren
ansible-galaxy install authsec.pihole
GitHub Repository
Lizenz
mit
Downloads
131
Besitzer