authsec.pihole

Pihole

Rola Pi-hole. To zainstaluje Pi-hole®: Czarne dziury dla reklam internetowych – czarna dziura dla reklam internetowych dla Ciebie.

Pomaga również w zarządzaniu Pi-Hole za pomocą prostego pliku CSV, który możesz edytować w ulubionym edytorze.

Wymagania

Host działający na systemie Ubuntu/Debian/Photon OS lub np. Raspberry Pi z systemem Raspberry Pi OS (Lite).

Jeśli napotkasz problemy, warto zajrzeć do dokumentacji Pi-hole.

Plik CSV hosta

Konfiguracja Pi-hole odbywa się za pomocą pliku CSV. Dzięki temu masz dobry przegląd i łatwiej zarządzasz swoim środowiskiem.

Rola zawiera pełny przykładowy plik CSV w folderze files do przeglądania.

Poniższe wiersze pokazują ustawienia dhcp-option, które będą zapisane w plikach konfiguracyjnych dnsmasq. Wiersze te oznaczają jeden adres IP jako serwer DNS oparty na maszynie wirtualnej oraz serwer DNS na Raspberry Pi.

Ustaw opcje DHCP

hostname,domainname,ip_address,static,mac_address,dhcp_option,type,comment
,,,,,"tag:vm-dns,option:dns-server,192.168.30.253","<<tag>>","Ustawia wartość opcji konfiguracyjnej dhcp-option, tutaj który serwer DNS użyć"
,,,,,"tag:pi-dns,option:dns-server,192.168.30.254","<<tag>>","Ustawia wartość opcji konfiguracyjnej dhcp-option, tutaj który serwer DNS użyć"

Uwaga: Jeśli konfigurować wiele serwerów DNS, prawdopodobnie będziesz chciał ustawić opcję riv_pihole_dns_default_tag podczas konfigurowania, aby ustawić domyślny serwer DNS dla klientów bez specyficznej konfiguracji.

Ustaw mapowanie IP/Host

Poniższa konfiguracja ustawia hosta o nazwie slash, aby otrzymał adres IP 192.168.128.2, jeśli ten adres jest jeszcze dostępny. Jeśli przydzielono już dzierżawę DHCP innemu urządzeniu, zostanie przypisany nowy adres IP. Określa również maszynę jako hosta fizycznego.

hostname,domainname,ip_address,static,mac_address,dhcp_option,type,comment
slash,example.net,192.168.128.2,true,,,"<<physical>>","Host ESXi"

Ustaw statyczny adres IP

Jeśli chcesz mieć pewność, że adres IP jest przypisany tylko do konkretnej nazwy hosta, możesz ustawić pole static na true, aby to osiągnąć. Ustawienie tej opcji spowoduje, że dnsmasq zignoruje żądania DHCP z jakiegokolwiek hosta o nazwie vmhole, jak pokazano w poniższym przykładzie. Typ również został oznaczony jako maszyna wirtualna.

hostname,domainname,ip_address,static,mac_address,dhcp_option,type,comment
vmhole,example.net,192.168.128.253,true,,,"<<virtual>>","Serwer DNS wirtualnej maszyny Pi-hole"

Ustaw mapowanie adres MAC/adres IP

Aby przypisać konkretny adres IP i nazwę hosta do specjalnego urządzenia przy użyciu adresu MAC, użyj poniższego wpisu w bazie danych konfiguracji 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>>","Serwer DNS wirtualnej maszyny Pi-hole"

Ustaw inny serwer DNS

Ustawienie specjalnego serwera DNS dla niektórych urządzeń można osiągnąć, dostarczając odpowiednią opcję DHCP podczas definiowania mapowania. Poniższy przykład pokazuje, jak ustawić serwer DNS vm-dns dla hosta 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","Serwer Proxy VM oparty na obrazie docker, używający serwera vm-dns"

Zmienne roli

Rola używa następujących zmiennych:

Zmienna Domyślna Opis
riv_pihole_admin_password_generated {{ lookup('password', '/dev/null length=15 chars=ascii_letters') }} Ta zmienna ustawia hasło do interfejsu użytkownika. Jeśli hasło nie jest ustawione, zostanie automatycznie wygenerowane.
riv_pihole_dns_default_tag Ta zmienna ustawia tag DHCP, który pozwala określić domyślny serwer DNS dla hostów, które nie są wymienione w pliku konfiguracyjnym CSV.
riv_pihole_show_summary false Jeśli ustawione na true, ostatni krok pokaże (wygenerowane) hasło w czystym tekście wraz z użytecznymi informacjami, takimi jak adres IP i nazwa hosta, na którym zainstalowano pi-hole.
riv_pihole_docker_network host Sieć, do której łączy się docker. Jeśli chcesz używać DHCP, musisz połączyć się z siecią hosta.
riv_pihole_docker_purge_networks yes Usuwa utworzoną sieć po wyłączeniu kontenera docker.
riv_pihole_dhcp_active false Włącz lub wyłącz wbudowany serwer DHCP. Jeśli chcesz używać Pi-hole jako serwera DHCP, musisz to włączyć.
riv_pihole_dhcp_leasetime 24h Domyślny czas dzierżawy do ustawienia przy przydzielaniu adresu IP klientowi.
riv_pihole_dhcp_start 192.168.1.2 Początkowy zakres wbudowanego serwera DHCP.
riv_pihole_dhcp_end 192.168.1.253 Ostatni adres wbudowanego serwera DHCP.
riv_pihole_dhcp_router 192.168.1.1 Router, który powinien być reklamowany dla klientów pobierających adres IP.
riv_pihole_domain example.net Domenę twojej sieci lokalnej.
riv_pihole_interface eth0 Interfejs, do którego będą się bindować procesy wewnątrz Pi-hole.
riv_pihole_dhcp_ipv6 false Włącz wsparcie dla IPv6 w DHCP.
riv_pihole_dhcp_rapid_commit false Przełącznik kontrolny dla opcji szybkiego zatwierdzenia.
riv_pihole_dnsmasq_listening all Interfejs, na którym dnsmasq powinien nasłuchiwać.
riv_pihole_query_logging true Rejestruj zapytania DNS.
riv_pihole_install_web_server true Zainstaluj wbudowany serwer www.
riv_pihole_install_web_interface true Zainstaluj interfejs webowy.
riv_pihole_lighttpd_enabled Włącz lighttpd
riv_pihole_ipv4_address {{ hostvars[inventory_hostname]['ansible_default_ipv4']['address'] | default(ansible_host) }} Adres IPv4, na którym Pi-Hole będzie nasłuchiwał.
riv_pihole_ipv6_address Adres IPv6, na którym Pi-Hole będzie nasłuchiwał.
riv_pihole_dns_bogus_priv Kontroluje fałszywe prywatne odwrotne zapytania DNS.
riv_pihole_dns_fqdn_required Kontroluje, czy niekwalifikowana nazwa jest umieszczana w DNS.
riv_pihole_dnssec Kontroluje DNSSEC.
riv_pihole_rev_server_enabled Włącz przekazywanie warunkowe DNS dla rozpoznawania nazw urządzeń.
riv_pihole_rev_server_cidr Jeśli przekazywanie warunkowe jest włączone, ustaw strefę DNS odwrotnych (np. 192.168.0.0/24).
riv_pihole_rev_server_domain Jeśli przekazywanie warunkowe jest włączone, ustaw domenę lokalnego routera sieciowego (np. example.net).
riv_pihole_rev_server_target Jeśli przekazywanie warunkowe jest włączone, ustaw IP lokalnego routera sieciowego.
riv_pihole_docker_image pihole/pihole:latest Który obraz docker pobrać. Możesz np. określić wersję.
riv_pihole_configuration_base_folder /opt/pihole Gdzie chcesz, aby twoja konfiguracja znajdowała się na docelowym hoście.
riv_pihole_etc_pihole_folder {{ riv_pihole_configuration_base_folder }}/pihole Kontroluj położenie folderu pihole.
riv_pihole_etc_dnsmasq_folder {{ riv_pihole_configuration_base_folder }}/dnsmasq.d Kontroluj położenie folderu dnsmasq.d.
riv_pihole_sys_dns_server1 127.0.0.1 Systemowe serwery DNS dla Pi-hole. Pierwszy musi być 127.0.0.1.
riv_pihole_sys_dns_server2 8.8.8.8 Systemowy serwer DNS dla Pi-hole.
riv_pihole_dns_server1 1.1.1.1 Serwer DNS używany wewnątrz kontenera docker.
riv_pihole_dns_server2 8.8.8.8 Serwer DNS używany wewnątrz kontenera docker.
riv_pihole_serverip {{ hostvars[inventory_hostname]['ansible_default_ipv4']['address'] | default(ansible_host) }} Adres IP hosta Pi-hole.
riv_pihole_timezone Europe/Berlin Twoja strefa czasowa.
riv_pihole_open_firewall_ports true Ustaw na false, jeśli nie chcesz, aby rola otwierała wymagane porty zapory ogniowej.
riv_pihole_dns_db_configuration_file {{ role_path }}/files/mappings.csv Lokalizacja pliku konfiguracyjnego DNS. Domyślny plik wskazany powinien być skopiowany i odpowiednio dostosowany.

Przykładowy Playbook

Poniższy przykład pokazuje playbook, którego możesz użyć, aby skonfigurować Pi-hole na maszynie wirtualnej opartej na Photon OS, co jest odzwierciedlone w pliku inwentarza.

Struktura folderów

Struktura folderów wygląda następująco (folder ról zostanie utworzony automatycznie później):

|-- 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

Importuj rolę

Możesz zaimportować rolę do swojego projektu, używając:

#> ansible-galaxy install -p roles authsec.pihole

Utwórz bazę danych

To jest kopia przykładowej bazy danych w 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","Ustawia wartość opcji konfiguracyjnej dhcp-option"
,,,,,"tag:pi-dns,option:dns-server,192.168.128.254","Ustawia wartość opcji konfiguracyjnej dhcp-option"
slash,example.net,192.168.128.2,,,,"Host ESXi"
mohh,example.net,192.168.128.5,,,,"Mózg (serwer vCenter)"
blib,example.net,192.168.128.18,,00:0c:29:43:37:dc,"pi-dns","VM używająca serwera DNS (i DHCP) opartego na Raspberry Pi"
photon,example.net,192.168.128.19,,00:0c:29:51:80:1f,"vm-dns","VM używająca serwera DNS opartego na VM"
vmhole,example.net,192.168.128.253,true,,,"Serwer DNS wirtualnej maszyny Pi-hole"
pihole,example.net,192.168.128.254,,,,"Serwer DNS i DHCP Pi-Hole oparty na Raspberry Pi dla tej sieci, oparty na dockerze i zarządzany przez 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:

---
# Skonfiguruj maszynę do uruchamiania pi-hole w kontenerze 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"

Uruchom ansible

Gdy wszystko jest skonfigurowane, możesz uruchomić ansible, aby skonfigurować Pi-hole w systemie określonym w inventory.

#> ansible-playbook -i inventory pihole-vm.yml

Licencja

MIT

O projekcie

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

Zainstaluj
ansible-galaxy install authsec.pihole
Licencja
mit
Pobrania
131
Właściciel