Instalación y configuración de DNSMasq.

Autor: Joel Barrios Dueñas
Correo electrónico: darkshram en gmail punto com
Sitio de Red: https://www.alcancelibre.org/

Licencia de este documento: Creative Commons Reconocimiento-NoComercial-CompartirIgual 2.1

© 1999-2024 Joel Barrios Dueñas. Usted es libre de copiar, distribuir y comunicar públicamente la obra y hacer obras derivadas bajo las condiciones siguientes: a) Debe reconocer y citar al autor original. b) No puede utilizar esta obra para fines comerciales (incluyendo su publicación, a través de cualquier medio, por entidades con fines de lucro). c) Si altera o transforma esta obra o genera una obra derivada, sólo puede distribuir la obra generada bajo una licencia idéntica a ésta. Al reutilizar o distribuir la obra, tiene que dejar bien claro los términos de la licencia de esta obra. Alguna de estas condiciones puede no aplicarse si se obtiene el permiso del titular de los derechos de autor. Los derechos derivados de usos legítimos u otras limitaciones no se ven afectados por lo anterior. Licencia completa en castellano. La información contenida en este documento y los derivados de éste se proporcionan tal cual son y los autores no asumirán responsabilidad alguna si el usuario o lector hace mal uso de éstos.

Introducción.

Si se requiere un servidor de DNS fácil de administrar, ligero y rápido, la mejor alternativa a BIND es DNSMasq.

Acerca de DNSMasq.

DNSMasq es un servidor DNS ligero y fácil de configurar. Está diseñado para proporcionar servicio de DNS y ―opcionalmente― servidor DHCP a una red de área local. Puede proporcionar los nombres de máquinas locales que están ausentes en el servidor DNS global. El servidor DHCP se integra con el servidor DNS y permite que las máquinas con direcciones asignadas por DHCP aparezcan en el DNS con nombres configurados en cada anfitrión o en un archivo de configuración central. DNSMasq admite concesiones de DHCP estáticas y dinámicas y BOOTP para el arranque en red de máquinas sin disco.

Procedimientos.

Puede instalar y configurar DNSMasq en sólo unos minutos. Sin modificar archivo alguno podrá disponer de un servidor DNS completamente funcional para el anfitrión local.

Equipamiento lógico necesario.

Ejecute lo siguiente para instalar DNSMasq junto con el conjunto de herramientas estándar para hacer validaciones:

dnf -y install dnsmasq bind-utils  

Ejecute lo siguiente para habilitar e iniciar el servicio:

systemctl enable --now dnsmasq

Ejecute lo siguiente para validar el funcionamiento:

host www.google.com 127.0.0.1

La salida debe ser similar a la siguiente:

Using domain server:
Name: 127.0.0.1
Address: 127.0.0.1#53
Aliases: 

www.google.com has address 192.178.52.196
www.google.com has IPv6 address 2607:f8b0:4012:81f::2004

Configuración de DNSMasq.

El archivo de configuración de DNSMasq es /etc/dnsmasq.conf, pero evite modificarlo. En su lugar puede crear archivos con cualquier nombre con extensión *.conf dentro del directorio /etc/dnsmasq.d.

Defina que interfaz de red y dirección IP utilizará para el funcionamiento de DNSMasq.

ip addr list

Genere el nuevo archivo /etc/dnsmasq.d/misopciones.conf:

vim /etc/dnsmasq.d/misopciones.conf

Considerando que en el siguiente ejemplo se utilizarán la interfaz de red con el nombre enp0s3 y la dirección IP 192.168.100.121, añada el siguiente contenido:

interface=lo,enp0s3
listen-address=127.0.0.1,192.168.100.121,::1
port=53
resolv-file=/etc/resolv.dnsmasq.conf

Guarde los cambios y salga del editor de texto.

DNSMasq puede hacer uso automáticamente de todos los servidores DNS que estén listados en el archivo /etc/resolv.conf para realizar el re-envío de consultas, pero la capacidad máxima de éste es de hasta tres servidores DNS, además que este archivo será modificado en cualquier momento por NetworkManager. En su lugar, genere un nuevo archivo denominado /etc/resolv.dnsmasq.conf donde podrá añadir un número ilimitado de servidores DNS externos:

vim /etc/resolv.dnsmasq.conf

Añada el siguiente contenido, asumiendo que 192.168.100.1 es la dirección IP correspondiente al modem o dispositivo de enrutamiento de la red de área local y añada las direcciones IP de los servidores DNS externos que prefiera:

nameserver 192.168.100.1
nameserver 8.8.8.8
nameserver 8.8.4.4
nameserver 1.1.1.1

Guarde los cambios y salga del editor de texto.

Reinicie el servicio dnamasq para aplicar los cambios:

systemctl restart dnsmasq

Todos los servicios de DNS utilizan los puertos 53/TCP y 53/UDP. Haga los cambios correspondientes en el muro cortafuegos del sistema:

firewall-cmd --add-service=dns --permanent
firewall-cmd --reload

Ejecute nuevamente lo siguiente para validar el funcionamiento:

host www.google.com 127.0.0.1

La salida debe ser similar a la siguiente:

Using domain server:
Name: 127.0.0.1
Address: 127.0.0.1#53
Aliases: 

www.google.com has address 192.178.52.196
www.google.com has IPv6 address 2607:f8b0:4012:81f::2004

Asumiendo que la interfaz de red principal del sistema corresponde a enp3s0 , Configure sistema para que utilice a DNSMasq como único servidor DNS.

vim /etc/NetworkManager/system-connections/enp0s3.nmconnection

Cambie el valor de dns por 127.0.0.1

[ipv4]
address1=192.168.100.121/24,192.168.100.1
address2=192.168.100.122/24
dns=127.0.0.1;
dns-search=alcancelibre.org;
may-fail=false
method=manual

Guarde los cambios y salga del editor de texto.

El cambio aplicará tras reiniciar el sistema o detener e iniciar nuevamente la interfaz de red con nmcli:

nmcli connection down enp3s0
nmcli connection up enp3s0

Pero será más rápido editar el archivo /etc/resolv.conf:

vim /etc/resolv.conf

Defina como único servidor DNS a 127.0.0.1

# Generated by NetworkManager
search alcancelibre.org
nameserver 127.0.0.1

Guarde los cambios y salga del editor de texto.

Ejecute nuevamente lo siguiente para validar el funcionamiento:

host www.google.com

La salida debe ser similar a la siguiente:

www.google.com has address 192.178.52.196
www.google.com has IPv6 address 2607:f8b0:4012:81f::2004

Edite el archivo /etc/hosts:

vim /etc/hosts

Añada uno o más anfitriones con las direcciones IP que necesite. Ejemplos:

127.0.0.1        localhost.localdomain localhost
::1              localhost6.localdomain6 localhost6
192.168.100.6    blog.midominio.net
192.168.100.6    prueba1.midominio.net
192.168.100.6    dev1.midominio.net

Guarde los cambios y salga del editor de texto.

Reinicie el servicio dnsmasq:

systemctl restart dnsmaq

Valide que ahora estos anfitriones resuelven el servidor DNS ejecutando lo siguiente:

host blog.midominio.net

La salida debe ser similar a la siguiente:

blog.midominio.net has address 192.168.100.6