Jiří Meitner | IT služby Linux | Kladno | Česko

blokování reklam v operačních systémech III

Blokování reklam v operačních systémech III

Tímto článkem navazuji na své starší texty o blokování reklam v operačních systémech. V tomto pokračování se podíváme na to, jak se v průběhu let změnily mé nároky, proč mi původní řešení přestalo vyhovovat a čím jsem ho nahradil.

Nejnovější článek z této série je z roku 2021. Tehdy jsem doporučoval blokování přes DNS servery AdGuardu. Pokud vás zajímá tehdejší nastavení, můžete si ho připomenout v článku [Blokování reklam v operačních systémech II].

AdGuard je i dnes solidní volbou – zejména pokud nepotřebujete vlastní DNS záznamy. Jakmile ale vaše požadavky začnou růst, budete chtít něco víc: spolehlivější DNS server, který je k vám geograficky blíže, možnost spravovat vlastní záznamy a plnou kontrolu nad konfigurací.

Proto jsem postupně začal zkoušet pokročilejší varianty – provozování vlastních DNS serverů Pi-hole a Technitium. Dalším důvodem byla i potřeba vyřešit DNS pro komerční projekt XERXES VPN, kde jsem hledal spolehlivé produkční řešení, schopné odbavit velké množství dotazů a současně fungovat i jako autoritativní DNS server pro interní domény.

V článku se podělím o praktické zkušenosti a porovnám:

  • použití veřejných IP adres AdGuardu
  • vlastní nasazení Pi-hole
  • vlastní nasazení Technitium

Podíváme se, kdy dává smysl které řešení, a v čem má každé z nich své silné a slabé stránky.

AdGuard – snadné blokování pomocí veřejných IP adres bez registrace

Veřejné DNS servery AdGuardu jsou jednoduché na nasazení – stačí nastavit jejich IP adresy do routeru, počítače nebo telefonu a okamžitě začnou filtrovat reklamy a škodlivé domény. Z vlastní zkušenosti ale musím říct, že i když jsou obecně spolehlivé, narazil jsem na občasné problémy s dostupností.

Někdy šlo o problémy v routingu u českých poskytovatelů (zejména O2 a Vodafone), jindy byly krátkodobé výpadky přímo na straně AdGuardu. V obou případech to znamenalo, že DNS přestalo odpovídat a internet se tvářil jako nefunkční.

Velkým plusem ale byla možnost použít IP adresy pro “family filter”, které kromě reklam blokují i stránky s nevhodným obsahem. Ty jsem často nastavoval do telefonů, počítačů a domácích routerů určených pro děti – řešení je rychlé, bezúdržbové a nevyžaduje žádnou složitou konfiguraci.

SlužbaIPv4 adresyIPv6 adresy
AdGuard94.140.14.14, 94.140.15.152a10:50c0::ad1:ff, 2a10:50c0::ad2:ff
Family filter94.140.14.15, 94.140.15.162a10:50c0::bad1:ff, 2a10:50c0::bad2:ff
Tabulka IP adres Adguardu pro blokování reklam a Adguard Family Filter pro blokování nevhodného obsahu

Nastavení soukromého DNS AdGuardu v Androidu

Android od verze 9 (Pie) podporuje funkci „Soukromý DNS“ (Private DNS), která umožňuje nastavit vlastní DNS server přímo v systému. V případě AdGuardu tak není potřeba instalovat žádnou aplikaci – stačí zadat jejich DNS hostname a blokování se aplikuje na všechny aplikace v telefonu.

Postup:

  1. Otevřete nastavení telefonu
  2. Přejděte do Síť a internet → Pokročilé → Soukromý DNS
    U některých výrobců může být položka jinde (např. Připojení → Další nastavení připojení)
  3. Zvolte možnost Název hostitele soukromého DNS
  4. Nastavte pro běžný filtr:
    dns.adguard.com
    nebo pro „family filter“ (blokování nevhodného obsahu):
    dns-family.adguard.com
  5. Potvrďte a zavřete nastavení

Pokud vše funguje správně, měl by se internet načítat bez problémů a reklamy na většině webů i v aplikacích zmizí.

Pi-hole – blokování reklam nejen pro Raspberry Pi

Ačkoliv název Pi-hole může svádět k tomu, že je určený jen pro Raspberry Pi, realita je jiná – bez problémů ho můžete provozovat i na běžném serveru. Pi-hole funguje jako DNS resolver s blokováním reklam, škodlivých domén a sledovacích skriptů. Podporuje i některé typy vlastních DNS záznamů, i když jen v základní podobě.

Jedním z jeho velkých plusů je přehledné webové rozhraní s dark módem, statistikami, možnost rychlého zapnutí/vypnutí filtrace a jednoduchá správa whitelistu/blacklistu. Pi-hole také umí family filter a lze ho nasměrovat na servery AdGuardu, pokud chcete kombinovat lokální blokování s filtrováním třetí strany. Pi-hole jde o jednoduchost a estetiku – už ne tolik o výkon.

V mém provozu jsem Pi-hole nasazoval v Dockeru – konkrétně:

  • běžná filtrace reklam: instance s adresami 10.1.0.8 a fdbe:efca:fe01::8 uvnitř VPN
  • family filter: instance s adresami 10.1.0.11 a fdbe:efca:fe01::11 uvnitř VPN

Takto oddělené instance mi umožnily poskytovat různou úroveň filtrování v rámci XERXES VPN podle toho, jaký DNS server si klient pro konkrétní použití objednal.

Hlavní limity Pi-hole, na které jsem narazil:

  • výkon – při velkém množství DNS dotazů už Pi-hole začal narážet na své limity
  • omezená podpora typů DNS záznamů – Pi-hole není plnohodnotný autoritativní DNS server a DNS záznamy zvládá jen v omezené míře
  • omezování klientů – pokud jeden klient poslal více DNS dotazů, začal Pi-hole jeho dotazy zahazovat. Tohle mělo jít změnit v nastavení, ale Pi-hole jakékoliv úpravy nebral v potaz. Tohle bylo problém třeba při napojení webového serveru, nebo routeru Turris, který posílal DNS dotazy z celé domácnosti. To byla největší bolest, kterou jsem s Pi-hole měl.

Další problém nastal, když Pi-hole přešel z Debianu na Alpine Linux. Nepoužíval jsem oficiální docker image beze změn, ale upravoval jsem si ho pro vlastní potřeby. Přechod na Alpine mi rozbil jednoduchý proces aktualizací a musel jsem si vybrat – buď investovat čas do „ohýbání“ Pi-hole, nebo přejít na výkonnější a flexibilnější řešení. Výsledkem byl přechod na Technitium, o kterém bude řeč v další části.

Technitium – pokročilý výkonný plnohodnotný DNS server

Technitium DNS Server je, podobně jako Pi-hole, open-source projekt, ale filosoficky jde o jinou ligu. Je napsaný v C# na platformě .NET 8, což není pro linuxový svět typické, ale díky multiplatformnímu frameworku běží spolehlivě i na Linuxu – včetně provozu v Dockeru.

Oproti Pi-hole působí uživatelské rozhraní spíše stroze a nemá dark mód, ale to vyvažuje obrovským množstvím funkcí a možností konfigurace. Technitium je plnohodnotný autoritativní i rekurzivní DNS server, který kromě filtrování domén zvládá kompletní správu DNS zón, podporuje pokročilé záznamy (včetně SVCB, HTTPS, SSHFP, DANE TLSA), DNSSEC, dynamické aktualizace, přenosy zón (AXFR, IXFR) i šifrované DNS protokoly (DoT, DoH, DoQ).

Ukázka administrátorského webového rozhraní Technitium DNS serveru

Hlavní vlastnosti Technitium DNS serveru

  • Plná podpora zón – primární, sekundární, stub i conditional forwardery
  • Podpora všech běžných typů záznamů (A, AAAA, PTR, CNAME, TXT, MX, SRV, NS, …) i méně běžných typů
  • DNSSEC pro rekurzi i autoritativní režim
  • Blokování reklam a malwaru na úrovni DNS přes seznamy, včetně regexů a možností přiřazení různých seznamů různým klientům
  • Podpora šifrovaných protokolů: DNS-over-TLS, DNS-over-HTTPS (HTTP/1.1, HTTP/2, HTTP/3) a DNS-over-QUIC
  • Výkon – asynchronní I/O a testovaná propustnost přes 100 000 dotazů za sekundu na běžném HW
  • Další nástroje – vestavěný DHCP server, DNS64, DNSBL/RBL, ochrana proti DNS rebindingu, split horizon, geolokační odpovědi, API pro skripty a aplikace

Nasazení Technitium v prostředí XERXES VPN

Technitium jsem nejprve nasadil v Dockeru v testovacím prostředí, kde jsem si odladil proces buildování a úprav kontejnerů. Poté jsem ho přesunul do produkce a spustil na stejných IP adresách, které předtím používalo Pi-hole.

Proces výměny proběhl v nočních hodinách bez povšimnutí zákazníků a zcela bez problémů. Od té doby Technitium funguje stabilně a zvládá i vyšší zátěž, na kterou Pi-hole narážel.

Healthchecky pro spolehlivost

Abych měl jistotu, že DNS běží i po aktualizacích nebo výpadcích, používám dva druhy healthchecků:

  • Interní healthcheck uvnitř kontejneru – ověřuje dostupnost webového administračního rozhraní (port 5380) a funkčnost DNS resolvace.
  • Externí healthcheck z hostitele – běží každých 5 minut z crontabu a kontroluje stav kontejnerů přes Docker. Pokud je stav unhealthy, provede restart.
Interní healthcheck:
#!/bin/bash
STDERR() { cat - 1>&2; }
if (curl -m 5 -s -I http://localhost:5380|head -n1|grep -q '200 OK'); then
   echo 'Web interface works'; else
   echo 'Web interface does not work!'|STDERR; exit 1
fi
if (dig google.cz @127.0.0.1 +short|grep -q '.'); then
   echo 'DNS works'; else
   echo 'DNS does not work!'|STDERR; exit 1
fi
echo "Healthy"
exitCode language: Bash (bash)
Externí healthcheck:
#!/bin/bash
STDERR() { cat - 1>&2; }

CONTAINER_NAMES=(ubuntu_technitium ubuntu_technitium_deti)

for container in "${CONTAINER_NAMES[@]}"; do
cd "/root/docker/${container}"
docker compose up -d
STATUS="$(docker inspect --format='{{.State.Health.Status}}' "${container}")"

  if [[ "${STATUS}" == "unhealthy" ]]; then
    echo "Kontejner ${container} je unhealthy. Restartuji..."|STDERR
    docker restart "${container}"; else
    echo "${container} is ${STATUS}"
  fi
done

exitCode language: Bash (bash)

Díky těmto opatřením běží Technitium dlouhodobě bez zásahu a splňuje nároky na výkon, flexibilitu a spolehlivost i v produkčním provozu XERXES VPN.

Srovnání AdGuard, Pi-hole a Technitium

Vlastnost / ŘešeníAdGuard (veřejné IP)Pi-holeTechnitium DNS Server
TypVeřejný DNS resolver třetí stranyLokální resolver s filtrovánímAutoritativní + rekurzivní DNS server s filtrováním
InstalaceŽádná – stačí nastavit IP/hostnameDocker / Linux / Raspberry PiDocker / Linux / Windows / macOS / Raspberry Pi (arm7)
VýkonOmezen směrováním a dostupností sítěDobré pro domácí/menší síť, horší při velké zátěžiVysoký výkon, >100k dotazů/s na běžném HW
DostupnostZávislá na provozovateli a routingu ISPZávislá na ISP, VPN a vašem HWZávislá na ISP, VPN a vašem HW
Blokování reklamAno, včetně family filter IP adresAno, možnost whitelist/blacklistAno, možnost regex, různé seznamy pro různé klienty
Family filterAno (oddělené IP adresy)Ano (oddělená instance nebo upstream)Ano (vlastní seznamy a pravidla), používám oddělené instance
Správa vlastních DNS záznamůNeAno, omezeněAno, plná podpora všech běžných typů
Podpora autoritativních zónNeNeAno (primární, sekundární, conditional forwardery, AXFR/IXFR)
Šifrované DNS protokolyAno, prostřednictvím dns.adguard.com a dns-family.adguard.comDNSSECAno – DoT, DoH (HTTP/1.1, HTTP/2, HTTP/3), DoQ, DNSSEC
Statistiky a rozhraníNePřehledné webové UI se statistikamiStrohé UI bez dark módu, ale rozsáhlé nastavení, statistiky a grafi omezenější
Konfigurace a správaVelmi jednoduchá, ale omezenáJednoduchá, intuitivníPokročilá, vyžaduje znalosti DNS
APINeREST, JSON, standardní HTTP metody (GET, POST, PUT, PATCH, DELETE), ale omezenějšíJSON, GET/POST, POST pro upload, Content-Type dle typu, přes api lze 1:1 nastavit vše jako ve webovém rozhraní
PTR záznamyNeAno, jen pro lokální záznamyAno, plná správa reverzních zón
Podporované platformyJakýkoli klient s možností nastavení DNSLinux, Raspberry Pi, DockerLinux, Windows, macOS, Raspberry Pi (arm7), Docker
Cílové použitíRychlé nasazení, minimální údržbaDomácí a malé firemní sítě, VPNPokročilé, firemní sítě, VPN, menší ISP
Srovnávací tabulka AdGuard veřejných adres, Pi-hole a Technitium DNS serverů

Doporučení podle typu uživatele a potřeby

ÚčelŘešení
Pokud chcete jen rychle blokovat reklamy a nechcete řešit žádnou instalaci→ použijte AdGuard (veřejné IP) – stačí nastavit IP adresy nebo hostname dns.adguard.com / dns-family.adguard.com do routeru, telefonu či počítače. Ideální pro rodiče, minimální údržba.
Pokud chcete mít blokování pod vlastní kontrolou, ale nepotřebujete plnohodnotný autoritativní server→ zvolte Pi-hole – snadná instalace (i na Raspberry Pi), přehledné statistiky, vhodné pro domácí a menší firemní sítě.
Pokud potřebujete vysoký výkon, kompletní správu DNS zón a pokročilé funkce→ jděte do Technitium DNS Serveru – zvládá i autoritativní zóny, šifrované protokoly, DNSSEC, složité typy záznamů a oddělené profily filtrování pro různé klienty. Hodí se pro firemní nasazení, ISP i projekty s vyšší zátěží.
Pokud chcete REST API a nevadí vám, že jeho možnosti jsou silně limitované→ zvolte Pi-hole, je čistému REST API mnohem blíže
Pokud chcete API, přes které nastavíte detaily všeho, jako přes webovou konzoli→ vyberte Technitium, které přes API umí vše, kvůli čemu jste si vybrali tento DNS server
Tabulka vhodnosti řešení dle účelu

XERXES VPN – rychlé a bezpečné řešení, s plnou správou DNS pro firmy

XERXES VPN je moderní, rychlá a bezpečná virtuální privátní síť postavená na technologii WireGuard, která poskytuje nízkou latenci, vysokou propustnost a silné šifrování. Součástí řešení je integrovaný Technitium DNS server s možností blokování reklam, škodlivého obsahu a konfigurace profilů filtrování – pro firemní prostředí například NSFW filtr, který blokuje obsah nevhodný pro pracovní nasazení.

Pro firmy nabízím komplexní a plně oddělené VPN řešení navržené na míru. Každá firemní VPN instance je provozována samostatně, s vlastní konfigurací a dedikovanými IP adresami, bez sdílení infrastruktury s jinými zákazníky. V rámci služby mohu provozovat a udržovat i dedikovaný Technitium DNS server s plnou správou firemních domén, autoritativních zón a individuálních blokovacích pravidel podle potřeb společnosti.

XERXES VPN je ideální pro:

  • bezpečné propojení poboček a vzdálených zaměstnanců,
  • správu a údržbu firemních DNS zón a domén,
  • ochranu firemní sítě před nevyžádaným obsahem a škodlivými doménami,
  • rodiny, které chtějí bezpečné připojení s kontrolou obsahu,
  • uživatele, kteří potřebují stabilní veřejnou IPv4/IPv6 adresu a flexibilní síťové možnosti.

Stačí nainstalovat WireGuard klienta, importovat konfigurační soubor a můžete okamžitě využívat bezpečné, rychlé a individuálně nastavené připojení.

Více informací o tarifech a možnostech spolupráce naleznete na stránce XERXES VPN:

https://itislove.cz/sluzby/xerxes-vpn/

Summary
Blokování reklam v operačních systémech III
Article Name
Blokování reklam v operačních systémech III
Description
Třetí díl série o blokování reklam popisuje posun od veřejných DNS serverů AdGuardu k vlastnímu nasazení Pi-hole a Technitium. Porovnává jejich výhody a nevýhody na základě reálných zkušeností z provozu a ukazuje, jak je toto řešení již integrováno do XERXES VPN
Author
Publisher Name
ITisLove
Publisher Logo

Comments

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *

This site uses Akismet to reduce spam. Learn how your comment data is processed.