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