Este artículo demuestra cómo implementar una caché DNS local con dnsmasq
en Linux.
Este mecanismo permite implementar una forma de resolver un dominio específico con un resolver en particular. Por ejemplo, si deseamos que *.linuxito.com sea resuelto por el servidor de nombres 192.168.56.2
y el resto sea resuelto por un resolver genérico (e.g. Google).
Para comenzar, instalar dnsmasq
:
root@vaio:~# apt-get install dnsmasq
Configurar el sistema para que resuelva primero con nuestro resolver local:
root@vaio:~# nano /etc/resolv.conf
Cambiar:
nameserver w.x.y.z
Por:
nameserver 127.0.0.1
Volver el archivo inmutable para que ningún otro servicio lo pueda modificar:
root@vaio:~# chattr +i /etc/resolv.conf
Editar la configuración de dnsmasq
:
root@vaio:~# nano /etc/dnsmasq.conf
Agregar al final del archivo:
# Resolver específico para *.linuxito.com server=/linuxito.com/192.168.56.2 # Google para el resto server=8.8.8.8 server=8.8.4.4
Reiniciar el servicio:
root@vaio:~# service dnsmasq restart [ ok ] Restarting DNS forwarder and DHCP server: dnsmasq.
Verificar que esté escuchando en el puerto 53 UDP:
root@vaio:~# netstat -ulpn | grep dnsmasq udp 0 0 0.0.0.0:53 0.0.0.0:* 2606/dnsmasq udp6 0 0 :::53 :::* 2606/dnsmasq
Consultas de prueba:
root@vaio:/home/emi# dig +nocmd +nocomments www.linuxito.com @localhost ;www.linuxito.com. IN A www.linuxito.com. 135 IN A 192.168.56.142 ;; Query time: 0 msec ;; SERVER: ::1#53(::1) ;; WHEN: Tue Dec 01 09:03:32 -03 2020 ;; MSG SIZE rcvd: 73
root@vaio:/home/emi# dig +nocmd +nocomments kernel.org @localhost ;kernel.org. IN A kernel.org. 379 IN A 198.145.29.83 ;; Query time: 0 msec ;; SERVER: ::1#53(::1) ;; WHEN: Tue Dec 01 09:03:40 -03 2020 ;; MSG SIZE rcvd: 55