Finální All-in-One Návod: Bezpečný a Vyladěný DNS Server Pi-hole, DoH, DNSSEC a SNI 2025-06-29
Tento návod těje provedefinální, krokodladěná zaverze krokempro vytvořením vlastního DNS resolveruinstalaci na čistý systém (Raspberry Pi.Pi Výsledkem5 budes systém,Raspberry který:Pi OS nebo Ubuntu Server). Obsahuje všechny optimalizace pro rychlost a bezpečnost.
Cílové Funkce:
-
BlokujeBlokováníreklamyreklam atrackerytrackerův celé tvé síti pomocí(Pi-hole.hole) -
Š
ifruje všechny odchozíifrované DNS dotazy do internetupomocí(DoHDNS-over-HTTPSpřes(DoH), takže tvůj poskytovatel internetu neuvidí, jaké weby navštěvuješ.dnscrypt-proxy) -
Ověř
ujeovánípravost DNSpravosti odpovědípomocí DNSSEC, čímž tě chrání před podvrženými stránkami.(DNSSEC) -
PodporujeVysokýmodernívýkontechnologiedíky optimalizované cachejako Encrypted SNI (ECH) pro ještě vyšší soukromí.
Celé to poběží v Dockeru a budeme to spravovat pohodlně přes Portainer.
Předpoklady
-
Raspberry Pi (doporučuji model 4 nebo 5) se stabilním systémem (např. Raspberry Pi OS).
-
Nainstalovaný Docker a Portainer.
-
Statická IP adresa pro tvůj Raspberry Pi (v našem příkladu budeme používat 192.168.54.7).
Část 1: Příprava adresářů a souborů na Raspberry Pi
Nejdříve si přes SSH (PuTTY) na tvém Pi připravíme veškerou strukturu.
1. Vytvoření adresářové struktury
Vytvoříme si přehlednou strukturu v adresáři /opt/.
# Vytvoření hlavního adresáře pro náš projekt
sudo mkdir -p /opt/dns-server
# Vytvoření adresářů pro konfiguraci Pi-hole
sudo mkdir -p /opt/dns-server/pihole/etc-pihole
sudo mkdir -p /opt/dns-server/pihole/etc-dnsmasq.d
# Vytvoření adresáře pro konfiguraci dnscrypt-proxy
sudo mkdir -p /opt/dns-server/dnscrypt-proxy
2. Nastavení oprávnění pro dnscrypt-proxy
Toto je velmi důležitý krok. Kontejner dnscrypt-proxy běží z bezpečnostních důvodů pod specifickým uživatelem (s ID 991). Aby mohl zapisovat své dočasné soubory (cache), musíme mu dát vlastnictví jeho konfiguračního adresáře.
sudo chown -R 991:991 /opt/dns-server/dnscrypt-proxy
3. Vytvoření konfiguračního souboru pro dnscrypt-proxy
Tento soubor definuje, jaké šifrované DNS servery bude náš systém používat.
sudo nano /opt/dns-server/dnscrypt-proxy/dnscrypt-proxy.toml
Do tohoto souboru vlož následující obsah. Obsahuje výběr několika špičkových, na soukromí orientovaných poskytovatelů. dnscrypt-proxy si automaticky vybere ten nejrychlejší dostupný.
# Seznam preferovaných DoH serverů, které se mají použít pro DoH.
# Jsou seřazeny podle preferencí, ale. dnscrypt-proxy si dynamicky vybere nejrychlejší.
# vybereKombinujeme tenzde sněkolik nejlepšíšpičkových, odezvou.na soukromí orientovaných poskytovatelů.
server_names = ['cloudflare', 'quad9-doh', 'adguard-dns']
# Naslouchat na všech síťových rozhraních uvnitř kontejneru na portu 53.
# Pi-hole bude posílat dotazy právě sem.
listen_addresses = ['0.0.0.0:53']
# Zajistí,Vyžadovat žena seserverech službapodporu spustí,klíčových ibezpečnostních když některé servery ze seznamu nejsou dostupnéfunkcí.
require_dnssec = true
require_nolog = true
require_nofilter = true
# Definice zdrojů, odkud se stahuje seznam a parametry všech dostupných serverů.
# Toto je klíčové, aby dnscrypt-proxy věděl, co jména jako 'cloudflare' znamenají.
[sources]
[sources.'public-resolvers']
urls = ['https://raw.githubusercontent.com/DNSCrypt/dnscrypt-resolvers/master/v3/public-resolvers.md']
cache_file = '/config/public-resolvers.md'
minisign_key = 'RWQf6LRCGA9i53mlYecO4IzT51TGPpvWucNSCh1CBM0QTaLn73Y7GFO3'
# Vypneme blokováBlokování IPv6, protože toto chcemeIPv6 řešitíme až na úrovniv Pi-hole.hole, zde ho vypneme.
block_ipv6 = false
Ulož soubor a zavři editor (Ctrl+X, poté Y a Enter).
4. Vytvoření konfiguračního souboru pro DNSSEC v Pi-hole
Tento soubor zapne v Pi-hole pokročilé funkce, zejména DNSSEC.
sudo nano /opt/dns-server/pihole/etc-dnsmasq.d/99-dnssec.performance-tuning.conf
Vlož do něj následující obsah:
# --- DNSSEC ---
# Zapnutí validace DNSSEC.DNSSEC Zvyšuje bezpečnostpro ověřovánímení pravosti DNS odpovědí.
dnssec
# Důvěryhodná kotva pro DNSSEC.
trust-anchor=.,20326,8,2,E06D44B80B8F1D39A95C0B0D7C65D08458E880409BBC683457104237C7F8EC8D
# Zvě--- CACHE & PERFORMANCE TUNING ---
# Výrazné zvětšení cache pro rychlejšíbleskové odpovědidi.
cache-size=50000
# Nastavení minimální doby platnosti záznamu v cache na opakované5 dotazy.minut (300s).
# Zabraňuje zbytečným dotazům ven i u domén s krátkým TTL.
min-cache-size=10000ttl=300
# Přednačítání záznamů v cache, které se blíží expiraci.
# Výsledkem je pocitově plynulejší procházení webu.
dns-forward-max=1000
Ulož a zavři soubor.
Část 2: Nasazení Stacku v Portaineru
Nyní, když máme vše připraveno, nasadíme samotné služby.
YAML kód pro Portainer Stack
Následující kód je "srdcem" celého našeho setupu. Obsahuje definici obou služeb (pihole i dnscrypt-proxy) a jejich propojení.
# Verze se v moderních definicích již nepoužívá, ale v Portaineru je stále dobré ji uvést.
version: "3.8"
services:
# Služba pro šifrování DNS dotazů (DoH)
dnscrypt-proxy:
image: klutchell/dnscrypt-proxy:latest
container_name: dnscrypt-proxy
restart: unless-stopped
volumes:
# Mapuje náš připravený konfigurační adresář do kontejneru.
- /opt/dns-server/dnscrypt-proxy:/config
networks:
- dns_network
# Služba pro blokování reklam a lokální DNS cache
pihole:
image: pihole/pihole:latest
container_name: pihole
restart: unless-stopped
ports:
# MapujeNahraď porty pouze na192.168.54.7 IP adresuadresou našehotvého Pi, ne na celý systém.serveru!
- "192.168.54.7:53:53/tcp"
- "192.168.54.7:53:53/udp"
- "192.168.54.7:80:80/tcp"
environment:
TZ: "Europe/Prague"
WEBPASSWORD: "ZdeZadejSveNoveSuperSilneHeslo"
# KLÍČOVÉ NASTAVENÍ: Říká Pi-hole, kamaby máse posílatptal dotazy.našeho # Používáme jméno služby 'dnscrypt-proxy' a její interní port 53.proxy.
DNS1: "dnscrypt-proxy#53"
DNS2: ""
# DruhýDůležité servernastavení, nepotřebujeme,aby spoléhámePi-hole napřijímal flexibilitudotazy dnscrypt-proxy.z volumes:celé sítě.
# MapujeFinální konfigurační adresáře Pi-hole, abypovolení se dataale zachovaladělá pov restartu.GUI!
DNSMASQ_LISTENING: all
volumes:
- /opt/dns-server/pihole/etc-pihole:/etc/pihole
- /opt/dns-server/pihole/etc-dnsmasq.d:/etc/dnsmasq.d
cap_add:
# Dává kontejneru potřebná síťová oprávnění.
- NET_ADMIN
depends_on:
# Zajistí, že se Pi-hole spustí až poté, co je připraven dnscrypt-proxy.
- dnscrypt-proxy
networks:
- dns_network
# Definice naší privátní sítě, ve které spolu kontejnery komunikují.
networks:
dns_network:
driver: bridge
Kroky pro nasazení v Portaineru
-
Otevři si webové rozhraní Portaineru.
-
V menu vlevo klikni na Stacks.
-
Vpravo nahoře klikni na + Add stack.
-
Zadej Název stacku, například dns-server.
-
Ujisti se, že je vybrána volba Web editor.
-
Zkopíruj celý YAML kód uvedený výše a vlož ho do textového pole.
-
NEZAPOMEŇ změnit ZdeZadejSveNoveSuperSilneHeslo na své vlastní, bezpečné heslo.
-
Sjeď úplně dolů a klikni na tlačítko Deploy the stack.
Počkej chvilku, než Portainer stáhne obrazy a spustí kontejnery. Oba by se měly rozsvítit zeleně.
Část 3: Finální konfigurace a ověřeníbonusy
Nyní musíme udělat poslední dva kliky v rozhraní Pi-hole, aby vše správně fungovalo.
1. Nastavení DNS a rozhraní v Pi-hole GUI (Nezbytné!)
-
Otevři
administraci Pi-hole:http://192.168.54.7/TVOJE_IP_ADRESA/admin. -
Přihlas
se svým novým heslem.se. -
V menu vlevo jdiJdi do Settings ->záložkaDNS. -
Upstream DNS Servers: Odškrtni všechny
Vservery v levémsloupciODŠKRTNI VŠECHNYpředdefinované servery (Google, Cloudflare atd.).sloupci. V pravém sloupcimusí býtnech zaškrtnutépouzejen Custom 1 (IPv4) s hodnotou dnscrypt-proxy#53. -
Interface settings: Úplně dole
na stránce najdi tuto sekci avybermožnostPermit all origins. Toto je klíčové, aby Pi-hole odpovídal na dotazy z celé tvé sítě. -
Klikni na Save.
2. Bonus: Zvýšení bezpečnosti (Doporučeno)
Přidej do Pi-hole seznamy pro blokování malwaru a phishingu.
-
Jdi do Adlists.
-
Přidej následující URL (každou zvlášť):
https://phishing.army/download/phishing_army_blocklist_extended.txt
https://osint.digitalside.it/Threat-Intel/lists/latestdomains.txt
https://raw.githubusercontent.com/hagezi/dns-blocklists/main/lists/doh-vpn-proxy-bypass/pro/domains.txt
-
Jdi do Tools -> Update Gravity a klikni na Update.
3. Nastavení sítě
V administraci svého routeru nastav jako DHCP DNS server IP adresu tvého nového serveru.
4. Ověření funkčnosti (Test pravdy)
Nejlepší způsob je odposlouchávat provoz, jak jsme to dělali při ladění.
Na svém Pi v terminálu spusť:
sudo tcpdump -i eth0 -n port 53
(Pokud používáš Wi-Fi, nahraď eth0 za wlan0.)
Z jiného počítače ve tvé síti spusť v příkazovém řádku:
nslookup www.idnes.cz 192.168.54.7
V okně s tcpdump uvidíš pouze komunikaci mezi tvým počítačem a Pi-hole (192.168.54.7). Neuvidíš žádný odchozí provoz z Pi-hole na veřejné servery (1.1.1.1, 8.8.8.8 atd.) na portu 53. To je definitivní důkaz, že šifrování funguje!
🎉 Hotovo! Co dál?
GRATULUJI! Postavil jsi si robustní, bezpečný a soukromí chránící DNS systém.
-
Nastav router: V administraci svého routeru najdi nastavení DHCP a jako jediný DNS server zadej 192.168.54.7.
-
Restartuj zařízení: Restartuj svá zařízení (nebo jen obnov DHCP), aby si načetla nové nastavení DNS.
-
Užívej si internet: Sleduj v Pi-hole Query Logu, jak se blokují dotazy, a užívej si web bez reklam a sledování.
Za notné pomoci AI - aistudio od google.com