DNSCrypt

Da ShadowMax Wiki.

Introduzione

DNSCrypt e' la soluzione di OpenDNS che permette di crittografare le richieste DNS tra il proprio PC e i name server di OpenDNS.

Prerequisiti

Per migliorare le performance facciamo uso di un Name Service Caching Daemon, Unbound:

sudo apt-get install unbound

echo "
server:
        interface: 127.0.0.3@53
        do-ip6: no
        do-not-query-localhost: no

forward-zone:
        name: "."
        forward-addr: 127.0.0.2@53
        forward-first: no
" | sudo tee -a /etc/unbound/unbound.conf.d/dnscrypt-proxy.conf

sudo systemctl enable unbound.service
sudo systemctl start unbound.service

Abilitiamo inoltre il supporto al Extension Mechanisms for DNS:

echo "options edns0" | sudo tee -a /etc/resolvconf/resolv.conf.d/tail

Creiamo un utente di sistema dedicato, senza una shell e con una home directory vuota, da usare per eseguire dnscrypt-proxy:

sudo adduser --system --quiet --home /run/dnscrypt --shell /bin/false \
             --group --disabled-password --disabled-login dnscrypt

Installiamo il pacchetto build-essential per poter compilare il codice sorgente:

 sudo apt-get install build-essential libssl-dev libsystemd-dev

Installiamo la libreria libsodium necessaria a DNSCrypt:

sudo apt-get install libsodium13 libsodium-dev

Installazione

Scarichiamo l'ultima versione disponibile dei sorgenti di dnscrypt-proxy:

http://download.dnscrypt.org/dnscrypt-proxy/

controlliamo l'integrita' del pacchetto:

openssl dgst -sha256 dnscrypt-proxy-*.tar.bz2
dig +dnssec +short TXT $(ls dnscrypt-proxy-*.tar.bz2).download.dnscrypt.org

procediamo alla sua compilazione:

tar xfj dnscrypt-proxy-*.tar.bz2
cd dnscrypt-proxy-*
./configure --prefix=/usr --with-systemd && make -j4

ed installiamo i binari:

sudo make install

Creiamo inoltre un servizio systemd per fare in modo che DNSCrypt venga avviato automaticamente all'avvio:

echo '
[Unit]
Description=dnscrypt-proxy startup script
Documentation=man:dnscrypt-proxy(8)
#Requires=dnscrypt-proxy.socket

[Service]
Type=simple
NonBlocking=true
ExecStartPre=/bin/mkdir -p /run/dnscrypt
ExecStart=/usr/sbin/dnscrypt-proxy --local-address=127.0.0.2:53 \
                                   --resolver-name=opendns \
                                   --pidfile=/run/dnscrypt-proxy.pid \
                                   --user=dnscrypt

[Install]
#Also=dnscrypt-proxy.socket
WantedBy=multi-user.target
' | sudo tee /lib/systemd/system/dnscrypt-proxy.service
echo '
[Unit]
Description=dnscrypt-proxy listening socket
Documentation=man:dnscrypt-proxy(8)
After=network.target

[Socket]
ListenStream=127.0.0.2:53
ListenDatagram=127.0.0.2:53

[Install]
WantedBy=sockets.target
' | sudo tee /lib/systemd/system/dnscrypt-proxy.socket
sudo systemctl enable dnscrypt-proxy.service 
sudo systemctl start  dnscrypt-proxy.service

Configurazione

Per utilizzare DNSCrypt e' sufficiente modificare nelle proprieta' di rete la voce DNS servers con 127.0.0.3.
Per testare che tutto sta' funzionando a dovere, andate qui e qui.