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