El servicio DNS sirve para encontrar máquinas en internet, normalmente la configuración para ese tráfico se nos asigna directamente desde el router que tenemos en casa, si lo hemos configurado por dhcp.
En un sistema linux, además de conectarnos a la red, al utilizar dhcp normalmente se reescribe el fichero /etc/resolv.conf que se encarga de contener las ips de los servidores dns.
Podemos cifrar este tráfico para hacer invisible cara a posibles ataques Man in the middle y securizar de esta manera nuestros Request (peticiones de información) a los servidore dns que soportan dnscrypt
Para ello es necesario instalar dnscrypt, un proxy que conectará nuestra máquina con otros host o resolvers.
Antes de instalar dnscrypt, es necesario instalar libsodium descargandolo desde aquí . Luego descargamos dnscrypt desde aquí y lo instalamos.
Un script de autoinstalación para los más vagos. https://raw.githubusercontent.com/janbrennen/dnscrypt-autoinstall/master/dnscrypt-autoinstall.sh
Un script para incluirlo en el /etc/init.d que pondra a escuchar dnscrypt-proxy en la dirección 127.0.0.2 y puerto 53.
#!/bin/sh # This is for the file /etc/init.d/dnscrypt ### BEGIN INIT INFO # Provides: dnscrypt # Required-Start: $all # Required-Stop: $all # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Short-Description: DNSCrypt for OpenDNS # Description: Launch the dnscrypt to communicate with OpenDNS ### END INIT INFO DAEMON="/usr/sbin/dnscrypt-proxy" NAME="dnscrypt" dnscrypt_start() { echo "Starting dnscrypt" dnscrypt-proxy --local-address=127.0.0.2:53 -R d0wn-im-ns1 --daemonize } dnscrypt_stop() { echo "Stopping dnscrypt" start-stop-daemon --oknodo --stop --quiet --retry=0/3/KILL/3 --exec "$DAEMON" > /dev/null } case "$1" in start) dnscrypt_start ;; stop) dnscrypt_stop ;; restart|force-reload) dnscrypt_stop dnscrypt_start ;; *) echo "Usage: /etc/init.d/$NAME {start|stop|restart|force-reload}" >&2 exit 1 ;; esac exit 0
Lista de resolvers https://github.com/jedisct1/dnscrypt-proxy/blob/master/dnscrypt-resolvers.csv
Para que luego funcione hay que arcodarse de no usar el dhcp o sobreescribirá el archivo /etc/resolv.conf si bien esto seguro se puede hacer de alguna otra forma como cambiar los permisos, etc. El /etc/resolv.conf tiene que quedar asi para que todas las peticiones dns salgan por el dnscrypt-proxy:
nameserver 127.0.0.2
Para slackware, habría que cambiar la función dnscrypt_stop() por lo siguiente:
https://www.pastee.org/658ma
En mi caso pongo dos pid por que tengo dos instancias de dnscrypt, si sólo hubiese una, se podria quitar $pid2.
Por cierto, DNSCrupt ROX! X)
He dejado en el pad de este post la forma de hacerlo en Gentoo.
Y yo dejé en el pad como integrar el path del ejecutable en debian wheezy.
Genial :). Gracias
Puede alguien confirmar, si esta forma de configurar las llamadas a DNS entra en conflicto con las redes invisibles I2P/Tor/Freenet ?