Pi-hole ja DNS over TLS -välityspalvelin HaProxy:llä

  • minh 

Itsellä on ollut jonkinaikaa kodin sisäverkossa Pi-hole DNS-resolver -palvelin, joka suodattaa automaattisesti mm. mainoksia ja trackereitä verkossani. Kuitenkin esimerkiksi Androidilla käyttäessä muissa verkoissa niin DNS-palvelimia ei ole oikein voinut muuttaa ennen Android 9:llä olevaa DNS over TLS (DoT)-tukea, johon voi nyt oman DNS-palvelimenkin asettaa.

Mikäli sisäverkossasi on toinen DNS-palvelin niin tämä ohje toimii muillakin nimipalvelimilla.

Tarvittavat asiat

  • Julkinen verkkotunnus, kuten mt-tech.fi (voi olla myös aliverkkotunnus). Ohjeessa käytän example.org verkkotunnusta.
  • Julkinen IP-osoitteen, mihin olet ohjannut DNS:n avulla verkkotunnuksesi.
  • SSL-sertifikaatti, ilmainen Let’s Encrypt käy hyvin
  • Palomuurista tulee avata portti 853 internettiin.

Asenna ja konfiguroi haProxy

Asenna haProxy-pakettihallinnasta.

sudo apt install haproxy

Konfiguroi haProxy asennuksen jälkeen avaamalla konfigurointi tiedosto /etc/haproxy/haproxy.cfg ja konfiguroimalla seuraavalla tavalla. Tässä esimerkiksi haProxy ja Pi-hole DNS-palvelin ovat samalla Debian-palvelimella.

global
        log /dev/log    local0
        chroot /usr/local/var/lib/haproxy
        user haproxy
        group haproxy
        maxconn  4000
        pidfile  /usr/local/var/run/haproxy.pid
        tune.ssl.default-dh-param  2048
        ssl-default-bind-ciphers TLS13-AES-256-GCM-SHA384:TLS13-AES-128-GCM-SHA256:TLS13-CHACHA20-POLY1305-SHA256:EECDH+AESGCM:EECDH+CHACHA20
        ssl-default-bind-options no-sslv3 no-tlsv10 no-tlsv11
 
        # Default SSL material locations
        ca-base /etc/ssl/certs
        crt-base /etc/ssl/private
 
defaults
        balance roundrobin
        timeout  http-request 10s
        timeout  queue 1m
        timeout  connect 10s
        timeout  client 1m
        timeout  server 1m
        timeout  check 10s
 
listen dns
        bind :::853 v4v6 tfo ssl crt /etc/haproxy/certkey.pem
        mode tcp
        server server1 127.0.0.1:53

Kopioi Let’s Encryptin hakemistosta verkkotunnuksesi privaattiavain ja julkinen avain yhteen tiedostoon

cat  /etc/letsencrypt/live/example.org/fullchain.pem /etc/letsencrypt/live/example.org/privkey.pem > /etc/haproxy/certkey.pem

Käynnistä tämän jälkeen haProxy uudelleen

sudo service haproxy restart

Aseta nyt DNS over TLS-palvelimen osoite Android-puhelimesi Private DNS-asetuksiin. Tämä ominaisuus siis saatavilla Android 9:stä alkaen.

Kommentoi