Utilice dnsmasq para proporcionar servicios DNS y DHCP

Muchos entusiastas de la tecnología consideran importante la capacidad de controlar la resolución de su nombre de host. La configuración de servidores y servicios generalmente requiere algún tipo de dirección fija, y a veces también requiere formas especiales de resolución, como definir servidores Kerberos o LDAP, servidores de correo, etc. Todo esto se puede lograr con dnsmasq.

dnsmasq es un programa ligero y sencillo que permite emitir direcciones DHCP en su red y registrar la dirección IP del nombre de host & en DNS. Esta configuración también permite la resolución externa, por lo que toda su red podrá hablar consigo misma y encontrar sitios externos también.

Este artículo cubre la instalación y configuración de dnsmasq en una máquina virtual o en una máquina física pequeña, como una Raspberry Pi, para que pueda proporcionar estos servicios en su red doméstica o laboratorio. Si tiene una configuración existente y solo necesita ajustar la configuración de su estación de trabajo local, lea el artículo anterior que cubre la configuración del complemento dnsmasq en NetworkManager.

Instalar dnsmasq

Primero, instale el paquete dnsmasq:

sudo dnf install dnsmasq

A continuación, habilite e inicie el servicio dnsmasq:

sudo systemctl enable --now dnsmasq

Configure dnsmasq

Primero, haga una copia de seguridad de dnsmasq.archivo de configuración:

sudo cp /etc/dnsmasq.conf /etc/dnsmasq.conf.orig

A continuación, edite el archivo y realice cambios en lo siguiente para reflejar su red. En este ejemplo, mydomain.org es el nombre de dominio, 192.168.1.10 es la dirección IP del servidor dnsmasq y 192.168.1.1 es la puerta de enlace predeterminada.

sudo vi /etc/dnsmasq.conf

Insértese el contenido siguiente:

domain-neededbogus-privno-resolvserver=8.8.8.8server=8.8.4.4local=/mydomain.org/listen-address=::1,127.0.0.1,192.168.1.10expand-hostsdomain=mydomain.orgdhcp-range=192.168.1.100,192.168.1.200,24hdhcp-option=option:router,192.168.1.1dhcp-authoritativedhcp-leasefile=/var/lib/dnsmasq/dnsmasq.leases

Pruebe la configuración para comprobar si hay errores tipográficos y de sintaxis:

$ sudo dnsmasq --testdnsmasq: syntax check OK.

Ahora edite el archivo hosts, que puede contener hosts asignados de forma estática y dinámica. Las direcciones estáticas deben estar fuera del rango DHCP especificado anteriormente. Los hosts que usan DHCP pero que necesitan una dirección fija deben ingresarse aquí con una dirección dentro del rango DHCP.

sudo vi /etc/hosts

Las dos primeras líneas ya deberían estar allí. Agregue las líneas restantes para configurar el enrutador, el servidor dnsmasq y dos servidores adicionales.

127.0.0.1 localhost localhost.localdomain::1 localhost localhost.localdomain192.168.1.1 router192.168.1.10 dnsmasq192.168.1.20 server1192.168.1.30 server2

Reinicie el servicio dnsmasq:

sudo systemctl restart dnsmasq

A continuación, agregue los servicios al firewall para permitir que los clientes se conecten:

sudo firewall-cmd --add-service={dns,dhcp}
sudo firewall-cmd --runtime-to-permanent

Resolución de nombre de prueba

Primero, instale bind-utils para obtener los paquetes nslookup y dig. Estos le permiten realizar búsquedas tanto hacia adelante como hacia atrás. Podría usar ping si prefiere no instalar paquetes adicionales. pero vale la pena instalar estas herramientas por la funcionalidad adicional de solución de problemas que pueden proporcionar.

sudo dnf install bind-utils

Ahora pruebe la resolución. Primero, pruebe la resolución de reenvío (nombre de host a dirección IP) :

$ nslookup server1Server: 127.0.0.1Address: 127.0.0.1#53Name: server1.mydomain.orgAddress: 192.168.1.20

A continuación, pruebe la resolución inversa (dirección IP a nombre de host) :

$ nslookup 192.168.1.2020.1.168.192.in-addr.arpa name = server1.mydomain.org.

Finalmente, pruebe la resolución de nombres de host fuera de su red:

$ nslookup fedoramagazine.orgServer: 127.0.0.1Address: 127.0.0.1#53Non-authoritative answer:Name: fedoramagazine.orgAddress: 35.196.109.67

Probar arrendamientos DHCP

Para probar arrendamientos DHCP, debe arrancar una máquina que use DHCP para obtener una dirección IP. Cualquier variante de Fedora lo hará por defecto. Una vez que haya arrancado el equipo cliente, compruebe que tiene una dirección y que corresponde al archivo de arrendamiento de dnsmasq.

De la máquina que ejecuta dnsmasq:

$ sudo cat /var/lib/dnsmasq/dnsmasq.leases1598023942 52:54:00:8e:d5:db 192.168.1.100 server3 01:52:54:00:8e:d5:db1598019169 52:54:00:9c:5a:bb 192.168.1.101 server4 01:52:54:00:9c:5a:bb

Funcionalidad de ampliación

Puede asignar a los hosts una dirección IP fija a través de DHCP agregándola a su archivo de hosts con la dirección que desee (dentro de su rango DHCP). Haga esto agregando en el dnsmasq.archivo de configuración la siguiente línea, que asigna la IP listada a cualquier host que tenga ese nombre:

dhcp-host=myhost

Alternativamente, puede especificar una dirección MAC a la que siempre se le debe dar una dirección IP fija:

dhcp-host=11:22:33:44:55:66,192.168.1.123

Puede especificar un servidor de arranque PXE si necesita automatizar compilaciones de máquinas

tftp-root=/tftpboot
dhcp-boot=/tftpboot/pxelinux.0,boothost,192.168.1.240

Esto debería apuntar a la URL real de su servidor TFTP.

Si necesita especificar registros SRV o TXT, por ejemplo para LDAP, Kerberos o similares, puede agregar los siguientes:

srv-host=_ldap._tcp.mydomain.org,ldap-server.mydomain.org,389
srv-host=_kerberos._udp.mydomain.org,krb-server.mydomain.org,88
srv-host=_kerberos._tcp.mydomain.org,krb-server.mydomain.org,88
srv-host=_kerberos-master._udp.mydomain.org,krb-server.mydomain.org,88
srv-host=_kerberos-adm._tcp.mydomain.org,krb-server.mydomain.org,749
srv-host=_kpasswd._udp.mydomain.org,krb-server.mydomain.org,464
txt-record=_kerberos.mydomain.org,KRB-SERVER.MYDOMAIN.ORG



+