Actualización junio/2018
Esta guía esta escrita usando mi configuración de dnscrypt
Primero instalemos las herramientas necesarias. Ya sabemos como instalarlas.
pacman -Sy dnscrypt-proxy bind-tools
Vamos a la acción.
Primero vamos a elegir un servidor de los que
dnscrypt tienes disponibles en su web
dnscrypt.info. Necesitaremos el nombre del server que esta en la columna
name, yo utilizaré
cloudflare y
securedns para propósito de esta guía pero podemos utilizar otros si así lo deseamos.
N O T A : Se recomienda elegir servidores sin log y que soporten DNSSEC.
Primero vamos al archivo de configuración de
dnscrypt.
sudo mousepad /etc/dnscrypt-proxy/dnscrypt-proxy.toml
Vamos a descomentar
server_namers y escribiremos el nombre de los servidores que elegimos anterior mente. Yo había elegido
cloudflare y
securedns
server_names = ['securedns', 'securedns-ipv6', 'cloudflare', 'cloudflare-ipv6']
En
listen_addresses dejamos como está por defecto. Se vería así.
listen_addresses = ['127.0.0.1:53', '[::1]:53']
Bajamos hasta donde dice
#Server must support DNS security extensions (DNSSEC). Ahí cambiaremos a
true ya que los servidores que elegimos soportan DNSSEC.
Seguimos con la configiración. Ahora bajamos hasta la parte de logs donde dice # Log level. Ahí decomentaremos las siguientes líneas como en la imagen. Puede cambiar el nivel del log pero en lo personal lo uso en 2 como esta por defecto, y la ruta del log es recomendable también dejarla así por default.
Seguimos hasta la parte de
ephemeral_keys yo activo esta opción para aumenta un poco la privacidad pero ustedes pueden usarla o no usarla. Lee la info que viene pues indica que aumenta el uso de cpu
Bajamos un poco más hasta la sección de
## DoH: Disable TLS session tickets - increases privacy but also latency. Mi configuración es la de la imagen. La info nos dice que si tenemos problemas con
tls_cipher_suite al buscar fuentes debemos dejarlo vacío, así
"tls_cipher_suite = []", en lo personal yo no he tenido problemas.
Seguimos, en los ## Fallback resolver, dejaremos Quad9 que son los que vienen por defecto, o si lo prefieren pueden cambiarlos por los de google: 8.8.8.8
Bajamos aun más en el archivo de configuración dejando como esta por defecto hasta llegar a [blacklist].
En general la blacklist es un archivo que bloquea ads, banners, trackers, web de minado, etc. Para usar blacklist debemos descomentar las lineas correspondientes como en la siguiente imagen, a mi me gusta descomentar para que se genere el log de los bloqueos pero tu puedes dejarlo comentado si no necesitas el log.
Descargaremos un archivo blacklist con la siguiente orden.
curl -o blacklist.txt https://download.dnscrypt.info/blacklists/domains/mybase.txt
Si no quieres usar curl, entra
aquí para descargar el blacklist usando el navegador.
Ahora lo movemos hasta /etc/dnscrypt-proxy/
sudo mv -f blacklist.txt /etc/dnscrypt-proxy/
¡Listo!. Guardamos la configuración, ahora comprobaremos si hay errores en la configuración, así que habilitamos e iniciamos el servicio.
sudo systemctl enable dnscrypt-proxy
sudo systemctl start dnscrypt-proxy
Comprobemos el estado
systemctl status dnscrypt-proxy
Deberíamos ver algo como en la imagen. Podemos observar que el
blacklist se cargo correctamente, así que tendremos una navegación más fluida, segura y sin publicidad gracias a
dnscrypt-proxy.
¡Bien, casi terminamos!. Seguimos con
resolv.conf. Hagamos un backup del archivo.
sudo cp /etc/resolv.conf /etc/resolv.conf.backup
Para abrir este archivo usaremos nano.
sudo nano /etc/resolv.conf
Eliminamos o comentamos su contenido, y escribimos como se muestra abajo.
La configuración tomará efecto en cuanto guardemos el archivo, así que es muy importante que el servicio de dnscrypt no contenga errores ya que nos quedaríamos sin conexión al instante.
nameserver 127.0.0.1
options edns0 single-request-reopen
N O T A:
Si al guardar
resolv.conf nos quedamos sin internet estando funcinando correctamete dnscrypt, prueba a eliminar
single-request-reopen, ya que me han reportado algunas personas que se quedan sin internet después de guardar. Si aún así continuas sin internet elimina toda la linea
options edns0 single-request-reopen.
Tenemos que proteger nuestro resolv.conf ya que
networkmanager reescribe este archivo cuando se inicia. agreguemos el atributo
inmutable
sudo chattr +i /etc/resolv.conf
Hagamos una primera prueba para ver si funciona
dnscrypt-proxy.
dnscrypt-proxy -resolve archlinux.org
Deberíamos ver algo como la siguiente imagen.
Si el resultado no tiene información del dominio que consultamos, quiere decir que algo salio mal. Bien, vamos a la web de
dnsleaktest y hagamos un
Extended test para ver si todo esta correcto y nuestros servidores DNS son los que indicamos. Les dejo la imagen de mi resultado.
¡Perfecto!,
dnscrypt está funcionando. Veamos ahora la cache, por defecto viene activada en el archivo de configuración así que comprobemos si funciona.
Usaremos la orden
dig para consultar
archlinux.org, si la cache está funcionando debemos ver una disminución en los tiempos de consulta.
dig archlinux.org | grep "Query time"
Yo realice tres consultas, les dejo mis resultados en la siguiente imagen.
Podemos concluir que la cache está funcionando.
Para configurar este parámetro debemos ir al archivo de configuración
dnscrypt-proxy.toml hasta el apartado
DNS cache, bien, la configuración por de
defecto es la recomendada para la mayoría de los usuarios y en lo personal, no le veo necesario cambiarla a menos que tengas necesidades específicas como que estés corriendo en un servidor muy concurrido.
Entender la configuración es muy sencillo:
Es la cantidad máxima de entradas en la cache
cache_size = 512
El valor TTL (Time To Live) se mide en segundos, así es que el tiempo mínimo que durará en cache una respuesta positiva será de 600 segundos, que es igual a 10 minutos.
cache_min_ttl = 600
El tiempo máximo que durará en cache una entrada positiva será de un 86400 que es un día completo.
cache_max_ttl = 86400
Las respuestas negativas durará sólo 60 segundos, que es un minuto.
cache_neg_ttl = 60
Como podemos ver, ya no es necesario utilizar
dnsmasq como cache pues
dnscrypt ya trae cache incorporada.
Con esto hemos terminado esta pequeña guía, les dejo el link del proyecto donde pueden encontrar más información.
https://github.com/jedisct1/dnscrypt-proxy