GNU/Linux >> Tutoriales Linux >  >> Ubuntu

Cómo configurar el solucionador de DNS local usando Dnsmasq en Ubuntu 20.04

Dnsmasq significa "abreviatura de enmascaramiento de DNS" y es un reenviador de DNS simple, liviano y fácil de usar que se utiliza para una red pequeña. Se puede configurar como caché DNS y servidor DHCP y es compatible con los protocolos IPv4 e IPv6. Cuando recibe consultas de DNS, las responderá desde su caché o las reenviará a otro servidor de DNS.

Dnsmasq se compone de tres subsistemas:

  • Subsistema DNS: Se utiliza para almacenar en caché diferentes tipos de registros, incluidos A, AAAA, CNAME y PTR.
  • Subsistema DHCP: Es compatible con DHCPv4, DHCPv6, BOOTP y PXE
  • Subsistema de anuncios de enrutador: Proporciona configuración automática básica para hosts IPv6. Se puede utilizar de forma independiente o junto con DHCPv6.

En este tutorial, le mostraremos cómo configurar un servidor DNS local con Dnsmasq en el servidor Ubuntu 20.04.

Requisitos

  • Un servidor con Ubuntu 20.04.
  • Se configura una contraseña de root en el servidor.

Cómo empezar

Primero, se recomienda actualizar los paquetes de su sistema a la última versión. Puede actualizar todos los paquetes ejecutando el siguiente comando:

apt-get update -y

Después de actualizar todos los paquetes, deberá deshabilitar el servicio resuelto por Systemd en su sistema. El servicio resuelto por Systemd se utiliza para la resolución de nombres de red para aplicaciones locales.

Puede desactivarlo ejecutando el siguiente comando:

systemctl disable --now systemd-resolved

Una vez que el servicio esté deshabilitado, deberá eliminar el archivo resolv.conf predeterminado y crear uno nuevo con los detalles de su servidor DNS personalizado.

Puede eliminar el archivo resolv.conf predeterminado con el siguiente comando:

rm -rf /etc/resolv.conf

A continuación, agregue el servidor DNS de Google al archivo resolv.conf con el siguiente comando:

echo "nameserver 8.8.8.8" > /etc/resolv.conf

Una vez que haya terminado, puede continuar con el siguiente paso.

Instalar Dnsmasq

De forma predeterminada, Dnsmasq está disponible en el repositorio predeterminado de Ubuntu 20.04. Puede instalarlo simplemente ejecutando el siguiente comando:

apt-get install dnsmasq dnsutils ldnsutils -y

Una vez finalizada la instalación, los servicios de Dnsmasq se iniciarán automáticamente. Puede comprobar el estado de Dnsmasq con el siguiente comando:

systemctl status dnsmasq

Deberías obtener el siguiente resultado:

dnsmasq.service - dnsmasq - A lightweight DHCP and caching DNS server
     Loaded: loaded (/lib/systemd/system/dnsmasq.service; enabled; vendor preset: enabled)
     Active: active (running) since Tue 2020-11-02 11:02:01 UTC; 15s ago
   Main PID: 17726 (dnsmasq)
      Tasks: 1 (limit: 2282)
     Memory: 868.0K
     CGroup: /system.slice/dnsmasq.service
             ??17726 /usr/sbin/dnsmasq -x /run/dnsmasq/dnsmasq.pid -u dnsmasq -7 /etc/dnsmasq.d,.dpkg-dist,.dpkg-old,.dpkg-new --local-service --trust-anchor=.,20326,8,2,e>

Nov 02 11:02:12 ubuntu2004 systemd[1]: Starting dnsmasq - A lightweight DHCP and caching DNS server...
Nov 02 11:02:12 ubuntu2004 dnsmasq[17705]: dnsmasq: syntax check OK.
Nov 02 11:02:12 ubuntu2004 dnsmasq[17726]: started, version 2.80 cachesize 150
Nov 02 11:02:12 ubuntu2004 dnsmasq[17726]: DNS service limited to local subnets
Nov 02 11:02:12 ubuntu2004 dnsmasq[17726]: compile time options: IPv6 GNU-getopt DBus i18n IDN DHCP DHCPv6 no-Lua TFTP conntrack ipset auth DNSSEC loop-detect inotify dumpfi>
Nov 02 11:02:12 ubuntu2004 dnsmasq[17726]: reading /etc/resolv.conf
Nov 02 11:02:12 ubuntu2004 dnsmasq[17726]: using nameserver 8.8.8.8#53
Nov 02 11:02:12 ubuntu2004 dnsmasq[17726]: read /etc/hosts - 7 addresses
Nov 02 11:02:12 ubuntu2004 systemd[1]: Started dnsmasq - A lightweight DHCP and caching DNS server.

Una vez que haya terminado, puede continuar con el siguiente paso.

Configurar Dnsmasq

A continuación, deberá configurar Dnsmasq como un servidor DNS local. Puede hacerlo editando el archivo de configuración principal de Dnsmasq:

nano /etc/dnsmasq.conf

Cambie las siguientes líneas:

port=53
domain-needed
bogus-priv
listen-address=127.0.0.1,your-server-ip
expand-hosts
domain=dns-example.com
cache-size=1000

Guarde y cierre el archivo cuando haya terminado.

A continuación, deberá agregar la dirección IP de su servidor como el servidor de nombres principal en su archivo resolv.conf. Puede agregarlo con el siguiente comando:

nano /etc/resolv.conf

Agregue la siguiente línea arriba de la línea "nameserver 8.8.8.8":

nameserver your-server-ip

Guarde y cierre el archivo cuando haya terminado. A continuación, verifique el servidor en busca de cualquier error de configuración con el siguiente comando:

dnsmasq --test

Si todo está bien, debería obtener el siguiente resultado:

dnsmasq: syntax check OK.

Finalmente, reinicie el servicio Dnsmasq para aplicar los cambios:

systemctl restart dnsmasq

En este punto, Dnsmasq se inicia y escucha en el puerto 53. Puede verificarlo con el siguiente comando:

ss -alnp | grep -i :53

Deberías obtener el siguiente resultado:

udp     UNCONN   0        0                                             0.0.0.0:53                                                0.0.0.0:*                      users:(("dnsmasq",pid=41051,fd=4))                                             
udp     UNCONN   0        0                                                [::]:53                                                   [::]:*                      users:(("dnsmasq",pid=41051,fd=6))                                             
tcp     LISTEN   0        32                                            0.0.0.0:53                                                0.0.0.0:*                      users:(("dnsmasq",pid=41051,fd=5))                                             
tcp     LISTEN   0        32                                               [::]:53                                                   [::]:*                      users:(("dnsmasq",pid=41051,fd=7))                                             

Agregar registros DNS al servidor Dnsmasq

A continuación, deberá editar su archivo /etc/hosts y agregar la entrada del servidor DNS local.

nano /etc/hosts

Agregue la siguiente línea:

your-server-ip host1.dns-example.com

Guarde y cierre el archivo cuando haya terminado.

Verificar la resolución del servidor Dnsmasq

En este punto, Dnsmasq está instalado y configurado. No, es hora de verificar la resolución de DNS.

Puede usar el comando de excavación para verificar la resolución de DNS como se muestra a continuación:

dig host1.dns-example.com +short

Si todo está bien, debería ver la IP de su servidor en el siguiente resultado:

your-server-ip

También puede verificar la resolución de DNS externo con el siguiente comando:

dig howtoforge.com +short

Deberías obtener el siguiente resultado:

172.67.68.93
104.26.3.165
104.26.2.165

Configurar el cliente remoto para usar el servidor DNS Dnsmasq

A continuación, deberá configurar un cliente remoto para usar su servidor DNS Dnsmasq como el servidor DNS predeterminado.

Primero, instale las herramientas de DNS con el siguiente comando:

apt-get install dnsutils ldnsutils -y

Una vez instalado, deberá editar el archivo /etc/resolv.conf y la entrada de su servidor DNS Dnsmasq.

nano /etc/resolv.conf

Agregue la siguiente línea al principio del archivo:

nameserver your-server-ip

Guarde y cierre el archivo cuando haya terminado.

A continuación, verifique la resolución de DNS local con el siguiente comando:

dig host1.dns-example.com

Debería ver el siguiente resultado:

; DiG 9.9.5-3ubuntu0.4-Ubuntu host1.dns-example.com
;; global options: +cmd
;; Got answer:
;; HEADER opcode: QUERY, status: NOERROR, id: 26401
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;host1.dns-example.com.		IN	A

;; ANSWER SECTION:
host1.dns-example.com.	0	IN	A	45.58.32.165

;; Query time: 301 msec
;; SERVER: 45.58.32.165#53(45.58.32.165)
;; WHEN: Mon Nov 02 16:49:37 IST 2020
;; MSG SIZE  rcvd: 66

A continuación, deberá verificar su servidor DNS para el almacenamiento en caché. Puede verificarlo usando la utilidad de perforación.

Primero, ejecute el siguiente comando:

drill google.com | grep "Query time"

Debería ver el siguiente resultado:

;; Query time: 290 msec

A continuación, ejecute el comando nuevamente para verificar si el almacenamiento en caché funciona o no:

drill google.com | grep "Query time"

Debería ver que el tiempo de consulta ahora está disminuyendo a 4 mseg:

;; Query time: 4 msec

Conclusión

¡Felicidades! Ha instalado y configurado correctamente Dnsmasq como servidor DNS local y Ubuntu 20.04. Espero que ahora pueda implementarlo fácilmente en su red local para la resolución de nombres.


Ubuntu
  1. 4 pasos para configurar el repositorio local en Ubuntu usando APT-mirror

  2. Cómo configurar HAProxy en Ubuntu 16.04

  3. Cómo configurar el cortafuegos UFW en Ubuntu 18.04

  4. Cómo instalar el sistema de resolución de DNS Unbound en Ubuntu 22.04

  5. Cómo configurar el solucionador de DNS no vinculado en Ubuntu 20.04

Cómo configurar el servidor de registro central usando Rsyslog en Ubuntu 20.04

Cómo configurar el servidor DNS en Ubuntu 18.04 / Ubuntu 16.04

Cómo configurar OpenVPN en Ubuntu Server

Cómo configurar una VPN en Ubuntu

Configurar un solucionador de DNS local en Ubuntu 18.04, 16.04 con BIND9

Configurar el solucionador de DNS local en Ubuntu 20.04 con BIND9