En el post de hoy vamos a ver como configurar un servidor DNS con DNSMASQ. El servicio DNSMASQ es un servicio que tiene varias opción de uso, las más comunes son DNS, DHCP o TFTP, aunque tiene alguna funcionalidad más. En este caso vamos instalar y configurar un sistema DNS con DNSMASQ.

DNSMASQ funciona como un servidor DNS forward y DNS caché, esto significa que si un ordenador de la red le hace alguna pregunta al servidor DNS y este no sabe la respuesta, DNSMASQ reenvía la petición a los servidores configurados en el servidor y luego guarda la respuesta en su caché para que cuando se le vuelva a hacer la misma pregunta, DNSMASQ ya sabe la respuesta.

Para definir nombres de dominio dentro de DNSMASQ tenemos 3 formas de hacerlo:

– Usar los ficheros de configuración propios de DNSMASQ
– Escribir los registros en el fichero /etc/hosts, aquí se pueden poner registro tipo A / AAAA / PTR
– Si vamos a usar DHCP y en este se reservan nombres de dominio y su ip, estos registros se asignaran dinámicamente al servicio DNS.

Para instalar DNSMASQ en Debian o derivadas solo hay que escribir el siguiente comando:

apt install dnsmasq

Para acceder al fichero de configuración tenemos que ir a /etc/dnsmasq.conf, en el hay un montón de opciones de configuración pero la mas importante es la interfaz, aquí le dices a DNSMASQ en que interfaz de red debe de ponerse a la escucha para resolver consultas de DNS.

interface=eth0

En el ejemplo de arriba la interfaz de red es eth0, pero según que sistema operativo usemos la interfaces de red podrían tener otro nombre. Después de indicar la interfaz de red hay que reiniciar el servicio para que se hagan efectivos los cambios y ya podemos recibir consultas DNS de los equipos de la red.

Nombres de dominio en el fichero /etc/hosts

Dentro del archivo /etc/hosts se pueden definir nombres de dominio tanto para resolución directa (A / AAAA) como resolución inversa (PTR), el formato sería el siguiente:

172.22.200.203 www.example.org
172.22.200.204 www.example.com

Nombres de dominio en el fichero /etc/dnsmasq.conf

Para definir nombres de dominio en el fichero /etc/dnsmasq.conf  se usa el parámetro host-record de esta forma:

host-record=foo.example.org,172.22.200.205
host-record=foo.example.com,172.22.200.206

Para definir un registro CNAME se usa el parámetro cname:

cname=ftp.example.org,www.example.org

Para definir el servidor de correo de un dominio se usa el parémetro mx-hosts de la siguiente manera:

host-record=mail.example.org,172.22.200.207
mx-host=example.org,mail.example.org,10

Zonas DNS en DNSMASQ

Para definir zonas primero hay que crear un fichero de configuración común para todas las zonas creadas, este fichero esta en /etc/dnsmasq.d/dns.conf, y dentro de este van los siguientes parametros:

log-queries
no-hosts


log-queries: este parámetro le dice a dnsmasq que guarde en un fichero de log todas las consultas recibidas
no-host: este parámetro indica que no consulte el fichero /etc/hosts

Para definir la zona del dominio example.com, hay que crear el fichero /etc/dnsmasq.d/example.conf, y quedaría asi:

auth-zone=example.com
auth-soa=1,root.example.com,604800,86400,2419200
auth-server=ns.example.com

#Registros A/AAAA/PTR
host-record=ns.example.com,10.0.0.1
host-record=mail.example.com,10.0.0.2

# Registro MX
mx-host=example.com,mail.example.com,10

# CNAMEs

cname=smtp.example.com,mail

cname=imap.example.com,mail

Los parámetros definido el fichero de configuración de la zona son los siguientes:

auth-zone: nombre de dominio que estamos creando.
auth-soa: el registro SOA
auth-server: registros NS de la zona.

DNSMASQ es un servidor perfecto para definir registros en una red local, pero también para ser servidor DNS de un domino en internet.

¿Necesitas ayuda con tu servidor DNS? En NGI somos especialistas en sistemas y ciberseguridad, ¡no dudes en contactar con nosotros!