Spring til hovedindhold

DNS-kryptering

AdGuard Home understøtter alle moderne DNS-krypteringsprotokoller out-of-the-box:

bemærk

AdGuard Home understøtter DNSCrypt på håde klient- og på serversiden. Læs hvordan AdGuard Home opsættes som en DNSCrypt-server.

Denne guide forklarer, hvordan en krypteret DNS-server opsættes med AdGuard Home.

Serverinstallation

Formålet med at sikre DNS-trafikken er at sikre den mod tredjeparter, som kan analysere eller ændre den, f.eks. fra ISP.

Det betyder, at en server med en offentlig dedikeret IP-adresse er nødvendig. Der er masser af udbydere af billige cloud-servere: DigitalOcean, Vultr, Linode mv. Vælg blot en, opret en cloudserver dér, og installér AdGuard Home på din server.

Registrér et domænenavn

Først og fremmest behøves et domænenavn. Har man aldrig prøvet at registreret ét, er her en enkel vejledning til at gøre det.

Få et SSL-certifikat

Både DNS-over-HTTPS og DNS-over-TLS er baseret på TLS Kryptering, så et SSL-certifikat kræves for at benytte dem.

Et SSL-certifikat kan købes via en Certificate Authority (CA), et firma, som webbrowsere og operativsystemer har tillid til ift. at udstede SSL-certifikater til domæner.

Alternativt kan et gratis certifikat fås via Let’s Encrypt CA, en gratis certifikatmyndighed udviklet af Internet Security Research Group (ISRG).

Denne vejledning forklarer, hvordan et certifikat fås fra denne CA.

Vha. CertBot

Certbot er en brugervenlig klient, der henter et certifikat fra Let’s Encrypt.

  1. Gå til certbot.eff.org og vælg Ingen af ovenstående-software og aktuelt operativsystem.
  2. Følg installationsvejledningen og stop, når afsnittet Kom i gang nås.

Hent et certifikat via DNS-udfordring

Et domænenavn have, så brug af DNS-udfordring vil være den nemmeste måde at få et certifikat på.

Eksekvér denne kommando, og følg CertBot'ens vejledning:

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

Når færdig, haves to filer:

  • fullchain.pem: PEM-kodet SSL-certifikat
  • privkey.pem: PEM-kodet private nøgle

Begge vil være nødvendige for at opsætte AdGuard Home.

Vigtigt

Nøjagtig den samme procedure skal benyttes ved fornyelsen af det eksisterende certifikat.

Via Lego

Der er også et rigtig godt og brugervenligt alternativ til CertBot, der hedder LEGO.

  1. Installér det vha. en passende metode.
  2. Vælg DNS-udbyder fra [listen][lego-udbyder] og følg vejledningen for at få et certifikat.

Her er også et simpelt script til automatisering af certifikatgenerering og -fornyelse.

Opseætning af AdGuard Hjem

  1. Åbn AdGuard Home-webgrænsefladen og gå til indstillinger.

  2. Vælg afsnittet Kryptering.

    Skærmfoto af krypteringsindstillinger

  3. Kopiér/indsæt indholdet af fullchain.pem-filen til inputfeltet under Certifikater eller angiv stien til filen.

  4. Kopiér/indsæt indholdet af privkey.pem-filen til inputfeltet under Privat nøgle eller angiv stien til filen.

  5. Angiv aktuelt domænenavn i Servernavn.

  6. Efter besked om gennemført bekræftelse, klik på Gem indstillinger.

bemærk

AdGuard Home genindlæser automatisk certifikater og/eller private nøgler angivet ved filsti, når disse ændres. En genindlæsning kan også udløses af et SIGHUP-signal.

Brug med omvendt proxy

Vi har allerede en vejledning til opsætning af en omvendt proxyserver for adgang til AdGuard Home Web UI.

AdGuard Home er i stand til at begrænse DNS-over-HTTPS-forespørgsler fra proxyserveren ikke er inkluderet på "betroet"-listen. Som standard er den opsat til at acceptér forespørgsler fra IPv4- og IPv6-løkkeadresser (loopback).

For at aktivere AdGuard Home til at håndtere DNS-over-HTTPS-forespørgsler fra en omvendt proxyserver skal indstillingen trusted_proxies i AdGuardHome.yaml sættes til proxyserverens IP-adresse. Haves flere proxyservere, kan der bruges en CIDR i stedet for en simpel IP-adresse.

Nginx omvendt proxy

For at opsætte AdGuard Home til at acceptere forespørgsler fra Nginx omvendt proxyserver, så sørg for, at den omvendte proxyserver selv er opsat korrekt.

Filen nginx.conf skal indeholde de passende direktiver til at føje de understøttede videresendte headers til forespørgslen, som er X-Real-IP eller X-Forwarded-For. Dette kan opnås med ngx_http_realip_module. Kort sagt tager modulet klientens reelle IP-adresse og skriver den til HTTP-forespørgslens header. AdGuard Home modtager og fortolker værdien af denne header som klientens reelle adresse. Adressen på den omvendte proxyserver modtages og tjekkes også mod listen over "betroede" proxyer.

En anden header, som kan overvejes proxy'et, er Host-headeren, der er obligatorisk, for at AdGuard Home kan genkende forespørgsler fra klienter med et ClientID i deres værtsnavne.

Eksempelvis, hvis opsætningen af den omvendte proxyserver indeholder flg. direktiver:

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 vil få 192.168.1.2 som adressen på proxyserveren og tjekke den mod trusted_proxies. 1.2.3.4 vil være styret af adgangsindstillinger, hvis proxyen er "betroet".

Cloudflare CDN

Cloudflares indholdsleveringsnetværk fungerer som en omvendt proxy og føjer sine egne headers til de videresendte forespørgsler, som er CF-Connecting-IP og True-Client-IP. Disse understøttes også af AdGuard Home, så de omvendte proxyserveres adresser kan indsættes direkte i trusted_proxies-listen. Se Cloudflares officielle reference om gendannelse af den besøgendes oprindelige IP.

Andre headers

Andre HTTP-headers kan fremadrettet blive understøttet af AdGuard Home. Alle herader-relaterede funktionsforespørgsler bør dog først forsøges opløst via opsætning af selve den omvendte proxy.

For eksempel, for at ændre mekanismen HTTP Strict Transport Security til at omfatte det eksperimentelle preload-direktiv, kan noget i retning af flg. opsætningssekvens benyttes:

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

Opsætning af enheder

Android

  • Android 9 og senere har medfødt understøttelse af DNS-over-TLS. For at opsætte den, gå til IndstillingerNetværk & InternetAvanceretPrivat DNS og angiv relevant domænenavn.
  • AdGuard til Android understøtter DNS-over-HTTPS, DNS-over-TLS, DNSCrypt og DNS-over-QUIC.
  • Intra føjer DNS-over-HTTPS understøttelse til Android.

iOS

  • iOS 14 og senere har medfødt understttelse af DNS-over-TLS og DNS-over-HTTPS via opse6tningsprofiler. For at gøre tingene nemmere kan AdGuard Home generere disse opsætningsprofiler for brugeren. Gå blot til OpsætningsvejledningDNS-fortrolighed og rul til iOS.
  • AdGuard til iOS understøtter DNS-over-HTTPS, DNS-over-TLS, DNSCrypt og DNS-over-QUIC.
  • DNSCloak understøtter DNS-over-HTTPS, men for at opsætte den til at bruge egen server, generér et DNS Stamp til den.

Windows

  • Windows 10 Build 19628 og senere har medfødt understøttelse af DNS-over-HTTPS.
  • AdGuard til Windows understøtter DNS-over-HTTPS, DNS-over-TLS, DNSCrypt og DNS-over-QUIC.

macOS

  • macOS Big Sur og senere har medfødt understøttelse af DNS-over-TLS og DNS-over-HTTPS via opsætningsprofiler. For at gøre tingene nemmere kan AdGuard Home generere disse opsætningsprofiler for brugeren. Gå blot til OpsætningsvejledningDNS-fortrolighed og rul til iOS.

Andre implementeringer

  • AdGuard Home selv kan være en sikker DNS-klient på alle platforme.
  • dnsproxy understøtter alle kendte sikre DNS-protokoller.
  • dnscrypt-proxy understøtter DNS-over-HTTPS.
  • Mozilla Firefox understøtter DNS-over-HTTPS.

Opsætning af DNSCrypt

AdGuard Home vil kunne fungere som en DNSCrypt-server. Denne funktion er dog kun tilgængelig via en opsætningsfil og kan ikke opsættes vha. Web UI. Denne vejledning forklarer, hvordan dette gøres.

Generering af en opsætningsfil

Sådan genererer man en DNSCrypt-opsætningsfil og peger AdGuard Home på den:

Vigtigt

Sørg for, at de aktuelle TLS-indstillinger er gyldige, og at kryptering er aktiveret.

  1. Download den seneste version af værktøjet dnscrypt til systemet. Udpak arkivet og gå til den resulterende mappe.

    • På Unix, ved brug af en POSIX-kompatibel shell:

      (Her og nedenfor bruges linux-amd64 som et eksempel. Sørg for at download og bruge versioneen til den aktuelle platform.)

      1. Udpak filerne:

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

        Outputeksempel:

        linux-amd64/
        linux-amd64/README.md
        linux-amd64/LICENSE
        linux-amd64/dnscrypt
      2. Gå til den udpakkede mappe:

        cd ./linux-amd64/
      3. Generér opsætningsfilen:

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

        Outputeksempel:

        ```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
        ```
    • På Windows vha. PowerShell:

      (Her og nedenfor bruges windows-amd64 som et eksempel. Sørg for at download og bruge versionen til den aktuelle CPU-arkitektur.)

      1. Udpak filerne:

        Expand-Archive -Path .\dnscrypt-windows-amd64-v2.2.3.zip
      2. Gå til den udpakkede mappe:

        Set-Location -Path .\dnscrypt-windows-amd64-v2.2.3\windows-amd64\
      3. Generér opsætningsfilen:

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

        Outputeksempel:

        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

    Hvor example.org er navnet på værten, og ./dnscrypt.yaml er navnet på opsætningsoutputfilen.

    Stien til den binære fil kan føjes til den aktuelle PATH/$env:PATH.

  2. I opsætningsfilen (typisk AdGuardHome.yaml) skal flg. linjer tilføjes:

    'tls':
    # N.B. Kryptering skal være aktiveret.
    'enabled': true
    # …
    'port_dnscrypt': 5443
    'dnscrypt_config_file': './dnscrypt.yaml'

    Hvor 5443 er porten til DNSCrypt-serveren, og ./dnscrypt.yaml er navnet på den opsætningsfil, der blev genereret i trin 2.

    Vigtigt

    Stop AdGuard Home, før opsætningsfilen ændres.

    tip

    På Windows anbefales det at bruge den fulde sti til opsætningsfilen. For eksempel,C:\\Brugere\\Me\\Filer\\dnscrypt.yaml.

Generering af et DNSCrypt-stempel

Sdan genererer man et DNSCrypt-stempel og tjekker installationen:

  1. Gå til https://dnscrypt.info/stamps/.

  2. Indtast dataene fra den relevante DNSCrypt-opsætningsfil. Offentlige udbydernøgle er værdien af feltet public_key i DNSCrypt-opsætningsfilen.

    bemærk

    Angiv værten med den tilpassede port.

  3. Nu er der oprettet et stempel, der ser nogenlunde således ud:

    sdns://AQcAAAAAAAAADTEyNy4wLjAuMTo0NDMg8R3bzEgX5UOEX93Uy4gYSbZCJvPeOXYlZp2HuRm8T7AbMi5kbnNjcnlwdC1jZXJ0LmV4YW1wbGUub3Jn

    Tjek installationen ved at eksekvere:

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

    Eller i Windows:

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

    Hvor example.com er domænenavnet, der skal slås op.

Opsætning af enheder til brug med DNSCrypt

Alle platforme

  • dnscrypt-proxy (referenceimplementering). DNSCrypt-Proxy er en kommandolinje-proxy til Linux, BSD, Windows, macOS, Android mv.

Android

iOS

Windows

Se DNSCrypt-webstedet og DNS-fortrolighedsprojektets liste for mere info.