LW IT Solutions logo LW IT Solutions logo LW IT Solutions
« Przegląd bloga /IT & Networks/Tutorials / Lokalne rozwiązywanie i filtrowanie zapytań DNS: konfiguracja...
Ten artykuł w innych językach:

Lokalne rozwiązywanie i filtrowanie zapytań DNS: konfiguracja Pi-hole z Unbound

Lokalne rozwiązywanie i filtrowanie zapytań DNS: konfiguracja Pi-hole z Unbound

Management Summary

DNS zamienia nazwy stron na adresy potrzebne do ich otwarcia. W sieci domowej lub firmowej Pi-hole może filtrować niepożądane nazwy, a Unbound wyszukiwać dozwolone cele. Razem tworzą lokalnie zarządzaną usługę i ograniczają zależność od jednego publicznego dostawcy. Różne zabezpieczenia mają różne zadania: sprawdzanie podpisów pomaga wykrywać zmienione odpowiedzi, a szyfrowanie chroni przesyłanie zapytań. Żadne z nich samo nie ukrywa wszystkich zapytań przed każdą stroną.

Co się stanie, jeśli …? ↓

Spis treści
  1. 1. Filtrowanie, rekursja i DNSSEC
  2. 2. Przykład dla Debiana lub Raspberry Pi OS
  3. 3. Połączenie z Pi-hole i kontrola rzeczywistej trasy
  4. 4. DoH jako inny tryb działania
  5. Pytania i odpowiedzi
  6. Źródła

Pi-hole i Unbound pełnią różne funkcje: Pi-hole filtruje nazwy DNS według reguł, a Unbound rozwiązuje dozwolone zapytania i sprawdza DNSSEC. Centralny publiczny resolwer przestaje być punktem zbierającym przekazywane zapytania. Nadal potrzebne są serwery root, TLD i autorytatywne. Samo połączenie tych narzędzi nie tworzy kompletnej architektury zero trust.

1. Filtrowanie, rekursja i DNSSEC

Droga do odpowiedzi DNS: Resolwer znajduje odpowiedź na pytanie DNS. Przy rekursji podąża za odesłaniami między serwerami zamiast przekazywać całe zadanie jednemu publicznemu resolwerowi. Serwery root wskazują serwery końcówek takich jak .com, czyli domen najwyższego poziomu (TLD). Serwery autorytatywne przechowują rekordy DNS właściwej strefy. Pamięć podręczna zachowuje wcześniejsze odpowiedzi przez pewien czas i ogranicza ponowne zapytania.

DNS przyporządkowuje nazwy, np. example.com, do adresów. Publiczny resolwer może zapisywać otrzymane nazwy, ale zwykłe zapytanie DNS nie zawiera pełnej ścieżki URL, treści strony ani wszystkich metadanych ruchu sieciowego.

  • Pi-hole: obsługuje zapytania urządzeń faktycznie korzystających z Pi-hole jako serwera DNS. Listy domen nie zapewniają pełnego wykrywania reklam ani złośliwego oprogramowania. Przeglądarka z osobną usługą DoH może ominąć lokalny filtr.
  • Unbound: rozwiązuje dozwolone zapytania bez dostępnej odpowiedzi w pamięci podręcznej. Odesłania prowadzą od serwerów root przez TLD do serwerów autorytatywnych; zapisane wcześniej dane mogą skrócić tę drogę.
  • DNSSEC: sprawdza podpisane dane DNS na podstawie łańcucha zaufania. Błędne podpisy powodują odrzucenie odpowiedzi. Strefy poprawnie rozpoznane jako niepodpisane nadal działają, lecz bez kryptograficznego potwierdzenia autentyczności odpowiedzi. DNSSEC nie szyfruje zapytań.
Pi-hole filtruje skonfigurowanych klientów; Unbound rozwiązuje nazwy i sprawdza podpisane dane DNS. Bezpośrednia rekursja zwykle korzysta z nieszyfrowanego transportu.
Pi-hole filtruje skonfigurowanych klientów; Unbound rozwiązuje nazwy i sprawdza podpisane dane DNS. Bezpośrednia rekursja zwykle korzysta z nieszyfrowanego transportu.

2. Przykład dla Debiana lub Raspberry Pi OS

Przykład zakłada Pi-hole i Unbound na wspólnym hoście i we wspólnej przestrzeni sieciowej, bez oddzielnych sieci kontenerów. Zmiany działającego DNS mogą przerwać rozwiązywanie nazw. Przygotowanie obejmuje kopię dotychczasowej konfiguracji i dostępny kanał administracyjny. Rekursja wymaga wychodzącego ruchu UDP oraz TCP na port 53.

Instalacja z utrzymywanych pakietów dystrybucji:

sudo apt update
sudo apt install unbound dnsutils

Przed dodaniem ustawień konieczna jest kontrola konfiguracji pakietu w /etc/unbound/. Root hints to początkowe adresy serwerów root. Kotwica zaufania DNSSEC jest zaufanym kluczem lub rekordem początkowym służącym do sprawdzenia łańcucha podpisów. Pakiety Debiana zwykle zapewniają oba elementy. Istniejącego wpisu auto-trust-anchor-file dla tej samej ścieżki nie należy powielać. Usługa Unbound potrzebuje prawa zapisu do automatycznie aktualizowanej kotwicy. Przy braku takiej konfiguracji punktem odniesienia jest instrukcja pakietu dystrybucji.

Poniższy fragment pliku /etc/unbound/unbound.conf.d/pi-hole.conf uzupełnia konfigurację pakietu:

server:
    interface: 127.0.0.1
    port: 5335
    verbosity: 0
    do-ip4: yes
    do-ip6: no
    do-udp: yes
    do-tcp: yes
    harden-glue: yes
    harden-dnssec-stripped: yes
    use-caps-for-id: no
    edns-buffer-size: 1232
    prefetch: yes
    qname-minimisation: yes
    hide-identity: yes
    hide-version: yes
    private-address: 10.0.0.0/8
    private-address: 172.16.0.0/12
    private-address: 192.168.0.0/16
    private-address: 169.254.0.0/16
    private-address: fc00::/7
    private-address: fe80::/10

do-ip6: no wybiera tutaj transport IPv4; rekordy AAAA zawierające adresy IPv6 pozostają dostępne. Przy działającym natywnym IPv6 uzasadniona może być wartość yes. Fragment celowo nie deklaruje drugiej kotwicy zaufania i nie stanowi pełnej samodzielnej konfiguracji.

Restart następuje dopiero po poprawnej kontroli konfiguracji. Poniższe polecenia stanowią oddzielne kroki; błąd pierwszej kontroli oznacza konieczność wstrzymania restartu:

sudo unbound-checkconf
sudo systemctl restart unbound
systemctl is-enabled unbound
dig @127.0.0.1 -p 5335 fail01.dnssec.works
dig @127.0.0.1 -p 5335 dnssec.works +ad

Pierwszy test DNS powinien zwrócić SERVFAIL, a drugi NOERROR z flagą ad. Pojedynczy wynik SERVFAIL nie dowodzi sprawnej walidacji: podobny rezultat powodują problemy z łącznością. DNSSEC wymaga prawidłowego czasu systemowego. Polecenie restart nie włącza startu usługi przy uruchamianiu systemu; is-enabled sprawdza istniejące ustawienie.

3. Połączenie z Pi-hole i kontrola rzeczywistej trasy

W Settings > DNS niestandardowym serwerem nadrzędnym zostaje 127.0.0.1#5335. Dla wyłącznie lokalnej rekursji pozostałe serwery nadrzędne wymagają usunięcia. Po zapisaniu zmian testowe zapytanie do Pi-hole powinno wskazać Unbound jako cel przekazania w dzienniku zapytań. W oddzielnych kontenerach adres 127.0.0.1 oznacza wnętrze danego kontenera i nie nadaje się do takiego połączenia.

Opcja Use DNSSEC uruchamia dodatkową walidację w Pi-hole, a nie samo przekazywanie flag. Unbound sprawdza DNSSEC niezależnie. Po włączeniu dodatkowej kontroli oba testy DNSSEC wymagają powtórzenia przez Pi-hole. Kontroli wymaga również integracja z openresolv lub unbound-resolvconf: wpis dotyczący portu 53 nie może tworzyć pętli do lokalnej usługi.

4. DoH jako inny tryb działania

Zwykła bezpośrednia rekursja wysyła poza sieć nieszyfrowane zapytania DNS. Minimalizacja QNAME ogranicza części nazwy ujawniane poszczególnym serwerom, lecz obserwator na łączu internetowym nadal może odczytywać zapytania.

Serwer nadrzędny to kolejny serwer DNS, do którego przekazywane jest zapytanie. DoH oznacza DNS przez HTTPS. Celowo skonfigurowany serwer nadrzędny DoH szyfruje połączenie z wybranym resolwerem. Ten resolwer otrzymuje przekazywane nazwy. Jest to inna architektura, a nie automatyczny tryb awaryjny. Dodanie kolejnego serwera nadrzędnego w Pi-hole nie zapewnia ustalonej kolejności przełączania po awarii. Weryfikacja certyfikatu, początkowe rozwiązanie adresu usługi i zachowanie podczas niedostępności wymagają osobnej konfiguracji. Początkowe rozwiązanie dostarcza adres potrzebny do pierwszego połączenia z szyfrowaną usługą DNS.

Funkcja cloudflared proxy-dns została usunięta od wersji 2026.2.0 i nie jest aktualną opcją instalacji. Udokumentowana obsługa DoH w Unbound dla przychodzących zapytań klientów również wymaga odróżnienia od wychodzącego przekazywania przez DoH.

Pytania i odpowiedzi

Czy ta konfiguracja zapobiega obserwacji przez dostawcę Internetu?

Sama bezpośrednia rekursja nie zapewnia takiej ochrony. DoH chroni treść danego połączenia DNS; docelowe adresy IP późniejszych połączeń zasadniczo pozostają widoczne. DNSSEC chroni podpisane dane przed niewykrytą zmianą, ale nie zapobiega blokadom ani atakom na niepodpisane dane DNS. Szyfrowane połączenie klienta z własnym resolwerem rekursywnym jest możliwe; nie oznacza automatycznego szyfrowania drogi od resolwera do serwerów autorytatywnych.

Dlaczego znikają odpowiedzi z prywatnymi adresami IP?

private-address zapobiega wprowadzaniu wymienionych prywatnych adresów przez odpowiedzi publicznego DNS. Celowo wewnętrzna nazwa może wymagać wąskiego wyjątku, np. private-domain: "internal.example.com". DNS rebinding może kierować przeglądarkę na adres sieci prywatnej przez zmieniające się odpowiedzi DNS. Wyjątek dla całej domeny obejmuje również subdomeny i osłabia ochronę przed takim działaniem w tym zakresie. Lokalne rekordy obsługiwane bezpośrednio przez Pi-hole nie przechodzą przez Unbound.

Co się stanie, jeśli …?

Uproszczony model edukacyjny

Co się stanie, jeśli …?

Wyłącz element przykładowej sieci. Które usługi nadal działają?

Wybierz przykład
Internet
DNS
Przełącznik / Wi-Fi
Raspberry Pi

Obraz z kamery w sieci lokalnej

Lokalna kamera jest otwierana przez adres IP. Przełącznik i Wi-Fi łączą ją z Twoim urządzeniem. W tym modelu internet, DNS i Pi nie są potrzebne.

Home Assistant przez lokalny adres IP

Interfejs działa na Pi. Twoje urządzenie łączy się z nim przez sieć lokalną; nazwa DNS nie jest tutaj potrzebna.

Automatyzacja Zigbee na Pi

Koordynator Zigbee podłączony bezpośrednio do Pi steruje lokalnym urządzeniem. Ta stała reguła nie wymaga tutaj Wi-Fi ani internetu.

Dostęp do Home Assistant przez chmurę

Dostęp wykorzystuje nazwę w chmurze i tunel z Pi. W tym przykładzie potrzebuje wszystkich czterech elementów.

Otwarcie nowej zewnętrznej strony

Nowa nazwa, której nie ma w pamięci podręcznej, potrzebuje DNS i drogi do internetu. Lokalne Pi nie hostuje tej obcej strony.

Istniejące połączenie internetowe przez IP

Nawiązane połączenie nie wymaga nowego wyszukania nazwy. Przetrwa awarię DNS, jeśli sieć i internet pozostaną dostępne.

Uproszczony model edukacyjny

Przykładowa sieć, a nie podgląd mojego sprzętu na żywo. Urządzenia mają zasilanie. Pi = Home Assistant z Zigbee przez USB; DNS to zewnętrzny resolver bez pamięci podręcznej i zastępstwa. „Przełącznik / Wi-Fi” oznacza cały dostęp lokalny. Wynik opisuje samą awarię, nie automatyczne przywrócenie działania.

DNS · RFC 1034 ↗

Przejdź do powiązanego artykułu →

Te przykłady działają tylko w Twojej przeglądarce. Nie zakłócają prawdziwych systemów.

PNG z ustawieniami, wynikiem i adresem artykułu. Powstaje lokalnie dopiero po kliknięciu.

Lukas Wójcik

Lukas Wójcik

Systems architect and technology enthusiast specializing in scalable tracking solutions, GMP Stack (GA4 & GTM), and robust backend architectures. Advocate for clean code and privacy-first design.

Kontakt

Masz pytanie lub pomysł na projekt internetowy? Napisz krótko, o co chodzi. Formularz korzysta z reCAPTCHA i formconfirmed do ochrony przed spamem.

Napisanie komentarza

Doświadczenia z innym sprzętem lub inną wersją oprogramowania oraz pytania o konfigurację są tu mile widziane.

Adres e-mail nie jest publikowany. Pola obowiązkowe oznaczono gwiazdką.

LUKASWOJCIK.COM · NEWSLETTER

Nowe pomysły w skrzynce

Nowe artykuły, praktyczne narzędzia i informacje o projektach.

Wybierz tematy (opcjonalnie)
Bez wyboru: wszystkie tematy.

Zapis wymaga potwierdzenia e-mailem. · Prywatność

Prywatność · Newsletter

Adres e-mail, język, wybrane tematy oraz daty zapisu i potwierdzenia są przechowywane w celu wysyłki newslettera. Wymagane jest potwierdzenie zapisu. Każda wiadomość zawiera link do natychmiastowej rezygnacji. Formconfirmed chroni formularz przed spamem. Brak śledzenia otwarć i kliknięć.

Pełna polityka prywatności ↗