Přejít k hlavnímu obsahu

DNS šifrování

AdGuard Home podporuje všechny moderní protokoly šifrování DNS ihned po instalaci:

poznámka

AdGuard Home podporuje jak klientovou, tak serverovou stranu DNSCrypt. Zjistěte, jak nakonfigurovat AdGuard Home jako server DNSCrypt.

Tento průvodce vysvětluje, jak nastavit šifrovaný DNS server s AdGuard Home.

Instalace serveru

Účelem zabezpečení DNS provozu je ochrana před třetími stranami, které by jej mohly analyzovat nebo upravovat, např. před poskytovateli internetových služeb.

To znamená, že budete potřebovat server s veřejnou vyhrazenou IP adresou. Existuje spousta levných poskytovatelů cloudových serverů: DigitalOcean, Vultr, Linode atd. Stačí si vybrat jeden, vytvořit tam cloudový server a nainstalovat AdGuard Home na svůj server.

Registrace domény

Nejprve potřebujete doménu. Pokud jste ještě nikdy žádnou nezaregistrovali, zde najdete jednoduchý návod, který vám s tím pomůže.

Získání certifikátu SSL

Jak DNS-over-HTTPS, tak DNS-over-TLS jsou založeny na šifrování TLS, takže k jejich použití budete potřebovat certifikát SSL.

SSL certifikát lze zakoupit od certifikační autority (CA), společnosti, které prohlížeče a operační systémy důvěřují a která vydává SSL certifikáty pro domény.

Alternativně můžete certifikát získat zdarma od Let’s Encrypt CA, bezplatné certifikační autority vyvinuté skupinou Internet Security Research Group (ISRG).

Tato příručka vysvětluje, jak od nich získat certifikát.

Použití CertBot

CertBot je snadno použitelný klient, který stahuje certifikáty od Let’s Encrypt.

  1. Přejděte na certbot.eff.org a vyberte možnost Žádný z výše uvedených softwarů a svůj operační systém.
  2. Postupujte podle instalačních pokynů a zastavte se před sekcí Začínáme.

Získání certifikátu pomocí DNS výzvy

Máte doménové jméno, nejjednodušším způsobem, jak získat certifikát, je použít DNS výzvy.

Spusťte tento příkaz a postupujte podle pokynů CertBot:

sudo certbot certonly --manual --preferred-challenges=dns --preferred-chain="ISRG Root X1"

Nakonec získáte dva soubory:

  • fullchain.pem: váš SSL certifikát kódovaný v PEM
  • privkey.pem: váš soukromý klíč zakódovaný v PEM

Obojí bude nutné pro konfiguraci AdGuard Home.

Důležité

K obnovení stávajícího certifikátu budete muset použít stejný postup.

Použití LEGO

Existuje také velmi příjemná a snadno použitelná alternativa k CertBot s názvem LEGO.

  1. Instalujte jej pomocí vhodné metody.
  2. Vyberte si svého poskytovatele DNS ze seznamu a postupujte podle pokynů k získání certifikátu.

Zde je také jednoduchý skript, který můžete použít k automatizaci generování a obnovování certifikátů.

Konfigurace AdGuard Home

  1. Otevřete webové rozhraní AdGuard Home a přejděte do Nastavení.

  2. Vyberte sekci Šifrování.

    Encryption settings screenshot

  3. Zkopírujte/vložte obsah souboru fullchain.pem do vstupního pole v sekci Certifikáty nebo zadejte cestu k souboru.

  4. Zkopírujte/vložte obsah souboru privkey.pem do vstupního pole v sekci Soukromý klíč nebo zadejte cestu k souboru.

  5. Zadejte název své domény do sekce Název serveru.

  6. Získejte úspěšné ověřovací zprávy a klikněte na Uložit nastavení.

poznámka

AdGuard Home automaticky znovu načte certifikáty a/nebo soukromé klíče určené cestou k souboru, když dojde k jejich změně. Znovunačtení může být také spuštěno signálem SIGHUP.

Použití s reverzním proxy

Již máme průvodce konfigurací reverzního proxy serveru pro přístup k webovému rozhraní AdGuard Home.

AdGuard Home je schopen omezit požadavky DNS-over-HTTPS, které pocházejí z proxy serveru, který není zahrnut do seznamu "důvěryhodných". Ve výchozím nastavení je nakonfigurován tak, aby přijímal požadavky z adres IPv4 a IPv6 loopback.

Chcete-li umožnit AdGuard Home zpracovávat požadavky DNS-over-HTTPS z reverzního proxy serveru, nastavte v souboru AdGuardHome.yaml parametr trusted_proxies na IP adresu proxy serveru. Pokud máte několik proxy serverů, můžete místo jednoduché IP adresy použít CIDR.

Reverzní proxy Nginx

Chcete-li nakonfigurovat AdGuard Home tak, aby přijímal požadavky od reverzního proxy serveru Nginx, ujistěte se, že je reverzní proxy server správně nakonfigurován.

Soubor nginx.conf by měl obsahovat příslušné direktivy pro přidání podporovaných hlaviček předávání k požadavku, kterými jsou X-Real-IP nebo X-Forwarded-For. Toho lze dosáhnout pomocí ngx_http_realip_module. Stručně řečeno, modul vezme skutečnou IP adresu klienta a zapíše ji do hlavičky HTTP požadavku. AdGuard Home přijme a interpretuje hodnotu tohoto záhlaví jako skutečnou adresu klienta. Adresa reverzního proxy serveru bude také přijata a zkontrolována podle seznamu "důvěryhodných" proxy serverů.

Další hlavičkou, kterou můžete chtít proxy, je hlavička Host, která je nutná k tomu, aby AdGuard Home rozpoznal požadavky od klientů, kteří mají ClientID ve svých názvech hostitele.

Například pokud konfigurace reverzního proxy serveru obsahuje následující direktivy:

location /dns-query {
# …
proxy_set_header Host $host;
proxy_set_header X-Real-IP '1.2.3.4';
proxy_bind 192.168.1.2;
# …
}

AdGuard Home získá adresu 192.168.1.2 jako adresu vašeho proxy serveru a porovná ji s trusted_proxies. V případě, že je proxy "důvěryhodný", bude 1.2.3.4 řízeno nastavením přístupu.

Cloudflare CDN

Síť pro doručování obsahu Cloudflare funguje jako reverzní proxy, která připojuje své vlastní hlavičky k předávaným požadavkům, kterými jsou CF-Connecting-IP a True-Client-IP. Tyto jsou také podporovány AdGuard Home, takže adresy reverzních proxy serverů mohou být vloženy přímo do seznamu trusted_proxies. Viz oficiální reference Cloudflare ohledně obnovení původní IP adresy návštěvníka.

Jiné hlavičky

Jiné HTTP hlavičky mohou být v budoucnu podporovány AdGuard Home. Jakékoli požadavky na funkce související s hlavičkami by se však měly nejprve pokusit vyřešit konfigurací samotného reverzního proxy serveru.

Například pro úpravu mechanismu HTTP Strict Transport Security tak, aby zahrnoval experimentální direktivu preload, lze použít následující konfiguraci:

location /dns-query {
# …
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload" always;
# …
}

Konfigurace zařízení

Android

  • Android 9 a vyšší nativně podporuje DNS-over-TLS. Chcete-li jej nakonfigurovat, přejděte do NastaveníSíť a internetPokročiléSoukromý DNS a zadejte tam název své domény.
  • AdGuard pro Android podporuje DNS-over-HTTPS, DNS-over-TLS, DNSCrypt a DNS-over-QUIC.
  • Intra přidává podporu DNS-over-HTTPS do systému Android.

iOS

  • iOS 14 a vyšší podporují DNS-over-TLS a DNS-over-HTTPS nativně prostřednictvím konfiguračních profilů. Abychom vám to usnadnili, AdGuard Home může tyto konfigurační profily vygenerovat za vás. Stačí přejít do Průvodce nastavenímSoukromý DNS a přejít na iOS.
  • AdGuard pro iOS podporuje DNS-over-HTTPS, DNS-over-TLS, DNSCrypt a DNS-over-QUIC.
  • DNSCloak podporuje DNS-over-HTTPS, ale abyste jej mohli nakonfigurovat pro použití vlastního serveru, budete muset pro něj vygenerovat DNS razítko.

Windows

  • Windows 10 Build 19628 a vyšší nativně podporují DNS-over-HTTPS.
  • AdGuard pro Windows podporuje DNS-over-HTTPS, DNS-over-TLS, DNSCrypt a DNS-over-QUIC.

macOS

  • macOS Big Sur a vyšší podporují DNS-over-TLS a DNS-over-HTTPS nativně prostřednictvím konfiguračních profilů. Abychom vám to usnadnili, AdGuard Home může tyto konfigurační profily vygenerovat za vás. Stačí přejít do Průvodce nastavenímSoukromý DNS a přejít na iOS.

Další implementace

  • Samotný AdGuard Home může být bezpečným klientem DNS na jakékoli platformě.
  • dnsproxy podporuje všechny známé bezpečné DNS protokoly.
  • dnscrypt-proxy podporuje DNS-over-HTTPS.
  • Mozilla Firefox podporuje DNS-over-HTTPS.

Konfigurace DNSCrypt

AdGuard Home může fungovat jako server DNSCrypt. Tato funkce je však dostupná pouze prostřednictvím konfiguračního souboru a nelze ji nastavit pomocí webového uživatelského rozhraní. V této příručce je vysvětleno, jak to udělat.

Generování konfiguračního souboru

Zde je návod, jak vygenerovat konfigurační soubor DNSCrypt a nasměrovat na něj AdGuard Home:

Důležité

Ujistěte se, že vaše nastavení TLS je platné a šifrování je povoleno.

  1. Získejte nejnovější verzi nástroje dnscrypt pro váš systém. Rozbalte archiv a přejděte do výsledného adresáře.

    • V systému Unix pomocí shellu kompatibilního s POSIX:

      (Zde a níže je jako příklad použit linux-amd64. Nezapomeňte si stáhnout a používat verzi pro vaši platformu.)

      1. Rozbalte soubory:

        tar -f ./dnscrypt-linux-amd64-v2.2.3.tar.gz -v -x -z

        Příklad výstupu:

        linux-amd64/
        linux-amd64/README.md
        linux-amd64/LICENSE
        linux-amd64/dnscrypt
      2. Přejděte do rozbaleného adresáře:

        cd ./linux-amd64/
      3. Vygenerujte konfigurační soubor:

        ./dnscrypt generate --provider-name '2.dnscrypt-cert.example.org' --out ./dnscrypt.yaml

        Příklad výstupu:

        ```none
        2022/01/02 12:34:56 [info] Generating configuration for 2.dnscrypt-cert.example.org
        2022/02/02 12:34:56 [info] Configuration has been written to ./dnscrypt.yaml
        2022/02/02 12:34:56 [info] Go to https://dnscrypt.info/stamps to generate an SDNS stamp
        2022/02/02 12:34:56 [info] You can run a DNSCrypt server using the following command:
        2022/02/02 12:34:56 [info] dnscrypt server -c ./dnscrypt.yaml -f 8.8.8.8
        ```
    • Ve Windows pomocí PowerShell:

      (Zde a níže je jako příklad použit windows-arm64. Nezapomeňte si stáhnout a používat verzi pro vaši architekturu CPU.)

      1. Rozbalte soubory:

        Expand-Archive -Path .\dnscrypt-windows-amd64-v2.2.3.zip
      2. Přejděte do rozbaleného adresáře:

        Set-Location -Path .\dnscrypt-windows-amd64-v2.2.3\windows-amd64\
      3. Vygenerujte konfigurační soubor:

        .\dnscrypt.exe generate --provider-name '2.dnscrypt-cert.example.org' --out .\dnscrypt.yaml

        Příklad výstupu:

        2022/01/02 12:34:56 [info] Generating configuration for 2.dnscrypt-cert.example.org
        2022/02/02 12:34:56 [info] Configuration has been written to .\dnscrypt.yaml
        2022/02/02 12:34:56 [info] Go to https://dnscrypt.info/stamps to generate an SDNS stamp
        2022/02/02 12:34:56 [info] You can run a DNSCrypt server using the following command:
        2022/02/02 12:34:56 [info] dnscrypt server -c .\dnscrypt.yaml -f 8.8.8.8

    Kde example.org je název vašeho hostitele a ./dnscrypt.yaml je název výstupního souboru konfigurace.

    Cestu k binárnímu souboru můžete přidat do PATH/$env:PATH.

  2. Do konfiguračního souboru (obvykle AdGuardHome.yaml) přidejte následující řádky:

    'tls':
    # N.B. The encryption must be enabled.
    'enabled': true
    # …
    'port_dnscrypt': 5443
    'dnscrypt_config_file': './dnscrypt.yaml'

    Kde 5443 je port pro váš server DNSCrypt a ./dnscrypt.yaml je název konfiguračního souboru vygenerovaného v kroku 2.

    Důležité

    Před změnou konfiguračního souboru ukončete AdGuard Home.

    tip

    Ve Windows se doporučuje použít úplnou cestu ke konfiguračnímu souboru. Např. C:\Users\Me\Files\dnscrypt.yaml.

Generování razítka DNSCrypt

Zde je návod, jak vygenerovat razítko DNSCrypt a zkontrolovat instalaci:

  1. Přejděte na https://dnscrypt.info/stamps/.

  2. Zadejte údaje z konfiguračního souboru DNSCrypt. Veřejný klíč poskytovatele je hodnota pole public_key ve vašem konfiguračním souboru DNSCrypt.

    poznámka

    Zadejte hostitele s vaším vlastním portem.

  3. Nyní máte razítko, které vypadá přibližně takto:

    sdns://AQcAAAAAAAAADTEyNy4wLjAuMTo0NDMg8R3bzEgX5UOEX93Uy4gYSbZCJvPeOXYlZp2HuRm8T7AbMi5kbnNjcnlwdC1jZXJ0LmV4YW1wbGUub3Jn

    Zkontrolujte svou instalaci spuštěním:

    ./dnscrypt lookup-stamp \
    --domain 'example.com' \
    --stamp 'sdns://AQcAAAAAAAAADTEyNy4wLjAuMTo0NDMg8R3bzEgX5UOEX93Uy4gYSbZCJvPeOXYlZp2HuRm8T7AbMi5kbnNjcnlwdC1jZXJ0LmV4YW1wbGUub3Jn' \
    --type 'a'

    Nebo ve Windows:

    .\dnscrypt.exe lookup-stamp `
    --domain 'example.com' `
    --stamp 'sdns://AQcAAAAAAAAADTEyNy4wLjAuMTo0NDMg8R3bzEgX5UOEX93Uy4gYSbZCJvPeOXYlZp2HuRm8T7AbMi5kbnNjcnlwdC1jZXJ0LmV4YW1wbGUub3Jn' `
    --type 'a'

    Kde example.com je název domény, který chcete vyhledat.

Konfigurace zařízení pro použití DNSCrypt

Všechny platformy

  • dnscrypt-proxy (referenční implementace). DNSCrypt-Proxy je proxy pro příkazový řádek pro Linux, BSD, Windows, macOS, Android a další.

Android

iOS

Windows

  • AdGuard pro Windows podporuje DNSCrypt.
  • Simple DNSCrypt je jednoduchý nástroj pro správu, který slouží ke konfiguraci a spouštění dnscrypt-proxy v systému Windows.

Více informací najdete na webových stránkách DNSCrypt a v seznamu projektů na ochranu soukromí v DNS.