Configurar el DNS de CloudFlare en Windows y Linux

Hace un par de días CloudFlare ha anunciado un nuevo servicio gratuito de DNS, con la idea de competir con los de Google y los de OpenDNS (cuya popularidad ha caído desde que lo adquirió CISCO). La empresa afirma que es el servidor de DNS gratuito más rápido del mercado y también el más seguro en términos de privacidad, comprometiéndose a no minar datos y a borrar sus logs cada 24 horas (ahora a cada uno corresponde creer en la buena fé de las empresas implicadas, claro). Si quieres probarlo aquí te contamos cómo puedes configurar tu equipo:

¿Cómo lo hago en Linux?

Abre el fichero /etc/resolv.conf con un editor de texto (por ejemplo Nano) y añade estas dos líneas (adicionalmente puedes borrar los otros DNS si lo crees necesario)

nameserver 1.1.1.1
nameserver 1.0.0.1

Si utilizas IPV6 puedes añadir adicionalmente:

nameserver 2606:4700:4700::1111
nameserver 2606:4700:4700::1001

Por defecto /etc/resolv.conf permite un máximo de tres servidores, pero esto puede modificarse en el fichero /usr/include/resolv.h, cambiando el valor de la variable MAXNS.

También puedes modificar las DNS desde alguna herramienta del entorno gráfico, pero esta explicación a través de ficheros es universal.

¿Cómo lo hago en Windows?

Por no andar rompiéndome los huevos con distintas versiones de Windows también vamos a ver cómo hacerlo por línea de comandos (probado en Windows 7, Windows 2k8 y Windows 2k12), claro que siempre lo puedes hacer vía entorno gráfico:

wmic nicconfig where (IPEnabled=TRUE) call SetDNSServerSearchOrder ("1.1.1.1", "1.0.0.1")

Cifrar nuestro tráfico con DNSCrypt

El cifrado del tráfico entre nuestro equipo y el ISP es una medida de seguridad que nos permitirá protegernos de ataques Man in the Middle, de intentos de espiar nuestras comunicaciones y dificultará al ISP la posibilidad de aplicarnos algunas restricciones (ahora que la neutralidad de la red está en peligro).

Nuestra solución segura será usar DNSCrypt, un software disponible para Windows, Linux, BSD, Android, iOS y OSX. Aquí nos ocuparemos de la instalación en Linux. Como no existe ningún paquete .deb, .rpm o repositorio que podamos utilizar para instalarlo nos tocará compilar el código fuente. Como paso previo, pues, tendremos que tener en el equipo los paquetes necesarios para instalar. En los linux de la familia Debian lo amañamos con un

sudo apt-get install build-essential

Luego tocará descargar la librería libsodium, una librería necesaria para la compilación:

tar -xvzf libsodium-0.5.0.tar.gz
cd libsodium-0.5.0
./configure
make

make check  ##esto verificará si está todo en orden

sudo make install

El siguiente paso es descargar ya el código de DNSCrypt, descomprimirlo y compilarlo

sudo ldconfig #necesitamos lanzar esta configuración primero

tar -xvzf dnscrypt-proxy-1.4.0.tar.gz
cd dnscrypt-proxy-1.4.0
./configure
make

sudo make install

Muy bien, DNSCrypt está instalado, lo siguiente es configurarlo. Nos vamos a editar nuestra conexión de red y en la configuración de IPv4 elegimos en el campo Método la opción Sólo direcciones automáticas (DHCP) y en el campo Servidores DNS ponemos la dirección 127.0.0.1 (si os da problemas al probarlo cambiad por, por ejemplo, 127.0.0.2). Después desde el terminal ejecutamos restart network-manager. Tras hacer esto nos quedaremos sin conexión a internet ya que hemos desconfigurado las DNS y hasta que no se ejecute DNSCrypt no volverán a estar funcionales. Por tanto, lo ejecutamos:

/usr/local/sbin/dnscrypt-proxy --daemonize --pidfile=/run/dnscrypt-proxy.pid --edns-payload-size=4096

Para comprobar que todo funciona prueba a entrar en http://www.opendns.com/welcome/ para ver que la conexión ha vuelto. Como ya dije arriba es posible que usando 127.0.0.1 falle, así que si os pasa matáis el proceso de DNSCrypt, cambiáis la IP por, por ejemplo, 127.0.0.2 y volvéis a lanzar DNSCrypt añadiendo esa dirección como parámetro tal que así:

/usr/local/sbin/dnscrypt-proxy --daemonize --pidfile=/run/dnscrypt-proxy.pid --edns-payload-size=4096 --local-address=127.0.0.2

Ahora vamos con un último paso ¿quieres que DNSCrypt se ejecute cada vez que iniciamos el sistema? Si estás en un sistema basado en Debian toca modificar el archivo /etc/rc.local y pegamos, justo antes de la instrucción exit 0 una de las siguientes líneas:

#en caso de que utilicéis la ip 127.0.0.1
exec /usr/local/sbin/dnscrypt-proxy --daemonize --pidfile=/run/dnscrypt-proxy.pid --edns-payload-size=4096

#en caso de la 127.0.0.2
exec /usr/local/sbin/dnscrypt-proxy --daemonize --pidfile=/run/dnscrypt-proxy.pid --edns-payload-size=4096 --local-address=127.0.0.2

En la documentación de DNSCrypt podéis leer más opciones sobre parámetros, resolución de problemas, cambiar OpenDNS por un DNS alternativo…