Búsqueda de sitios web

Instalar y configurar Dnsmasq en Ubuntu 22.04|20.04|18.04


Esta guía le ayudará a instalar y configurar el servidor DNS Dnsmasq en Ubuntu 22.04|20.04|18.04 LTS. Para aquellos nuevos en Dnsmasq, Dnsmasq es un servidor DNS simple, liviano, fácil de usar y administrar con soporte para secuencias de comandos Lua, IPv6, DNSSEC, arranque de red para PXE, BOOTP y TFTP. Ocupa poco espacio, por lo que es adecuado para enrutadores y cortafuegos con recursos limitados.

Dnsmasq ha sido diseñado para proporcionar DNS y, opcionalmente, servicios DHCP/TFTP para entornos de red pequeños y medianos. Cuando recibe consultas de DNS, las responderá desde su caché local o las reenviará a un servidor DNS recursivo diferente, que puede ser BIND o cualquier otro servidor DNS.

Una configuración para el servidor DNS autoritativo PowerDNS está disponible en nuestro blog:

  • Instale PowerDNS y PowerDNS-Admin en Ubuntu

Subsistemas Dnsmasq

Dnsmasq tiene tres subsistemas principales, a saber:

  • Subsistema DNS: proporciona almacenamiento en caché de registros A, AAAA, CNAME y PTR, así como registros DNSKEY y DS.
  • Subsistema DHCP: proporciona soporte para DHCPv4, DHCPv6, BOTP y PXE. Puede utilizar concesiones de DHCP estáticas y dinámicas, un servidor TFTP de solo lectura integrado para admitir el arranque en red.
  • Subsistema de publicidad del enrutador: proporciona una configuración automática básica para el host IPv6

Paso 1: instalar Dnsmasq

Ubuntu 18.04+ viene con systemd-resolve que debes desactivar ya que se vincula al puerto 53 , lo que entrará en conflicto con el puerto Dnsmasq.

Ejecute los siguientes comandos para deshabilitar el servicio resuelto:

sudo systemctl disable systemd-resolved
sudo systemctl stop systemd-resolved

Además, elimine el archivo resolv.conf con enlace simbólico.

$ ls -lh /etc/resolv.conf 
lrwxrwxrwx 1 root root 39 Aug  8 15:52 /etc/resolv.conf -> ../run/systemd/resolve/stub-resolv.conf

$ sudo unlink /etc/resolv.conf

Luego cree un nuevo archivo resolv.conf .

echo nameserver 8.8.8.8 | sudo tee /etc/resolv.conf

Dnsmasq está disponible en el repositorio de apt; se puede realizar una instalación sencilla ejecutando:

sudo apt update
sudo apt install dnsmasq

El archivo de configuración principal de Dnsmasq es /etc/dnsmasq.conf. Configure Dnsmasq modificando este archivo.

sudo vim /etc/dnsmasq.conf

Aquí hay una configuración mínima.

# Listen on this specific port instead of the standard DNS port
# (53). Setting this to zero completely disables DNS function,
# leaving only DHCP and/or TFTP.
port=53
# Never forward plain names (without a dot or domain part)
domain-needed
# Never forward addresses in the non-routed address spaces.
bogus-priv
# By  default,  dnsmasq  will  send queries to any of the upstream
# servers it knows about and tries to favour servers to are  known
# to  be  up.  Uncommenting this forces dnsmasq to try each query
# with  each  server  strictly  in  the  order  they   appear   in
# /etc/resolv.conf
strict-order
# Set this (and domain: see below) if you want to have a domain
# automatically added to simple names in a hosts-file.
expand-hosts
# Set the domain for dnsmasq. this is optional, but if it is set, it
# does the following things.
# 1) Allows DHCP hosts to have fully qualified domain names, as long
#     as the domain part matches this setting.
# 2) Sets the "domain" DHCP option thereby potentially setting the
#    domain of all systems configured by DHCP
# 3) Provides the domain part for "expand-hosts"
#domain=thekelleys.org.uk
domain=example.com

# Set Listen address
listen-address=127.0.0.1 # Set to Server IP for network responses

Si desea habilitar la validación y el almacenamiento en caché de DNSSEC, descomente

$ sudo dnssec

Realice cualquier otro cambio que considere relevante y reinicie dnsmasq cuando haya terminado:

sudo systemctl restart dnsmasq

Paso 2: Agregar registros DNS a Dnsmasq

Agregue registros DNS en el archivo./etc/hosts. Dnsmasq responderá a las consultas de los clientes que utilicen estos registros.

$ sudo vim /etc/hosts
10.1.3.4 server1.mypridomain.com
10.1.4.4 erp.mypridomain.com 
192.168.10.2 checkout.mypridomain.com 
192.168.4.3 hello.world

Debe reiniciar el servicio dnsmasq después de agregar los registros.

sudo systemctl restart dnsmasq

Paso 3: Probar la funcionalidad DNS de Dnsmasq

Para verificar que Dnsmasq responde a los registros que agregamos, apunte el servidor DNS de sus servidores al servidor Dnsmasq. Edite /etc/network/interfaces para una configuración persistente, o el archivo /etc/netplan/ en servidores Ubuntu.

Como se trata de una prueba, modificaré el archivo de tiempo de ejecución /etc/resolv.conf

$ sudo vim /etc/resolv.conf
nameserver 127.0.0.1
nameserver 8.8.8.8

Prueba usando excavación:

$ dig A erp.mypridomain.com

; <<>> DiG 9.11.3-1ubuntu1.1-Ubuntu <<>> A erp.mypridomain.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 43392
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;erp.mypridomain.com.		IN	A

;; ANSWER SECTION:
erp.mypridomain.com.	0	IN	A	10.1.4.4

;; Query time: 0 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Tue Aug 21 10:35:41 UTC 2018
;; MSG SIZE  rcvd: 64

Aquí hay otro ejemplo:

$ dig checkout.mypridomain.com A +noall +answer

; <<>> DiG 9.11.3-1ubuntu1.1-Ubuntu <<>> checkout.mypridomain.com A +noall +answer
;; global options: +cmd
checkout.mypridomain.com. 0 IN A 192.168.10.2

Puede confirmar que estamos recibiendo respuestas según lo configurado.

Paso 4: configurar Dnsmasq como servidor DHCP (opcional)

Puede utilizar Dnsmasq para asignar direcciones IP a clientes, ya sean estáticas o dinámicas.

Edite el archivo /etc/dnsmasq.conf y proporcione opciones de DHCP. Es necesario proporcionar:

  • Dirección IP de puerta de enlace predeterminada
  • Dirección IP del servidor DNS (probablemente Dnsmasq o un servidor DNS diferente)
  • Máscara de subred de red
  • Rango de direcciones DHCP
  • servidor NTP

Vea el ejemplo a continuación

dhcp-range=192.168.3.25,192.168.3.50,24h
dhcp-option=option:router,192.168.3.1
dhcp-option=option:ntp-server,192.168.3.5
dhcp-option=option:dns-server,192.168.3.5
dhcp-option=option:netmask,255.255.255.0

Reinicie dnsmasq y configure los clientes para obtener una dirección IP de este servidor.

sudo systemctl restart dnsmasq

Conclusión

Dnsmasq es un caché DNS fácil de configurar que puede acelerar la navegación por Internet y la resolución de registros de dominio en sus sistemas. También podrás disfrutar de su subsistema DHCP que es fácil de configurar y usar para una red pequeña.

Artículos similares:

  • Instale PowerDNS y PowerDNS-Admin en Ubuntu
  • Cómo configurar ISPConfig DNS solo en CentOS