Unbound, gärna tillsammans med Pi-Hole?

Vad är Unbound då? Jo, Unbound är en DNS-resolver som ofta används för att förbättra DNS-prestanda och säkerhet. Den kan också fungera som en reverse proxy i vissa scenarier.

En reverse proxy fungerar som en mellanhand för klienter som begär resurser från servrar. När en klient gör en begäran till en server via en reverse proxy, skickar proxy-servern begäran till en eller flera backend-servrar, hämtar svaret och returnerar det till klienten. Detta kan ge flera fördelar:

  1. Lastbalansering: Reverse proxy kan fördela trafik mellan flera servrar för att optimera prestanda och tillgänglighet.
  2. Säkerhet: Genom att dölja backend-serverars identiteter och skydda dem mot direkt åtkomst kan reverse proxy skydda mot attacker.
  3. Caching: Den kan cacha svar från backend-servrar, vilket minskar belastningen på dem och snabbar upp svarstider för klienter.
  4. SSL-offloading: En reverse proxy kan hantera SSL-tillämpningar, vilket avlastar backend-servrar och förenklar hantering av certifikat.
  5. Centraliserad åtkomstkontroll: Du kan implementera säkerhetsåtgärder och autentisering på proxy-nivå, vilket gör det enklare att hantera.

Unbound är alltså som en reverse DNS-proxy för att förbättra prestanda, säkerhet och hantering av trafik mellan klienter och servrar.

Vad innebär det då om du t.ex. kör Pi-Hole som DNS? Om du anger t.ex. Google, OpenDNS eller någon av de andra DNS:erna som ligger fördefinierade i Pi-Hole så kommer de att kunna se vilka domänsökningar dina Pi-Hole:s blir använda för och kan logga dessa från din IP-adress. Kanske inte riktigt det du önskade av din ”privatisering” med Pi-Hole. Du vill ju att rot-DNS:erna på Internet skall tillfrågas, dessa kommer aldrig att ”intressera” sig för vad du gör… 😉 Då kan du med fördel installera Unbound på var och en av dina Pi-Hole-maskiner eller i en större uppsättning kan du ju dra igång två separata maskiner med Unbound som då kan få vara redundanta för varandra. Jag har valt att installera Unbound på var och en av de tre Pi-Hole:s jag har i mitt hemmanät.

På mina Raspberry Pi ser det ut såhär.

sudo apt install unbound -y

Efter en lyckad installation, editera (skapa) följande fil.

sudo nano /etc/unbound/unbound.conf.d/pi-hole.conf

Klistra in följande i den tomma filen.

server:
verbosity: 1
interface: 127.0.0.1
port: 5335
do-ip4: yes
do-udp: yes
do-tcp: yes
root-hints: ”/var/lib/unbound/root.hints”
use-syslog: yes
do-not-query-localhost: no
cache-min-ttl: 3600
cache-max-ttl: 86400
prefetch: yes

access-control: 127.0.0.0/8 allow

Efter detta, gå in i Pi-Hole:s konfiguration under Settings, sedan till DNS-fliken. Ta bort alla valda ”Upstream DNS Servers”, ange sedan en egen och skriv in ”127.0.0.1#5335” i rutan för ”Cusctom 1 (IPv4)”, spara konfigurationen.

Tittar du nu i Query Log så kommer du att se att localhost svarar på dina upstream-förfrågningar.

För att övervaka hur Unbound mår, prova t.ex.

sudo unbound-control stats_noreset

Du kommer då bl.a. att få se följande.

total.num.queries=41440
total.num.queries_ip_ratelimited=0
total.num.cachehits=8069
total.num.cachemiss=33371
total.num.prefetch=469
total.num.expired=0
total.num.recursivereplies=33371
total.requestlist.avg=0.445124
total.requestlist.max=16
total.requestlist.overwritten=0
total.requestlist.exceeded=0
total.requestlist.current.all=0
total.requestlist.current.user=0
total.recursion.time.avg=0.070822
total.recursion.time.median=0.0324167
total.tcpusage=0
time.now=1723466629.006066
time.up=193715.222439
time.elapsed=193715.222439

Mer info hittar på Internätet, lycka till 🙂