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

Compartí este artículo