Mostrando las entradas con la etiqueta DNSCrypt. Mostrar todas las entradas
Mostrando las entradas con la etiqueta DNSCrypt. Mostrar todas las entradas

lunes, 23 de abril de 2018

Instalar dnscrypt-proxy 2 en Arch

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

martes, 26 de enero de 2016

Instalación y configuración de DNSCrypt Y DNSMasq en Arch

¡ATENCIÓN! Dnscrypt-proxy se ha actualizado, por tal motivo, esta guía ya no es 100% compatible. La nueva guía la encuentra en este link. ¡Gracia por su visita!


En este post veremos como instalar DNSCrypt para encriptar la comunicación entre nosotros y nuestro DNS, también vamos a configurar DNSMasq para usarlo como cache loca y acelerar las repuestas al resolver un dominio.

- Vamos a instalar las herramientas necesarias.

$ sudo pacman -S dnscrypt-proxy dnsmasq bind-tools

- Ahora vamos a habilitar la comunicación.

$ sudo systemctl enable dnscrypt-proxy.socket

- Nos vamos hasta el resolv.conf y creamos una copia de seguridad

$ sudo cp /etc/resolv.conf /etc/resolv.conf.backup

-  Abrimos resolv.conf con el siguiente comando y lo editamos

$ sudo nano /etc/resolv.conf

Debemos eliminar las direcciones en seguida de nameserver y colocar el localhost (127.0.0.1) con en la siguiente imagen.


- Tenemos que proteger el archivo contra escritura para que no sea modificado por ninguna aplicación

chattr +i /etc/resolv.conf

- Ahora vamos a abrir el archivo dnscrypt-resolvers.csv con libreoffice-calc y elegiremos el servidor más cercano dependiendo nuestra ubicación, tenemos que elegir el nombre que está en la columna "A" y copiarlo.

$ localc /usr/share/dnscrypt-proxy/dnscrypt-resolvers.csv

En mi caso, usaré "cisco" que está en la fila 3 y si miramos más delante en la fila, veremos que es OpenDNS así que los utilizaré para este post, mas delante ustedes pueden usar otras alternativas.

- Editamos el servicio para agregar nuestro servidor elegido. El servicio se crea automáticamente al habilitar el socket.

$ sudo systemctl edit dnscrypt-proxy.service --full

Eliminaremos el servidor que viene por defecto y colocaremos el que hemos elegido, en mi caso elegí cisco
así que al final debe decir: "-R cisco" sin comillas



- Reiniciamos el servicio y revisamos el estado del servicio y el socket

$ sudo systemctl restart dnscrypt-proxy.service

- Comprobamos el estado del servicio

$ sudo systemctl status dnscrypt-proxy.service




 y el estado del socket

$ sudo systemctl status dnscrypt-proxy.socket



Si seguiste todos los pasos y elegiste cisco (OpenDNS) como servidor, puedes pulsa aquí y ver el mensaje de bienvenida de la página, con eso confirmaremos que todo esta correcto.

Hasta aquí hemos configurado a dnscrypt para trabajar sólo, pero como utilizaremos dnsmasq para crear una cache DNS local, vamos a configurar dnscrypt-proxy.socket para utilizar el puerto 40. Por defecto dnscrypt utiliza el puerto 53 y  dnsmasq también utiliza el puerto 53, así que al intentar iniciar el servicio dnsmasq éste nos mandará un error indicando que el puerto ya esta en uso, por que el servicio dnscrypt ya esta corriendo utilizando dicho puerto.

- Vamos a modificar dnscrypt-proxy.socket para cambiar del puerto 53 al 40.

$ sudo systemctl edit dnscrypt-proxy.socket --full



Guardamos los cambios y reiniciamos

$ sudo systemctl restart dnscrypt-proxy.socket

- Ahora vamos a configurar dnsmasq. primero creamos un backup del archivo original

$ sudo cp /etc/dnsmasq.conf /etc/dnsmasq.conf.backup

- ahora sí, vamos a abrirlo con mousepad

$ sudo mousepad /etc/dnsmasq.conf

- Descomentamos la linea

no-resolv





- Podemos descomentar y editar la linea # server=10.1.2.3@192.168.1.1#55 o como le hice yo, agregas la linea debajo.  #40 indica que usaremos el puerto 40.

server=127.0.0.1#40




- Descomentamos

listen-address=127.0.0.1



- Descomentamos y aumentamos el tamaño de direcciones que guardará en la cache. yo utilizaré 1000 pero pueden modificarlo a su gusto, incrementar o reducir el número.

cache-size=1000


Guardamos los cambios y cerramos el archivo. Ahora vamos a habilitar e iniciar el servicio dnsmasq

- Lo creamos

$ sudo systemctl enable dnsmasq.service

- Lo iniciamos

$ sudo systemctl start dnsmasq.service

Vamos a realizar la prueba para saver si dnsmasq esta funcionando, consultaremos google con el comando dig, debemos buscar la linea que dice "Query time" para saber cuanto tiempo tarda en resolverse el dominio

$ dig www.google.com


Esta primera consulta tardó 90 msec

Volveremos a consultar google, si dnsmasq esta funcionando debemos de ver una disminución de tiempo en Query time. En esta consulta vamos a filtrar el resultado para que solo nos muestre lo que nos interesa

$ dig www.google.com | grep "Query time"



Podemos observar 0 msec,  esto solo pude indicar dos cosas: que dnsmasq esta funcionando o que me quede sin conexión a internet. Vamos a hacer otra consulta para estar seguros

Ahora consultaremos facebook.



Realizamos la segunda consulta


Podemos observar que el tiempo de respuesta se redujo prácticamente a la mitad. Esto quiere decir que dnsmasq esta funionando y que aun tengo conexión a internet en mi netbook.