Dnsmasq

From Gentoo Wiki
Jump to: navigation, search
This page is a translated version of the page Dnsmasq and the translation is 100% complete.

Other languages:
English • ‎español • ‎italiano • ‎日本語 • ‎한국어 • ‎русский • ‎中文(中国大陆)‎


Resources

dnsmasq es es un servidor DHCP/DNS sencillo que puede ser utilizado en una red local de hasta unos 1.000 clientes. Sus características fundamentales son una fácil configuración y un bajo consumo de recursos del sistema. También tiene soporte para IPv6.

Instalación

Ajustes USE

Realizar una selección adecuada de los ajustes USE:

USE flags for net-dns/dnsmasq Small forwarding DNS server

auth-dns Add support for acting as an authorative DNS server. local
conntrack Add support for Linux conntrack connection marking. local
dbus Enable dbus support for anything that needs it (gpsd, gnomemeeting, etc) global
dhcp Enable support for acting as a DHCP server. local
dhcp-tools Install extra command line tools for manually managing DHCP leases. local
dnssec Enable support DNSSEC validation and caching. local
id Whether report *.bind CHAOS info to clients, otherwise forward such requests upstream instead local
idn Enable support for Internationalized Domain Names global
inotify Enable inotify filesystem monitoring support global
ipv6 Add support for IP version 6 global
libidn2 Enable support for Internationalized Domain Names, via net-dns/libidn2 rather than net-dns/libidn local
lua Enable Lua scripting support global
nls Add Native Language Support (using gettext - GNU locale utilities) global
script Enable support for calling scripts when leases change. local
selinux !!internal use only!! Security Enhanced Linux support, this must be set by the selinux profile or breakage will occur global
static !!do not set this during bootstrap!! Causes binaries to be statically linked instead of dynamically global
tftp Enables built in TFTP server for netbooting. local

Emerge

A continuación instalar el paquete net-dns/dnsmasq:

root #emerge --ask net-dns/dnsmasq

Configuración

Hay varios recursos que se pueden modificar para cambiar el comportamiento de dnsmasq. Estos incluyen:

  • las opciones de línea de órdenes pasadas al fichero /etc/conf.d/dnsmasq
  • el fichero de configuración principal (/etc/dnsmasq.conf)

Servicio

OpenRC

Añadir dnsmasq al nivel de ejecución por defecto si se necesita arrancar automáticamente:

root #rc-update add dnsmasq default

Para arrancar el servicio ahora:

root #service dnsmasq start

Configuración del servicio

En el fichero /etc/conf.d/dnsmasq, se pueden configurar las opciones de línea de órdenes que se transmitirán al demonio dnsmasq en la fase de arranque.

ARCHIVO /etc/conf.d/dnsmasqEjemplo de configuración del servicio dnsmasq
DNSMASQ_OPTS="--user=dnsmasq --group=dnsmasq -H /srv/virt/gentoo/hosts --max-cache-ttl=10"

Fichero de configuración principal

La configuración principal de dnsmasq se realiza a través de su fichero de configuración, /etc/dnsmasq.conf. El fichero utiliza una sintaxis clave[=valor] y el paquete de instalación proporciona uno que está bien documentado y es recomendable leerlo. Dentro del fichero, o a través de las opciones de la línea de órdenes, se pueden obtener referencias a recursos adicionales (como un fichero hosts DHCP).

A continuación se muestra una configuración de ejemplo:

ARCHIVO /etc/dnsmasq.conf
# Escuchar solo a esta interfaz
interface=eth1
  
# Asignar nombres basados ​​en direcciones mac
dhcp-host=00:1e:68:c2:ff:ee,endor,192.168.0.54,24h
  
# Cualquier otra solicitud DHCP obtiene una IP en este rango
dhcp-range=eth1,192.168.0.100,192.168.0.120,12h
  
# Activar el servidor TFTP y definir el directorio raíz de los ficheros disponibles a través de TFTP
enable-tftp
tftp-root=/var/lib/tftpboot
dhcp-boot=/pxelinux.0

Después de editar el fichero de configuración, el servicio tiene que ser reiniciado —la recarga es compatible, pero para otros recursos—.

root #/etc/init.d/dnsmasq restart

Fichero hosts

La aplicación dnsmasq utiliza el fichero /etc/hosts como una de sus fuentes para proporcionar servicios de DNS, a menos que se pase el argumento de línea de órdenes -h (--no-hosts).

Si el fichero /etc/hosts se actualiza, el servicio dnsmasq necesita recibir una señal SIGHUP para recargar los ajustes. Este resultado también se puede logar utilizando los script init con la orden reload:

root #/etc/init.d/dnsmasq reload

Este comportamiento puede ser desactivado a través del parámetro no-hosts pasado al fichero de configuración.

Ficheros hosts adicionales

Es posible hacer referencia a un fichero de hosts (adicional) para su uso como fuente de consultas DNS. Para ello, agregue la opción de línea de órdenes -H /ruta/al/fichero hosts (--addn-hosts=/ruta/al/fichero hosts). También es posible indicar un directorio; en ese caso, todos los ficheros dentro de ese directorio serán tratados como ficheros hosts adicionales.

Al igual que en el fichero de hosts estándar, una señal SIGHUP recarga el fichero.

Este comportamiento también se puede configurar a través del parámetro addn-hosts en el fichero de configuración.

Servidores de nombres upstream

Por defecto, dnsmasq utiliza los servidores de nombres especificados en /etc/resolv.conf como sus servidores DNS upstream.

Se puede utilizar un fichero diferencie mediante la opción de línea de órdenes -r (--resolv-file).

Este comportamiento también se puede definir con el parámetro resolv-file en el fichero de configuración.

Características

Dnsmasq admite DNS, TFTP, PXE, router advertisements y servicios DHCP. Como tal, es una herramienta de gestión de red versátil para redes pequeñas y medianas.

Servicios DNS

Con el fin de proporcionar (solamente) servicios de DNS, primero identifique el servidor DNS upstream a utilizar. Si este es el mismo servidor de nombres que se especifica en /etc/resolv.conf entonces no hay pasos adicionales que realizar. De lo contrario, señale a dnsmasq el fichero resolv.conf apropiado con la opción -r (-resolv-file ). La sintaxis de este último es la misma que la utilizada por el fichero /etc/resolv.conf, aunque dnsmasq considera solamente las definiciones de los servidores de nombres.

Por ejemplo:

root #echo "nameserver 8.8.8.8" >> /etc/dnsmasq.conf.resolv

A continuación, indique a dnsmasq este fichero en el fichero de configuración:

ARCHIVO /etc/dnsmasq.confConfigurar un fichero resolv personalizado
resolv-file=/etc/dnsmasq.conf.resolv

Para comprobar que el servicio está funcionando (después de recargar el fichero de configuración tan pronto se haya cambiado), utilice la orden dig (proporcionada por el paquete net-dns/bind-tools), solicitando el servidor DNS (en el ejemplo siguiente se ejecuta sobre localhost) para resolver una dirección local o remota:

user $dig @localhost +short www.gentoo.org
www-bytemark-v4v6.gentoo.org.
89.16.167.134

DNSSEC

Dnsmasq puede validar los datos DNSSEC mientras pasa los datos a través de él. Esto se puede lograr mediante la adición de estas líneas al fichero de configuración:

ARCHIVO /etc/dnsmasq.confActivar DNSSEC
# DNSSEC setup
dnssec
trust-anchor=.,19036,8,2,49AAC11D7B6F6446702E54A1607371607A1A41855200FD2CE1CDDE32F24E8FB5
dnssec-check-unsigned

La referencia de confianza se puede encontrar en el sitio iana.org. Después de este cambio, dnsmasq devolverá SERVFAIL y no habrá datos de DNS si falla la validación. Si la validación tiene éxito establece el flag ad. En el caso de que el dominio no sea compatible con dnsmasq DNSSEC se comportará como si nada.

Servicios DHCP

Para activar los servicios DHCP en dnsmasq, utilice el ajuste de configuración dhcp-range.

Por ejemplo, para activar la configuración de direcciones IPv6 a través de la anunciación de enrutadores (RA) con tiempo de concesión ilimitado, y la configuración de direcciones IPv4 también con tiempo de concesión ilimitado:

ARCHIVO /etc/dnsmasq.confActivar asignaciones IPv6 y IPv4
dhcp-range=2001:db8:81:e2::,ra-only,infinite
dhcp-range=192.168.100.100,192.168.100.149,infinite

Es posible utilizar definiciones estáticas para hosts conocidos, ya sea a través del fichero de configuración principal (ajustando dhcp-host=) o por medio de un fichero separado. Si se utiliza un fichero separado, indique a dnsmasq el mismo a través de la opción -dhcp-hostsfile. La ventaja de este último enfoque es que basta enviar una señal SIGHUP (o recargar el servicio) para volver a leer las entradas, mientras que cada modificación del fichero de configuración principal requiere reiniciar el servicio completo.

Para obtener más información acerca de la sintaxis del parámetro dhcp-host consulte la página del manual o el fichero de configuración, ya que su sintaxis es muy extensa.

Utilización

Esta sección ilustra distintos escenarios (mantenimiento y tareas operativas) para el servicio de dnsmasq.

Restablecer leases

Los clientes que hayan efectuado una actualización de la interfaz de red que se traduzca en una dirección MAC diferente, podrían no obtener la dirección IP deseada inmediatamente. Esto se debe a que el servicio dnsmasq ha proporcionado esta dirección IP a la antigua dirección MAC, y esperará hasta que la asignación (leases) de esta dirección haya expirado antes de reasignarle otra.

El servicio dnsmasq almacena sus asignaciones en /var/lib/misc/dnsmasq.leases. Si la asignación tiene que ser eliminada rápidamente, cierre el servicio dnsmasq, retire la asignación del fichero dnsmasq.leases y reinicie el servicio de nuevo.

root #/etc/init.d/dnsmasq stop
root #nano -w /var/lib/misc/dnsmasq.leases
root #/etc/init.d/dnsmasq start

Recargar ajustes de configuración secundarios

Junto al fichero dnsmasq.conf, el servicio dnsmasq puede usar definiciones externas para los siguientes servicios:

  • entradas de configuración del host DHCP (a través de la opción --dhcp-hostsfile)
  • opciones de DHCP (a través de la opción --dhcp-optsfile)

Cuando se modifican estos ficheros, una señal SIGHUP recarga dnsmasq con los ajustes de estos ficheros de configuración.

Nota
El fichero resolv.conf es consultado, por defecto, por dnsmasq; los cambios en este fichero son aplicados automáticamente, a menos que se haya establecido la opción de línea de órdenes -n (--no-poll) o se haya utilizado el parámetro de configuración no-poll.