He usado dnsmasq como dns cache de las consultas de opendns o de los DNS de Google.
Los artículos anteriores que hablan de dnsmasq son:
- Usar dnsmasq como servidor DNS cache y local (enlace roto)
- Mejorando la velocidad de consultas de DNS con dnsmasq y probar pruebas de diagnostico (enlace roto)
Y ahora se usará DNSCrypt como lo muestra los siguientes artículos:
- Cifrar el tráfico de DNS en Linux con DNSCrypt y OpenDNS
- Cifrar el tráfico de DNS en Debian 9 Stretch (actualización 2017) (enlace roto)
Para iniciar se instalará dnsmasq:
#apt-get install dnsmasq
DNSCrypt escucha en la IP 127.0.2.1 en el puerto 53, para el caso de dnsmasq, este escuchará desde la IP 127.0.0.1 y el puerto 53 para evitar conflictos entre ambas aplicaciones.
Se edita el archivo /etc/dnsmasq.conf :
#vim /etc/dnsmasq.conf #Realizar consultas de dominios completos solamente. domain-needed #Evitar busquedas internas de dominios locales bogus-priv #Habilita dnssec en dnsmasq proxy-dnssec #No tomar en cuenta el contenido del archivo /etc/resolv.conf no-resolv #Se escucha el servidor de nombres de dnscrypt server=127.0.2.1 #Evitar ataques de dns rebinding stop-dns-rebind #evitar que servidores resuelvan consultas localhost rebind-localhost-ok #Se reciben consultas a dnsmasq en 127.0.0.1 listen-address=127.0.0.1 #No se habilita las interfaces para dhcp no-dhcp-interface=wlp1s0,enp2s0,lo #Sólo se realizan busquedas de direcciones que está resolviendo. bind-interfaces #No tomar en cuenta los hosts del archivo /etc/hosts no-hosts #Se define un cache de 500k cache-size=500
Se salva el archivo y se reinicia dnsmasq:
#systemctl status dnsmasq.service ● dnsmasq.service - dnsmasq - A lightweight DHCP and caching DNS server Loaded: loaded (/lib/systemd/system/dnsmasq.service; enabled; vendor preset: enabled) Active: active (running) since Sun 2017-06-04 18:10:08 -04; 2 days ago Process: 851 ExecStartPost=/etc/init.d/dnsmasq systemd-start-resolvconf (code=exited, status=0/SUCCESS) Process: 814 ExecStart=/etc/init.d/dnsmasq systemd-exec (code=exited, status=0/SUCCESS) Process: 793 ExecStartPre=/usr/sbin/dnsmasq --test (code=exited, status=0/SUCCESS) Main PID: 842 (dnsmasq) Tasks: 1 (limit: 4915) Memory: 844.0K CPU: 7.042s CGroup: /system.slice/dnsmasq.service └─842 /usr/sbin/dnsmasq -x /run/dnsmasq/dnsmasq.pid -u dnsmasq -r /run/dnsmasq/resolv.conf -7 /etc/dnsmasq.d,.d jun 04 18:10:08 grievous systemd[1]: Starting dnsmasq - A lightweight DHCP and caching DNS server... jun 04 18:10:08 grievous dnsmasq[793]: dnsmasq: revisión de sintaxis OK. jun 04 18:10:08 grievous dnsmasq[842]: iniciado, versión 2.76 tamaño de caché 500 jun 04 18:10:08 grievous dnsmasq[842]: opciones de compilación: IPv6 GNU-getopt DBus i18n IDN DHCP DHCPv6 no-Lua TFTP conn jun 04 18:10:08 grievous dnsmasq[842]: advertencia: ignorando opción resolv-file porque no-resolv está fijado jun 04 18:10:08 grievous dnsmasq[842]: usando nombre de servidor 127.0.2.1#53 jun 04 18:10:08 grievous dnsmasq[842]: el caché fue liberado jun 04 18:10:08 grievous dnsmasq[851]: Too few arguments. jun 04 18:10:08 grievous systemd[1]: Started dnsmasq - A lightweight DHCP and caching DNS server.
Por lo que se ve dnsmasq trabajando sin problemas.
Se revisa el archivo /etc/resolv.conf y se tiene lo siguiente:
cat /etc/resolv.conf # Generated by resolvconf #nameserver 127.0.2.1 nameserver 127.0.0.1
Se están usando tanto dnscrypt como dnsmasq para resolver las consultas de DNS.
Al consultar un dominio por medio de dig se tiene lo siguiente:
# dig www.google.com ; <<>> DiG 9.10.3-P4-Debian <<>> www.google.com ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 41085 ;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1 ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 4096 ;; QUESTION SECTION: ;www.google.com. IN A ;; ANSWER SECTION: www.google.com. 190 IN A 172.217.22.164 ;; Query time: 300 msec ;; SERVER: 127.0.0.1#53(127.0.0.1) ;; WHEN: Tue Jun 06 20:08:50 -04 2017 ;; MSG SIZE rcvd: 59 # dig www.google.com ; <<>> DiG 9.10.3-P4-Debian <<>> www.google.com ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 49000 ;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1 ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 4096 ;; QUESTION SECTION: ;www.google.com. IN A ;; ANSWER SECTION: www.google.com. 189 IN A 172.217.22.164 ;; Query time: 0 msec ;; SERVER: 127.0.0.1#53(127.0.0.1) ;; WHEN: Tue Jun 06 20:08:51 -04 2017 ;; MSG SIZE rcvd: 59
Al realizar la segunda consulta se nota que el tiempo de respuesta pasa de 300mseg a 0mseg.
¡Haz tu donativo! Si te gustó el artículo puedes realizar un donativo con Bitcoin (BTC) usando la billetera digital de tu preferencia a la siguiente dirección: 17MtNybhdkA9GV3UNS6BTwPcuhjXoPrSzV
O Escaneando el código QR desde la billetera:
