DNSCrypt

Da ShadowMax Wiki.

Indice

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, nscd:

sudo apt-get install nscd
sudo service nscd stop

sudo sed -i -E -e '/^\s*persistent\s*(passwd|group|hosts|services|netgroup)\s*yes/s/yes/no/g' \
               -e '/^\s*enable-cache\s*(passwd|group|services|netgroup)\s*yes/s/yes/no/g' \
               -e '/^\s*enable-cache\s*hosts\s*no/s/no/yes/g' /etc/nscd.conf
sudo service nscd start

Abilitiamo inoltre il supporto al Extension Mechanisms for DNS:

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

e disabilitiamo il local resolver:

sudo sed -i 's/^dns=dnsmasq/#dns=dnsmasq/g' /etc/NetworkManager/NetworkManager.conf
sudo restart network-manager

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

Installazione

libsodium

Scarichiamo l'ultima versione disponibile dei sorgenti di libsodium:

https://download.libsodium.org/libsodium/releases/

controlliamo l'integrita' del pacchetto:

openssl dgst -sha256 libsodium-*.tar.gz
dig +dnssec +short TXT $(ls libsodium-*.tar.gz).download.libsodium.org

procediamo alla sua compilazione:

tar xfz libsodium-*.tar.gz
cd libsodium-*
./configure --prefix=/usr && make -j4

verifichiamo che la compilazione sia andata a buon fine:

make -j4 check

installiamo i binari:

sudo make install
sudo ldconfig

dnscrypt-proxy

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 && make -j4

ed installiamo i binari:

sudo make install

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

echo '
description "dnscrypt-proxy startup script"

pre-start script
    mkdir -p /run/dnscrypt
end script

start on (local-filesystems and net-device-up IFACE=lo)
stop on runlevel [!2345]

exec /usr/sbin/dnscrypt-proxy --local-address=127.0.0.2:53 \
                              --edns-payload-size=1252 \
                              --pidfile=/run/dnscrypt-proxy.pid \
                              --user=dnscrypt
' | sudo tee /etc/init/dnscrypt-proxy.conf
sudo ln -s /lib/init/upstart-job /etc/init.d/dnscrypt-proxy
sudo start dnscrypt-proxy

Configurazione

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