Cifra tu tráfico DNS con DNSCrypt Proxy en Ubuntu y navega más seguro

DNSCrypt Proxy es una aplicación de código libre que tiene como finalidad cifrar el tráfico DNS de nuestra conexión para navegar con mayor seguridad. El programa cifra las peticiones DNS localmente y estas son descifradas luego por el proveedor de DNS, por lo que cualquier persona que intente interceptarlas en el camino (por ejemplo, para realizar un ataque man-in-the-middle) la tendrá muy difícil para conseguirlo.

Actualmente existe un buen número de proveedores DNS compatibles con DNSCrypt Proxy, y al ser software libre cualquiera con los conocimientos suficientes puede montarse su propio servidor DNS y configurarlo con el programa. Sin embargo, por defecto ya viene preconfigurado para usar con OpenDNS.

En esta entrada les voy a mostrar la instalación más simple y básica para el caso de Ubuntu y derivadas. Aquéllos que deseen una configuración más avanzada pueden consultar la página del proyecto y su repositorio en GitHub.

Instalación

Empezamos instalando el paquete de DNSCrypt Proxy desde el repositorio PPA mantenido por Sergey “Shnatsel” Davidoff:

sudo add-apt-repository ppa:shnatsel/dnscrypt
sudo apt-get update
sudo apt-get install dnscrypt-proxy

Con eso ya está instalado y corriendo, ahora solo nos queda indicarle al sistema que lo use. Para ello tenemos dos métodos, el primero por consola y el segundo en modo gráfico, escoge el que más te agrade:

Método 1

Desactivamos los DNS que se están usando actualmente:

sudo unlink /etc/resolv.conf

Creamos un nuevo archivo /etc/resolv.conf con un editor de texto:

sudo gedit /etc/resolv.conf

Y le pegamos esta línea para pasar el tráfico DNS por DNSCrypt:

nameserver 127.0.0.1

Ahora protegemos el archivo para evitar que Network Manager lo modifique:

sudo chattr +i /etc/resolv.conf

Para volver a modificarlo después hay que quitarle antes la protección con este comando:

sudo chattr -i /etc/resolv.conf

Luego pueden volver a protegerlo o no dependiendo de lo que quieran hacer.

Guardamos los cambios y cerramos el editor.

Método 2

Damos clic en el icono de red de nuestro panel y pulsamos Editar las conexiones. Ahora seleccionamos la conexión que tengamos activa y pulsamos en Editar. En la ventana que se abre nos vamos a la pestaña de Ajustes de IPv4 y veremos algo como esto:

Configuramos las opciones como se ven ahí, seleccionando en Método “Solo direcciones automáticas (DHCP)”, y en Servidores DNS colocando 127.0.0.1

Activación

Tanto si usaste el Metodo 1 como el Método 2, el siguiente paso es reiniciar Network Manager:

sudo service network-manager restart

Veremos que la conexión se corta y vuelve a arrancar. Si todo ha salido bien, ya estará funcionando DNSCrypt Proxy. Para comprobarlo nos vamos a esta página, y si el resultado es positivo nos dará la bienvenida a OpenDNS:

De lo contrario nos saldrá un mensaje de error diciendo “Oops”, o directamente no cargará ninguna página. Para resolverlo simplemente cambiamos el servidor 127.0.0.1 por 127.0.0.2 (o algún otro) y volvemos a reiniciar Network Manager.

Solo para Ubuntu 14.04

El mantenedor del PPA advierte que hay un bug en Ubuntu 14.04 que impide apagar el equipo cuando DNSCrypt Proxy está funcionando. Indica que está trabajando en un parche para resolverlo, pero mientras tanto se puede arreglar ejecutando estos comandos:

sudo apt-get install apparmor-utils
sudo aa-complain /etc/apparmor.d/usr.sbin.dnscrypt-proxy

Desinstalación

Si luego queremos dejar de usar DNSCrypt Proxy, antes que nada habrá que restaurar las opciones de conexión a como estaban al principio.

Si usaste el Método 1 sería quitarle la protección al archivo y después volver a habilitar los antiguos DNS con este comando:

sudo rm /etc/resolv.conf && sudo ln -s /run/resolvconf/resolv.conf /etc/resolv.conf

Si usaste el Método 2, sería abrir otra vez el menú de configuración de red y en Método seleccionar “Automático (DHCP)”.

En cualquiera de los dos casos habrá que reiniciar después Network Manager con el comando antes mencionado, y finalmente desinstalar DNSCrypt Proxy de esta forma:

sudo apt-get autoremove --purge dnscrypt-proxy

No hay que olvidar también remover el PPA yendo al Centro de Software > Editar > Otro software.

Comparte para difundir

Si te ha gustado nuestro contenido ahora puedes ayudar a difundirlo en las redes sociales de manera sencilla usando los siguientes botones:

Envía
Pinea
Print

54 comentarios

  1.   DAVID HENRY dijo

    Aplica también para Opensuse podrían publicar mas información acerca de esta distro

    1.    Manuel de la Fuente dijo

      A grandes rasgos es un método [casi] genérico que aplica para [casi] cualquier distribución (el método 2 para las que usen Network Manager), pero obviamente cambian los repositorios y algunas cosas como la forma de arrancar y reiniciar los servicios.

  2.   Huesos dijo

    Saludos
    1. el primer comentario esta invisible o algo porque la cuenta empieza en 2
    2. lo vi en perseos blog pero a pura compilacion, y de paso el articulo ya no esta

    1.    Manuel de la Fuente dijo

      1. El primer comentario es un pingback.
      2. Yo también lo había visto en el blog de Perseo hace mucho tiempo, pero ahora parece estar haciendo mantenimiento y borró todas sus entradas.

  3.   Jorgicio dijo

    Acabo de probarlo, pero sin ningún éxito.

    Hice lo que decía este tutorial, y luego me había quedado sin internet, por lo que volví a los DNS que tenía antes y todo bien.

    ¿Faltó algún paso, por casualidad? Porque no me explico cómo me pude haber quedado sin internet si seguí este tutorial al pie de la letra.

    Gracias.

    1.    Jorgicio dijo

      Me respondo: Estaba usando DNSmasq y había que hacer un poco más de configuración. Al final lo eliminé y volví a seguir este tutorial y todo OK. Gracias 😀

      1.    Manuel de la Fuente dijo

        Me alegra que consiguieras solucionarlo. 🙂

      2.    Mausmann dijo

        Hola! Sabes que no puedo hacerlo andar. Cómo es eso del DNSmasq?

  4.   gaston dijo

    Si estoy detrás de un proxy, funciona?

    1.    Jorgicio dijo

      Técnicamente, debería funcionar.

      Yo estoy usando Privoxy y su configuración para bloquear publicidad, y a la vez uso DNScrypt proxy, y no he tenido dramas. Quizás sea porque son 2 proxys para distintos propósitos, uno para DNS y otro para navegar en la web.

  5.   rawBasic dijo

    Ge-nial!.. ..la verdad que no conocía el método.. ..super fácil de configurar en ArchLinux también.. ..graaacias..

    1.    Manuel de la Fuente dijo

      Así es, en Arch también es muy fácil; no lo incluí aquí porque no tengo los pasos actualizados, pero la última vez que lo usé ahí era:

      # pacman -S dnscrypt-proxy
      # systemctl enable dnscrypt-proxy
      # systemctl start dnscrypt-proxy

      Y el resto era igual a como está en el tutorial.

      EDITO: Las instruccioes completas están acá: Instalar DNSCrypt Proxy en Arch Linux

      1.    Mahdzu dijo

        Perdón pero en Arch no lo logro… Instalo, habilito, inicio, uso el paso 2 y reinicio Network Manager y siempre me sale el msj: OPPSS… Que podrá ser?

      2.    Mahdzu dijo

        Me contesto: Uso el método 1 y ya me sirve. Gracias!

        1.    Manuel de la Fuente dijo

          He puesto acá las instrucciones para hacerlo en Arch Linux: http://blog.desdelinux.net/instalar-dnscrypt-proxy-en-arch-linux/

  6.   Luis dijo

    Tiene buena pinta aunque aún no lo he probado.

    Este tipo de cosas ¿Afecta a la velocidad de la conexión? ¿Se vuelve más lenta?

    Gracias.

    1.    Manuel de la Fuente dijo

      Al contrario, se vuelve más rápida porque pasas a usar los DNS de OpenDNS que tienen una velocidad de respuesta mucho más elevada que los de tu ISP. Aparte te beneficias de los otros atributos de OpenDNS como la protección contra phishing y demás. 😉

      1.    Luis dijo

        Ok

        Yo hasta ahora usaba los servidores de Google, no sé cómo de seguro serán pero son rápidos.

        1.    Manuel de la Fuente dijo

          Sí, también los he utilizado, aunque me gustan más los de OpenDNS porque me da la sensación de que son más rápidos y generan menos errores; si bien solo son impresiones mías, no he hecho tests ni nada para verificarlo. 😛

      2.    Luis dijo

        Es cierto, lo he probado en mi otro equipo y “parece” que va más rápido.

        Una cosa que no entiendo:

        ¿Por qué hay que instalar dnscrypt-proxy? Quiero decir ¿No bastaría con cambiar las DNS que tengamos en nuestra configuración de red por la DNS de OpenDNS?

        Es lo que yo hago para usar las DNS de Google: Simplemente cambio ese dato en la configuración del equipo, no necesito instalar nada ni tener que ejecutar otro demonio más…

        Es la única pega que le veo.

        1.    Manuel de la Fuente dijo

          En OpenDNS también se puede hacer así, pero esto que describo no es lo mismo. Cuando configuras los DNS de esa forma, las consultas se hacen por vía simple, sin ningún tipo de cifrado ni seguridad. Con esto les añades cifrado y autenticación. Es decir, con DNSCrypt Proxy estás usando los DNS de OpenDNS Y tecnología de cifrado, las dos cosas, no solo la primera.

      3.    Luis dijo

        Entiendo, gracias por tu respuesta.

        En internet recomiendan el uso de Unbound junto con dnscrypt pero no sé muy bien qué hace ese programa.

        ¿Qué me puedes decir?

        1.    Manuel de la Fuente dijo

          Según tengo entendido es un servidor DNS que te instalas en local; teóricamente debería incrementar aún más tu velocidad porque genera un caché y DNSCrypt hace las solicitudes ahí en lugar de enviarlas a OpenDNS, pero fuera de eso no lo he investigado a fondo para ver exactamente en qué consiste el proceso.

      4.    Luis dijo

        Ok, gracias por la info.

  7.   elav dijo

    Mmm dudo mucho que esto funcione en una empresa donde se usan servidores DNS y Proxy locales. De todos modos probaré a ver que tal.

  8.   Manu Lopez dijo

    Genial, funcionando al 100 %.

  9.   Ghost dijo

    Me funcionó! :’) Muchas gracias hace tiempo venía buscando como usar un proxy o vpn (gratuitos) aún me falta el vpn que no pude encontrar uno que haya podido instalar en mi ubuntu.

    1.    Manuel de la Fuente dijo

      No sé para qué buscabas un proxy pero si era para cambiar tu IP esto no te va a servir, ya que solo se encarga de cifrar las peticiones entre tu máquina y el proveedor de DNS. Tu IP sigue siendo la misma y de cara a los servidores todo sigue igual.

      1.    Ghost dijo

        Si me di cuenta después que hice la prueba, es para cambiar la dirección de ip, con el cifrado ya es un avance en pos de la seguridad. Sabes de algún post en algún blog donde se explique mas o menos de manera simple como usar un vpn en Ubuntu? Según leí y pude comprobar hay un error que impide subir el archivo que contiene la configuración ya hecha por lo que las cosas se hacen un poco mas complicadas, yo no pude lograr usar uno. Cuando usaba windows tenía uno llamado hotspotshield y ese no tiene soporte para linux o al menos no se como usarlo aquí. Gracias por las respuestas a todo aquel que pueda y desee ayudarme.

    2.    Keiller dijo

      Para usar una VPN en Ubuntu puedes usar OpenVPN en el Network Manager o en la terminal simplemente escribiendo “openvpn –config file ” , donde file es el archivo de configuración que tu proveedor te dará, además te pedirá user y pass para ingresar . Por ejemplo, esta el servicio gratuito de vpnbook. Por supuesto, tienes que primero instalar openvpn si no lo tienes instalado.
      Saludos.

      1.    Ghost dijo

        Gracias Keiller. Desinstale DNSCrypt Proxy como dice el post, bajé openvpn, los archivos de configuración e ingresé por medio de la terminal con el comando config, pongo usuario y contraseña y me da este error : ERROR: Cannot ioctl TUNSETIFF tun1: Operation not permitted (errno=1) ; Exiting due to fatal error
        Sabes que puedo hacer el respecto?

  10.   f dijo

    nameserver 127.0.0.1 Se deja así osea solo se copia y pega

    Es que no me da no puedo ujtilizarlo :C

    1.    Manuel de la Fuente dijo

      Lee bien las instrucciones:

      De lo contrario nos saldrá un mensaje de error diciendo “Oops”, o directamente no cargará ninguna página. Para resolverlo simplemente cambiamos el servidor 127.0.0.1 por 127.0.0.2 (o algún otro) y volvemos a reiniciar Network Manager.

      Probablemente sea mejor que lo hagas por el Método 2.

  11.   pepe dijo

    Esto impide que me hackeen el correo en un wifi publico?

    1.    Manuel de la Fuente dijo

      Te ayuda contra ataques man-in-the-middle, pero la mejor protección para un Wi-Fi público es un VPN.

    2.    Pepe dijo

      Muchas Gracias

    3.    Proxys Privados dijo

      La solución para eso es navegar con proxys privados y anónimos, que no guarden logs de los usuarios y a ser posible de uso dedicado.

      Son baratos y te aseguras la total privacidad de tu navegación.

      Un Saludo.

  12.   Bart dijo

    No funciona con VPN. Una pena.

    1.    Manuel de la Fuente dijo

      No, porque al navegar por un VPN estás usando los DNS del mismo VPN en vez de los configurados localmente.

  13.   geopelia dijo

    Genial muchas gracias me hace sentir un poco mas seguro cuando me conecto a wifis sin claves

  14.   Mario zamora dijo

    Buenas, muchachos segui el tuto al pie de la letra y ahora no tengo Internet como revierto el problema por que de la forma especificada no se quiere de sin tal are el dnsscript proxy. Ayuda por favor estoy sin internet.

    1.    Manuel de la Fuente dijo

      No seguiste el tutorial al pie de la letra. Estás sin conexión porque desinstalaste DNSCrypt sin revertir los cambios primero. Lee nuevamente las instrucciones de desinstalación.

      1.    Mario zamora dijo

        Seguí el tutorial como debía. Use el método 1 con su respectiva desintalacion. Pero cuando se está removiendo se queda en el proceso. ¿ Alguna idea?

        1.    Manuel de la Fuente dijo

          Veamos, repasemos los pasos de desinstalación…

          Quitarle la protección al archivo:

          sudo chattr -i /etc/resolv.conf

          Restaurar los antiguos DNS:

          sudo rm /etc/resolv.conf
          sudo ln -s /run/resolvconf/resolv.conf /etc/resolv.conf

          Reiniciar Network Manager:

          sudo service network-manager restart

          Desinstalar DNSCrypt Proxy:

          sudo apt-get autoremove --purge dnscrypt-proxy

          ¿En cuál comando es en el que se queda trabado?

  15.   Mario Zamora dijo

    En este :
    sudo apt-get autoremove —purge dnscrypt-proxy

    Comienza la desintalacion y luego nunca termina.

    1.    Manuel de la Fuente dijo

      Está sobrando un guión en el comando, purge debería ir solo con dos guiones al principio, así:

      sudo apt-get autoremove --purge dnscrypt-proxy

      Prueba si eso resuelve tu problema. De cualquier forma, si seguiste los pasos anteriores deberías tener conexión sin importar si ese último comando funciona o no.

  16.   Roberto Gonsalez dijo

    Muy buen post me ayudo bastante. Excelente!!!

  17.   Mykeura dijo

    Interesante tutorial Manuel.
    Lo he puesto en practica y mi conexión va de maravilla.
    Gracias.

  18.   linuxlibre2014 dijo

    Hola amigos de desdelinux quisiera hacer una pregunta cuando trato de hacer el poseso de instalación después de agregar los repositorios y actualizar coloco sudo apt-get install dnscrypt-proxy pero me dice:
    E: No se ha podido localizar el paquete dnscrypt-proxy tengo ubuntu 14.04 no se por que pasa esto ayuda

    1.    Francisco dijo

      A mí me ocurre lo mismo 🙁
      Ubuntu 14.04

  19.   keos dijo

    Lo pude hacer fácilmente en Arch/Antergos pero en Debian/Jessie desde el primer paso falla, no se si sera que no es compatible con Debian:

    keos@kaos:~$ su
    Contraseña:
    root@kaos:/home/keos# add-apt-repository ppa:shnatsel/dnscrypt
    bash: add-apt-repository: no se encontró la orden
    root@kaos:/home/keos#

  20.   mausmann dijo

    Hola! Muy bueno el sitio y quería preguntarles:
    sigo todas las instrucciones pero no logro que use el DNS que cambiamos en resolv.conf (127.0.0.1 o 127.0.0.2). Por lo que me quedo sin acceso a Internet. Uso DEBIAN y WICD en lugar de Network Manager.
    Con “find / -name dnscrypt-proxy” veo que el programa está instalado donde se supone que debe estar (/usr/local/sbin y /usr/local/share/).
    Con “ps aux | grep dnscrypt-proxy” me tira la siguiente salida:
    root 6346 0.0 0.0 2808 672 ? SLs 09:45 0:00 dnscrypt-proxy –local-address=127.0.0.1 –daemonize –resolver-address=176.10.127.43:443 –provider-name=2.dnscrypt-cert.ns3.ca.dns.opennic.glue –provider-key=1C19:7933:1BE8:23CC:CF08:9A79:0693:7E5C:3410:2A56:AC7F:6270:E046:25B2:EDDB:04E3

    No entiendo en qué estoy fallando. He leído el –help pero no le encuentro la vuelta. Desde ya, muchas gracias.

  21.   Raúl dijo

    Perfecto en Lubuntu 16.04, muchas gracias por compartir el conocimiento.

  22.   jhon dijo

    hola alguien aqui que me pueda ayudar con un vpn o proxy para hacer encuestas pagadas de estados unidos porfavor

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

*

*

  1. Responsable de los datos: Miguel Ángel Gatón
  2. Finalidad de los datos: Controlar el SPAM, gestión de comentarios.
  3. Legitimación: Tu consentimiento
  4. Comunicación de los datos: No se comunicarán los datos a terceros salvo por obligación legal.
  5. Almacenamiento de los datos: Base de datos alojada en Occentus Networks (UE)
  6. Derechos: En cualquier momento puedes limitar, recuperar y borrar tu información.