Introducción:
¿Qué es dnscrypt-proxy?
– DNSCrypt encrypta y autentifica el tráfico DNS entre el usuario y la resolución DNS, previene la suplantación local de las consultas DNS, asegurando que las respuestas DNS son enviadas por el servidor de eleccion. (Wiki)
¿Qué es dnsmasq?
– dnsmasq proporciona servicios como caché DNS y como servidor DHCP. Como un servidor de nombres de dominio (DNS), puede almacenar en caché las consultas DNS para mejorar las velocidades de conexión a los sitios visitados anteriormente, y, como un servidor DHCP, dnsmasq puede ser utilizado para proporcionar direcciones IP internas y rutas a los equipos de una LAN. Uno, o ambos de estos servicios, se pueden implementar. dnsmasq es considerado ligero y fácil de configurar; está diseñado para su uso en un ordenador personal o para su uso en una red con menos de 50 ordenadores. También viene con un servidor PXE. (Wiki)
¿Qué utilicé?:
– Para editar los archivos de configuración usé nano.
– En todo momento lo hice con mi cuenta de root, pero si tienen configurado sudo, pueden utilizarlo tranquilamente.
– Para chequear la caché con el comando dig, éste se encuentra en bind-tools
dentro de los repositorios oficiales, pacman -S bind-tools 🙂
Instalación:
- Como root o usando sudo en nuestro terminal o tty instalamos los paquetes dnscrypt-proxy y dnsmasq asi:
- El mensaje de advertencia es porque ya los tengo instalados, ustedes sólo tienen que confirmar presionando Enter:
Configuración:
1 – Vamos a habilitar dnscrypt-proxy (recuerden como root o usando sudo):
2 – Ahora editamos el archivo /etc/resolv.conf y en nameserver borramos lo que está y colocamos 127.0.0.1 (si quieren pueden hacer un backup del archivo) y debería quedar así:
- Teniendo en cuenta que NetworkManager escribe el archivo resolv.conf, lo que vamos hacer es protegerlo contra escritura con la siguiente orden:
3 – Ahora lo que vamos hacer es buscar un server que esté lo más cerca de nuestra ubicación, sinó pueden usar el que viene por defecto que es dnscrypt.eu-nl, la lista la podemos abrir con localc se encuentra aquí: /usr/share/dnscrypt-proxy/dnscrypt-resolvers.csv de ésta manera: - Si queremos modificar el server que resuelve el dns por defecto podemos editar asi:
- Al final del archivo en la sección [Service] modificamos lo que está seleccionado en gris y colocamos el server que ya seleccionamos en el listado:
4 – Por defecto dnscrypt-proxy utiliza el puerto 53, ya que dnsmasq también, asi que lo que vamos a hacer es cambiarlo utilizando nuevamente con:
systemctl edit dnscrypt-proxy.service –full y en la sección [Socket] lo dejamos como a continuación:
5 – Ahora configuramos dnsmasq, vamos a editar el archivo /etc/dnsmasq.conf y agregamos éstas tres líneas al final:
no-resolv
server=127.0.0.1#40
listen-address=127.0.0.1
Guardamos los cambios y cerramos.
6 – Ahora hacemos lo siguiente:
– Reiniciamos dnscrypt-proxy:
systemctl restart dnscrypt-proxy
– Activamos dnsmasq:
systemctl enable dnsmasq
– Ejecutamos dnsmasq:
systemctl start dnsmasq
– Reiniciamos nuestra conexión de internet:
systemctl restart NetworkManager
7 – Bueno ahora probamos si realmente queda funcionando con un ping por ejemplo a google.com.ar:
8 – Nos fijamos si funciona el caché de dns con el comando dig:
9 – Listo dnscrypt-proxy y dnsmasq configurados y funcionando correctamente.!
Nota: Quiero aclarar luego de buscar en varios lados no me funcionaba de ninguna manera que mostraban en la wiki de arch, la versión en español está mal traducida (será cuestión que alguien traduzca bién o lo haré yo en algún momento) asi que usé la versión en inglés. Asi que básicamente me basé en dicha wiki, todos los créditos para ellos. En éste caso son los pasos que utilicé y me funcionó A MI.
Cualquier consulta o inconvenientes que tengan me avisan y lo vamos charlando hasta que les quede funcionando!
Abrazo de gol! 😀
no noto ninguna diferencia con dnsmasq , a lo mejor con más usuarios el caché sirva, al menos con solo mi equipo no vi cambios en la velocidad.
los tiempos de dig con y sin dnsmasq se mantienen de igual manera, quizás alguien sepa de otro método y lo comparta.
Saludos
como se ve en el screen, se nota MUCHA diferencia, supongo que dependera del ancho de banda también… 🙂
Adjunto imagen :
imgur .com/ 9RQ7yhF.png
Cuanto tiempo quedan en la cache las direcciones dns con dnsmasq? Recuerdo haberlo probado tiempo atras y a los pocos minutos, 10 ó 5, dnsmasq lo olvida todo
la verdad no me puse a ver éso… buen punto. Se consultará, tal vez algún erudito sepa y nos responda 🙂
Hola cuando le doy como root «systemctl start dnsmasq» me sale error, al dar el comando «systemctl status dnsmasq.service» esto es lo que sale:
● dnsmasq.service – A lightweight DHCP and caching DNS server
Loaded: loaded (/usr/lib/systemd/system/dnsmasq.service; enabled; vendor preset: disabled)
Active: failed (Result: exit-code) since lun 2016-03-07 11:41:41 ART; 18s ago
Docs: man:dnsmasq(8)
Process: 7747 ExecStart=/usr/bin/dnsmasq -k –enable-dbus –user=dnsmasq –pid-file (code=exited, status=2)
Process: 7742 ExecStartPre=/usr/bin/dnsmasq –test (code=exited, status=0/SUCCESS)
Main PID: 7747 (code=exited, status=2)
mar 07 11:41:41 Wisdom systemd[1]: Starting A lightweight DHCP and caching DNS server…
mar 07 11:41:41 Wisdom dnsmasq[7742]: dnsmasq: syntax check OK.
mar 07 11:41:41 Wisdom dnsmasq[7747]: dnsmasq: failed to create listening socket for port 53: Address already in use
mar 07 11:41:41 Wisdom systemd[1]: dnsmasq.service: Main process exited, code=exited, status=2/INVALIDARGUMENT
mar 07 11:41:41 Wisdom systemd[1]: Failed to start A lightweight DHCP and caching DNS server.
mar 07 11:41:41 Wisdom systemd[1]: dnsmasq.service: Unit entered failed state.
mar 07 11:41:41 Wisdom systemd[1]: dnsmasq.service: Failed with result ‘exit-code’.
¿Que debo hacer? Gracias.
seguí los pasos al pié de la letra, revisá el tutorial original en mi blog. Dejé un video también.
@ice ice, comparando éste posteo y tu video realizado sobre el mismo puedo observar que hay un error en el paso número 4 escrito aquí. Y el error es que el archivo que se debe editar no es «systemctl edit dnscrypt-proxy.service –full», sino que se debe editar «systemctl edit dnscrypt-proxy.socket –full». (Notar que en vez de .service se debe escribir .socket).
Es por eso que @wisse wisse obtiene ese mensaje de error al querer iniciar el servicio dnsmasq (ya que a mí también me ocurrió lo mismo).
Saludos!