Cómo configurar un servidor DNS / DHCP usando dnsmasq en CentOS / RHEL 8/7


Un servidor de Protocolo de configuración dinámica de host (DHCP) asigna dinámicamente direcciones IP y otros parámetros de configuración de red a cada dispositivo en una red. Un reenviador de DNS en una LAN reenvía las consultas de DNS para nombres de dominio no locales a servidores DNS ascendentes (fuera de esa red). Un servidor de almacenamiento en caché de DNS responde a las solicitudes recursivas de los clientes para que la consulta de DNS se pueda resolver más rápido, mejorando así las velocidades de búsqueda de DNS en sitios visitados anteriormente.

dnsmasq es un reenviador de DNS, software de servidor DHCP y subsistema de anuncios de enrutador liviano y fácil de configurar para redes pequeñas. Dnsmasq es compatible con Linux, * BSD, Mac OS X y Android.

Cuenta con un subsistema DNS que proporciona un servidor DNS local para la red, con reenvío de todos los tipos de consultas a servidores DNS recursivos ascendentes y almacenamiento en caché de tipos de registros comunes. El subsistema DHCP admite DHCPv4, DHCPv6, BOOTP, PXE y un servidor TFTP. Y el subsistema de anuncios del enrutador admite la autoconfiguración básica para hosts IPv6.

En este artículo, lo guiaremos a través de las instrucciones sobre cómo instalar y configurar el servidor DNS/DHCP usando dnsmasq en distribuciones CentOS/RHEL 8/7.

Instalación de dnsmasq en CentOS y RHEL Linux

1. El paquete dnsmasq está disponible en los repositorios predeterminados y se puede instalar fácilmente usando el administrador de paquetes YUM como se muestra.

# yum install dnsmasq

2. Una vez completada la instalación del paquete dnsmasq, debe iniciar el servicio dnsmasq por ahora y habilitarlo para que se inicie automáticamente al arrancar el sistema. Además, verifique su estado para asegurarse de que esté funcionando usando los siguientes comandos systemctl.

# systemctl start dnsmasq
# systemctl enable dnsmasq
# systemctl status dnsmasq

Configuración del servidor dnsmasq en CentOS y RHEL Linux

3. El servidor dnsmasq se puede configurar a través del archivo /etc/dnsmasq.conf (que contiene opciones bien comentadas y explicadas), y los archivos de configuración definidos por el usuario también se pueden agregar en el directorio /etc/dnsmasq.d.

El DNS está habilitado de forma predeterminada, por lo que antes de realizar cualquier cambio, asegúrese de crear una copia de seguridad del archivo /etc/dnsmasq.conf.

# cp /etc/dnsmasq.conf /etc/dnsmasq.conf.orig

4. Ahora abra el archivo /etc/dnsmasq.conf usando su editor de texto favorito y realice los siguientes ajustes de configuración sugeridos.

# vi /etc/dnsmasq.conf 

La opción listen-address se usa para establecer la dirección IP, donde dnsmasq escuchará. Para usar su servidor CentOS/RHEL para escuchar las solicitudes de DHCP y DNS en la LAN, configure la opción listen-address en sus direcciones IP de LAN (recuerde incluir 127.0.0.1) como se muestra. Tenga en cuenta que la IP del servidor debe ser estática.

listen-address=::1,127.0.0.1,192.168.56.10

En relación con lo anterior, puede restringir la interfaz en la que escucha dnsmasq usando la opción de interfaz (agregue más líneas para más de una interfaz).

interface=eth0

5. Si desea tener un dominio (que puede configurar como se muestra a continuación) agregado automáticamente a nombres simples en un archivo de hosts, descomente la opción expand-hosts .

expand-hosts

6. Para configurar el dominio para dnsmasq, lo que significa que los clientes DHCP tendrán nombres de dominio completos siempre que el dominio configurado coincida, y configura la opción DHCP de "dominio" para todos los clientes.

domain=tecmint.lan

7. A continuación, defina también el servidor DNS ascendente para dominios no locales utilizando la opción de servidor (en la forma server u003d dns_server_ip) como se muestra.

# Google's nameservers
server=8.8.8.8
server=8.8.4.4

8. Luego puede forzar su dominio local a una (s) dirección (es) IP usando la opción de dirección como se muestra.

address=/tecmint.lan/127.0.0.1 
address=/tecmint.lan/192.168.56.10

9. Guarde el archivo y compruebe la sintaxis del archivo de configuración en busca de errores, como se muestra.

# dnsmasq --test

10. En este paso, debe hacer que todas las consultas se envíen a dnsmasq agregando las direcciones de localhost como los únicos servidores de nombres en el archivo /etc/resolv.conf.

# vi /etc/resolv.conf

11. El archivo /etc/resolv.conf es mantenido por un demonio local, especialmente el NetworkManager, por lo que cualquier cambio realizado por el usuario será sobrescrito. Para evitar esto, protéjalo contra escritura configurando el atributo de archivo inmutable (deshabilitando el acceso de escritura al archivo) usando el comando chattr como se muestra.

# chattr +i /etc/resolv.conf
# lsattr /etc/resolv.conf

12. El Dnsmasq lee todos los hosts DNS y los nombres del archivo/etc/hosts, así que agregue las direcciones IP y los pares de nombres de sus hosts DNS como se muestra.

127.0.0.1       dnsmasq
192.168.56.10 	dnsmasq 
192.168.56.1   	gateway
192.168.56.100	maas-controller 
192.168.56.20 	nagios
192.168.56.25 	webserver1

Importante: Los nombres de DNS locales también se pueden definir importando nombres del subsistema DHCP o configurando una amplia gama de tipos de registros útiles.

13. Para aplicar los cambios anteriores, reinicie el servicio dnsmasq como se muestra.

# systemctl restart dnsmasq

14. Si tiene el servicio firewalld en ejecución, debe abrir los servicios DNS y DHCP en la configuración del firewall, para permitir que las solicitudes de los hosts de su LAN pasen al servidor dnsmasq.

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

15. Para probar si el servidor DNS local o el reenvío funcionan bien, debe utilizar herramientas como dig o nslookup para realizar consultas DNS. Estas herramientas las proporciona el paquete bind-utils, que puede que no venga preinstalado en CentOS/RHEL 8, pero puede instalarlo como se muestra.

# yum install bind-utils

16. Una vez que haya instalado, puede ejecutar una consulta simple en su dominio local como se muestra.

# dig tecmint.lan
OR
# nslookup tecmint.lan

17. También puede intentar consultar el FQDN de uno de los servidores.

# dig webserver1.tecmint.lan
OR
# nslookup webserver1.tecmint.lan

18. Para probar una búsqueda de IP inversa, ejecute un comando similar.

# dig -x 192.168.56.25
OR
# nslookup 192.168.56.25

Habilitar el servidor DHCP mediante dnsmasq

19. Puede habilitar el servidor DHCP descomentando la opción dhcp-range y proporcionando el rango de direcciones disponibles para arrendamiento y opcionalmente un tiempo de arrendamiento, por ejemplo (repetir para más de una red).

dhcp-range=192.168.0.50,192.168.0.150,12h

20. La siguiente opción define dónde el servidor DHCP mantendrá su base de datos de arrendamiento, esto le ayudará a verificar fácilmente las direcciones IP que ha asignado.

dhcp-leasefile=/var/lib/dnsmasq/dnsmasq.leases

21. Para hacer que el servidor DHCP pase al modo autorizado, descomente la opción.

dhcp-authoritative

22. Guarde el archivo y reinicie el servicio dnsmasq para aplicar los cambios recientes.

# systemctl restart dnsmasq

Eso nos lleva al final de esta guía. Para comunicarse con nosotros para cualquier pregunta o pensamiento que desee compartir sobre esta guía, utilice el formulario de comentarios a continuación.