Difference between revisions of "Dnsmasq (Español)"

From ArchWiki
Jump to: navigation, search
m (Update install link)
(Artículo actualizado)
 
Line 1: Line 1:
{{Lowercase_title}}
+
{{Lowercase title}}
 
[[Category:Domain Name System (Español)]]
 
[[Category:Domain Name System (Español)]]
 +
[[Category:DHCP (Español)]]
 
[[en:Dnsmasq]]
 
[[en:Dnsmasq]]
 
[[it:Dnsmasq]]
 
[[it:Dnsmasq]]
Line 7: Line 8:
 
[[ru:Dnsmasq]]
 
[[ru:Dnsmasq]]
 
[[zh-hans:Dnsmasq]]
 
[[zh-hans:Dnsmasq]]
 +
{{Related articles start (Español)}}
 +
{{Related|BIND}}
 +
{{Related|DNSCrypt (Español)}}
 +
{{Related|DNSSEC (Español)}}
 +
{{Related|Pdnsd}}
 +
{{Related|unbound}}
 +
{{Related articles end}}
 +
{{TranslationStatus (Español)|dnsmasq|2018-09-14|540516}}
  
'''dnsmasq''' proporciona servicios como caché DNS y como servidor DHCP. Como un servidor de nombres de dominio (DNS), puede almacenar en caché las consultas DNS para mejorar las velocidades de conexión a los sitios visitados anteriormente, y, como un servidor DHCP, {{pkg|dnsmasq}} puede ser utilizado para proporcionar direcciones IP internas y rutas a los equipos de una LAN. Uno, o ambos de estos servicios, se pueden implementar. dnsmasq es considerado ligero y fácil de configurar; está diseñado para su uso en un ordenador personal o para su uso en una red con menos de 50 ordenadores. También viene con un servidor [[PXE]].
+
[http://www.thekelleys.org.uk/dnsmasq/doc.html dnsmasq] proporciona un [[Wikipedia:Name server|servidor DNS]], un [[Wikipedia:es:Dynamic Host Configuration Protocol|servidor DHCP]] con soporte para [[Wikipedia:es:DHCPv6|DHCPv6]] y [[Wikipedia:es:Preboot Execution Environment|PXE]], y un [[Wikipedia:es:Trivial File Transfer Protocol|servidor TFTP]]. Está diseñado para ser liviano y consumir poco, adecuado para enrutadores y cortafuegos con recursos limitados. dnsmasq también se puede configurar para almacenar en caché las consultas a DNS con el fin mejorar las velocidades de búsqueda de DNS de los sitios visitados con anterioridad.
  
 
== Instalación ==
 
== Instalación ==
  
[[Help:Reading_(Español)#Instalaci.C3.B3n_de_paquetes|Instale]] {{Pkg|dnsmasq}} desde los [[official repositories (Español)|repositorios oficiales]].
+
[[Install|Instale]] el paquete {{Pkg|dnsmasq}}.
  
== Configuración de la caché DNS ==
+
== Iniciar el demonio ==
  
Para configurar dnsmasq como un demonio de almacenamiento de DNS en la caché de un único equipo, edite {{ic|/etc/dnsmasq.conf}} y descomente la directiva {{ic|listen-address}}, añadiendo la dirección IP localhost:
+
[[Start/enable|Inicie/active]] el servicio {{ic|dnsmasq.service}}.
  
listen-address=127.0.0.1
+
Para ver si dnsmasq se inició correctamente, consulte el «''journal''» de systemd:
  
Para utilizar este equipo a fin de que otros equipos conectados a la misma red puedan consultar con su dirección IP LAN:
+
$ journalctl -u dnsmasq.service
  
listen-address=192.168.1.1    # IP de ejemplo
+
La red también deberá reiniciarse para que el cliente DHCP pueda crear un nuevo archivo {{ic|/etc/resolv.conf}}.
  
Se recomienda que utilice una IP LAN estática en este último caso.
+
== Configuración ==
  
=== Archivo de direcciones DNS ===
+
Para configurar dnsmasq, necesita editar {{ic|/etc/dnsmasq.conf}}. El archivo contiene extensos comentarios que explican sus opciones. Para todas las opciones disponibles, consulte {{man|8|dnsmasq}}.
  
{{Merge|resolv.conf|Same topic. También tenga en cuenta que la mayoría de esto se puede hacer de forma nativa en {{ic|/etc/resolvconf.conf}} utilizando las opciones {{ic|name_servers}} y {{ic|name_servers_append}}.}}
+
{{Advertencia|dnsmasq activa de forma predeterminada su servidor DNS. Si no lo necesita, debe desactivarlo explícitamente definiendo el puerto DNS en {{ic|0}}:
  
Después de configurar dnsmasq necesitará configurar el cliente DHCP para anteponer la dirección de localhost a las direcciones DNS presentes en {{ic|/etc/resolv.conf}}. Esto hará que todas las consultas se envíen a dnsmasq antes de tratar de resolverlas a través de un DNS externo. Después de configurar el cliente DHCP necesitará reiniciar la red para que los cambios surtan efecto.
+
{{bc|1=port=0}}
  
==== resolv.conf ====
+
}}
  
La opción principal consiste en una configuración pura de {{ic|resolv.conf}}. Para ello, basta con poner el primer servidor de nombres en {{ic|/etc/resolv.conf}} apuntando a localhost:
+
{{Sugerencia|Para verificar la sintaxis de los archivos de configuración, ejecute:
 +
 
 +
$ dnsmasq --test
  
{{hc|/etc/resolv.conf|
 
nameserver 127.0.0.1
 
# Servidores de nombres externos
 
...
 
 
}}
 
}}
  
Ahora las consultas DNS serán resueltas, en primer lugar, con dnsmasq, acudiendo únicamente a los servidores externos si dnsmasq no puede resolver la consulta. {{Pkg|dhcpcd}}, por desgracia, tiende a sobrescribir, por defecto, el archivo {{ic|/etc/resolv.conf}}, así que, si usa DHCP, es una buena idea proteger {{ic|/etc/resolv.conf }}. Para ello, agregue {{ic|nohook resolv.conf}} en el archivo de configuración de dhcpcd:
+
=== Servidor DNS ===
 +
 
 +
Para configurar dnsmasq como un demonio para el almacenamiento de DNS en un solo equipo, especifique una directiva {{ic|listen-address}}, añadiendo la dirección IP del equipo local:
 +
 
 +
listen-address=::1,127.0.0.1
 +
 
 +
Para utilizar este equipo con el fin de que su dirección IP de LAN escuche otros equipos en la red. Se recomienda utilizar una IP LAN estática en este caso. Por ejemplo:
 +
 
 +
listen-address=::1,127.0.0.1,192.168.1.1
 +
 
 +
Establezca el número de nombres de dominio almacenables en caché con la opción {{ic|1=cache-size=''size''}} (el valor predeterminado es {{ic|150}}):
 +
 
 +
cache-size=1000
 +
 
 +
Para validar con [[DNSSEC]] cargue [[wikipedia:es:Ancla_de_confianza|los anclajes de confianza]] de DNSSEC proporcionados por el paquete {{Pkg|dnsmasq}} y configure la opción {{ic|dnssec}}:
 +
 
 +
conf-file=/usr/share/dnsmasq/trust-anchors.conf
 +
dnssec
 +
dnssec-check-unsigned
 +
 
 +
Consulte {{man|8|dnsmasq}} para ver más opciones que quizás pueda querer usar.
 +
 
 +
==== Archivo de direcciones DNS y de reenvío ====
 +
 
 +
Después de configurar dnsmasq, necesita añadir las direcciones del equipo local como los únicos servidores de nombres en {{ic|/etc/resolv.conf}}. Esto hace que todas las consultas se envíen a dnsmasq.
 +
 
 +
Como dnsmasq no es un servidor DNS recursivo, debe configurar el reenvío a un servidor DNS externo. Esto se puede hacer automáticamente usando [[openresolv]] o especificando manualmente la dirección del servidor DNS en la configuración de dnsmasq.
 +
 
 +
===== openresolv =====
  
{{hc|/etc/dhcpcd.conf|
+
Si su administrador de red admite ''resolvconf'', en lugar de modificar directamente {{ic|/etc/resolv.conf}}, puede utilizar [[openresolv]] para generar archivos de configuración para dnsmasq. [https://roy.marples.name/projects/openresolv/config]
...
 
nohook resolv.conf}}
 
  
También es posible proteger contra escritura su resolv.conf con:
+
Edite {{ic|/etc/resolvconf.conf}} y añada las direcciones de loopback como servidores de nombres, y configure openresolv para escribir la configuración de dnsmasq:
  
# chattr +i /etc/resolv.conf
+
{{hc|/etc/resolvconf.conf|2=
 +
# Usa el servidor de nombre local
 +
name_servers="::1 127.0.0.1"
  
===== Más de tres servidores de nombres =====
+
# Escribe los archivos de configuración extendida y de resolución de dnsmasq
 +
dnsmasq_conf=/etc/dnsmasq-openresolv.conf
 +
dnsmasq_resolv=/etc/dnsmasq-resolv.conf
 +
}}
  
Una limitación de Linux a la hora de manejar las consultas DNS es que solo pueden utilizarse un máximo de tres servidores de nombres presentes en {{ic|resolv.conf}}. Como solución alternativa, puede hacer de localhost el único servidor de nombres en {{ic|resolv.conf}} y, luego, crear un archivo separado, {{ic|resolv-file}}, para sus servidores de nombres externos. Para ello, en primer lugar, cree un nuevo archivo resolv para dnsmasq:
+
Ejecute {{ic|resolvconf -u}} para que se creen los archivos de configuración. Si los archivos no existen {{ic|dnsmasq.service}} no podrá iniciarse.
  
{{hc|/etc/resolv.dnsmasq.conf|
+
Edite el archivo de configuración de dnsmasq para usar la configuración generada de openresolv:
# Servidores de nombres de Google, por ejemplo
+
 
nameserver 8.8.8.8
+
# Lee la configuración generada por openresolv
nameserver 8.8.4.4
+
conf-file=/etc/dnsmasq-openresolv.conf
 +
resolv-file=/etc/dnsmasq-resolv.conf
 +
 
 +
===== Reenvío manual =====
 +
 
 +
Primero debe establecer las direcciones del servidor local como los únicos servidores de nombres en {{ic|/etc/resolv.conf}}:
 +
 
 +
{{hc|/etc/resolv.conf|
 +
nameserver ::1
 +
nameserver 127.0.0.1
 
}}
 
}}
  
Y, luego, edite {{ic|/etc/dnsmasq.conf}}, para utilizar el nuevo archivo resolv:
+
Consulte [[Domain name resolution#Overwriting of /etc/resolv.conf]] sobre cómo proteger el archivo {{ic|/etc/resolv.conf}} de ser modificado.
  
{{hc|/etc/dnsmasq.conf|
+
Las direcciones del servidor DNS ascendente deben especificarse en el archivo de configuración de dnsmasq como {{ic|1=server=''server_address''}}. También añada {{ic|no-resolv}} para que dnsmasq no lea innecesariamente {{ic|/etc/resolv.conf}}, que solo contiene las direcciones del equipo local.
...
+
 
resolv-file=/etc/resolv.dnsmasq.conf
+
{{bc|1=
...
+
no-resolv
 +
 
 +
# Servidores de nombres de Google, por ejemplo
 +
server=8.8.8.8
 +
server=8.8.4.4
 
}}
 
}}
  
==== dhcpcd ====
+
Ahora las consultas DNS se resolverán con dnsmasq, solo se verificará si los servidores externos no pueden responder a la consulta desde su caché.
  
[[dhcpcd]] tiene la capacidad de anteponer o posponer servidores de nombres a los presentes en {{ic|/etc/resolv.conf}} mediante la creación (o edición) del archivo {{ic|/etc/resolv.conf.head}} y {{ic|/etc/resolv.conf.tail}}, respectivamente:
+
==== Añadir un dominio personalizado ====
  
echo "nameserver 127.0.0.1" > /etc/resolv.conf.head
+
Es posible agregar un dominio personalizado a los equipos de nuestra red (local):
  
==== dhclient ====
+
local=/lan/
 +
domain=lan
  
Para {{Pkg|dhclient}}, descomente en {{ic|/etc/dhclient.conf}}:
+
En este ejemplo, es posible enviar un ping a un servidor/dispositivo (por ejemplo, definido en el archivo {{ic|/etc/hosts}} como {{ic|'' hostname ''.Lan}}.
  
prepend domain-name-servers 127.0.0.1;
+
Descomente {{ic|expand-hosts}} para añadir el dominio personalizado a las entradas del equipo:
  
=== NetworkManager ===
+
expand-hosts
  
[[NetworkManager (Español)|NetworkManager]] tiene la capacidad de iniciar ''dnsmasq'' desde su archivo de configuración. Añada la opción {{ic|1=dns=dnsmasq}} a {{ic|NetworkManager.conf}} en la sección {{ic|[main]}}, después de desactivar {{ic|dnsmasq.service}} para que puede ser cargado al comienzo por [[systemd (Español)|systemd]]:
+
Sin esta configuración, deberá añadir el dominio a las entradas de {{ic|/etc/hosts}}.
  
{{hc|/etc/NetworkManager/NetworkManager.conf|<nowiki>
+
==== Prueba ====
[main]
 
plugins=keyfile
 
dns=dnsmasq
 
</nowiki>}}
 
  
Se pueden crear configuraciones personalizadas para ''dnsmasq'', mediante la creación de archivos de configuración en {{ic|/etc/NetworkManager/dnsmasq.d/}}. Por ejemplo, para cambiar el tamaño de la memoria caché DNS (que se almacena en RAM):
+
Para realizar una prueba de velocidad de búsqueda, elija un sitio web que no se haya visitado desde que se inició dnsmasq (''drill'' es parte del paquete {{Pkg|ldns}}):
  
{{hc|/etc/NetworkManager/dnsmasq.d/cache|2=
+
$ drill archlinux.org | grep "Query time"
cache-size=1000
 
}}
 
  
Cuando ''dnsmasq'' sea iniciado por {{ic|NetworkManager}}, el archivo de configuración de este directorio será usado en lugar del archivo de configuración predeterminado.
+
Al ejecutar nuevamente la orden, se usará la IP del DNS almacenada en la caché y se obtendrá un tiempo de búsqueda más rápido si dnsmasq está configurado correctamente:
  
{{Sugerencia|Este método puede permitir que active los ajustes de DNS personalizados en dominios particulares. Por ejemplo: {{ic|server&#61;/example1.com/exemple2.com/xx.xxx.xxx.x}} cambia la primera dirección DNS a {{ic|xx.xxx.xxx.xx}} mientras se navega únicamente por los sitios webs siguientes: {{ic|example1.com, example2.com}}. Este método es preferible a una configuración global de DNS cuando se utilizan servidores de nombres DNS particulares que carecen de rapidez, estabilidad, privacidad y seguridad.}}
+
{{hc|$ drill archlinux.org {{!}} grep "Query time"|
 +
;; Query time: 18 msec
 +
}}
  
==== Otros métodos ====
+
{{hc|$ drill archlinux.org {{!}} grep "Query time"|
 +
;; Query time: 2 msec
 +
}}
  
Otra opción es ajustando la configuración de NetworkManager (normalmente haciendo clic con el botón secundario del ratón en el applet) e introduciendo los valores manualmente. La configuración variará en función del tipo de front-end utilizado; el proceso consistirá, generalmente, en hacer clic con el botón secundario sobre el applet, editar (o crear) un perfil, y, por último, elegir el tipo DHCP como «Automatico (especificar direcciones)». Necesitará conocer las direcciónes DNS a introducir y, normalmente, tendrá este formato: {{ic|127.0.0.1, DNS-server-one, ...}}.
+
Para comprobar si la validación de DNSSEC funciona, consulte [[DNSSEC#Testing]].
  
== Configuración del servidor DHCP ==
+
=== Servidor DHCP ===
  
Por defecto, dnsmasq viene con la funcionalidad DHCP desactivada, si quiere usarla, hay que activarla en ({{ic|/etc/dnsmasq.conf}}). He aquí los ajustes importantes:
+
De manera predeterminada, dnsmasq tiene la funcionalidad DHCP desactivada; si desea usarla, debe activarla. Aquí están las configuraciones importantes:
  
 
{{bc|<nowiki>
 
{{bc|<nowiki>
# Only listen to routers' LAN NIC. Doing so opens up tcp/udp port 53 to
+
# Solo escucha la interfaz LAN de los enrutadores.
# localhost and udp port 67 to world:
+
# Al hacerlo, se abre el puerto 53 para tcp/udp (para localhost)
 +
# y el 67 para udp (para el resto):
 
interface=<LAN-NIC>
 
interface=<LAN-NIC>
  
# dnsmasq will open tcp/udp port 53 and udp port 67 to world to help with
+
# dnsmasq abrirá el puerto 53 tcp/udp y el puerto 67 udp (para el resto)
# dynamic interfaces (assigning dynamic ips). Dnsmasq will discard world
+
# para ayudar con las interfaces dinámicas (asignación de ip dinámicas).
# requests to them, but the paranoid might like to close them and let the
+
# Dnsmasq descartará el resto de solicitudes,
# kernel handle them:
+
# aunque al sistema «paranoid» le gustaría cerrarlos
 +
# y dejar al kernel manejarlas:
 
bind-interfaces
 
bind-interfaces
  
# Dynamic range of IPs to make available to LAN pc
+
# Opcionalmente, establecer un nombre de dominio
 +
domain=example.com
 +
 
 +
# Establecer la puerta de enlace predeterminada
 +
dhcp-option=3,192.168.1.1
 +
 
 +
# Establecer servidores DNS para anunciar
 +
dhcp-option=6,192.168.1.1
 +
 
 +
# Rango dinámico de direcciones IP para poner a disposición
 +
# de la interfaz LAN del equipo y el tiempo de «lease».
 +
# Lo ideal es establecer el tiempo de «lease» en 5 m solo al principio
 +
# para probar que todo funciona bien antes de establecer registros más largos.
 
dhcp-range=192.168.111.50,192.168.111.100,12h
 
dhcp-range=192.168.111.50,192.168.111.100,12h
  
# If you’d like to have dnsmasq assign static IPs, bind the LAN computer's
+
# Si desea que dnsmasq asigne direcciones IP estáticas a algunos clientes,
# NIC MAC address:
+
# vincule las interfaces LAN de los equipos.
 +
# Direcciones MAC:
 
dhcp-host=aa:bb:cc:dd:ee:ff,192.168.111.50
 
dhcp-host=aa:bb:cc:dd:ee:ff,192.168.111.50
 +
dhcp-host=aa:bb:cc:ff:dd:ee,192.168.111.51
 
</nowiki>}}
 
</nowiki>}}
  
== Iniciar el demonio ==
+
Consulte {{man|8|dnsmasq}} para conocer más detalles.
Para cargar dnsmasq en el arranque:
+
 
 +
==== Prueba ====
 +
 
 +
Desde un equipo que está conectado al que tiene dnsmasq, configúrelo para utilizar DHCP para la asignación automática de direcciones IP, luego intente iniciar sesión normalmente en la red.
 +
 
 +
Si inspecciona el archivo {{ic|/var/lib/misc/dnsmasq.leases}} en el servidor, debería poder ver su asignación.
 +
 
 +
=== Servidor TFTP ===
  
{{bc|# systemctl enable dnsmasq}}
+
dnsmasq tiene un servidor [[TFTP]] incorporado.
  
Para iniciar dnsmasq inmediatamente:
+
Para utilizarlo, cree un directorio para la raíz de TFTP (por ejemplo {{ic|/srv/tftp}}) para colocar los archivos transferibles.
  
{{bc|# systemctl start dnsmasq}}
+
Para mayor seguridad, se recomienda utilizar el modo seguro TFTP de dnsmasq. En modo seguro, solo los archivos propiedad del usuario {{ic|dnsmasq}} pasarán a través de TFTP. Necesitará hacer [[chown]] a TFTP root ya  todos los archivos para que pertenezcan al usuario {{ic|dnsmasq}} a fin de que pueda usar esta característica.
  
Para ver si dnsmasq se ha iniciado correctamente, compruebe el «journal» del sistema:  
+
Active TFTP:
  
{{bc|$ journalctl -u dnsmasq}}
+
enable-tftp
 +
tftp-root=/srv/tftp
 +
tftp-secure
  
También será necesario reiniciar la red si se ha creado un archivo {{ic|/etc/resolv.conf}} nuevo para el cliente DHCP.
+
Consulte {{man|8|dnsmasq}} para más opciones.
  
== Test ==
+
=== Servidor PXE ===
=== Caching DNS ===
 
  
Para hacer una prueba de velocidad de búsqueda, elija un sitio web que no haya visitado desde que dnsmasq se inició (''dig'' es parte del paquete {{Pkg|bind-tools}}):
+
PXE requiere servidores DHCP y TFTP, ambas funciones pueden ser provistas por dnsmasq.
  
$ dig archlinux.org | grep "Query time"
+
{{Sugerencia|dnsmasq puede ejecutarse en modo «proxy-DHCP» y agregar opciones de arranque PXE a una red con un servidor DHCP en ejecución:
  
Al ejecutar la orden de nuevo, se utilizará la IP DNS almacenada en caché y el resultado será un tiempo de búsqueda más rápido, si dnsmasq está configurado correctamente:
+
{{bc|1=
 +
interface=''enp0s0''
 +
bind-dynamic
 +
dhcp-range=''192.168.0.1'',proxy
 +
}}
  
{{hc|<nowiki>$ dig archlinux.org | grep "Query time"</nowiki>|
 
;; Query time: 18 msec
 
 
}}
 
}}
  
{{hc|<nowiki>$ dig archlinux.org | grep "Query time"</nowiki>|
+
# configurar [[#Servidor TFTP]] y [[#Servidor DHCP]]
;; Query time: 2 msec
+
# copiar y configurar un gestor de arranque compatible con PXE (por ejemplo, [[PXELINUX]]) sobre la raíz TFTP
 +
# active PXE en {{ic|/etc/dnsmasq.conf}}:
 +
 
 +
{{Nota|
 +
* las rutas de archivos son relativas a la raíz TFTP
 +
* si el archivo tiene un sufijo de {{ic|.0}}, debe excluir el sufijo en las opciones de {{ic|pxe-service}}
 
}}
 
}}
  
=== Servidor DHCP ===
+
Para enviar simplemente un archivo:
 +
 
 +
dhcp-boot=lpxelinux.0
 +
 
 +
Para enviar un archivo dependiendo de la arquitectura del cliente:
 +
 
 +
pxe-service=x86PC, "PXELINUX (BIOS)", "bios/lpxelinux"
 +
pxe-service=X86-64_EFI, "PXELINUX (EFI)", "efi64/syslinux.efi"
 +
 
 +
{{Nota|En caso de que {{ic|pxe-service}} no funcione (especialmente para clientes basados ​​en UEFI), la combinación de {{ic|dhcp-match}} y {{ic|dhcp-boot}} puede hacer que funcione. Consulte [https://tools.ietf.org/html/rfc4578#section-2.1 RFC4578] para obtener más números {{ic|client-arch}} para utilizarlos con el protocolo de arranque dhcp.}}
 +
 
 +
dhcp-match=set:efi-x86_64,option:client-arch,7
 +
dhcp-match=set:efi-x86_64,option:client-arch,9
 +
dhcp-match=set:efi-x86,option:client-arch,6
 +
dhcp-match=set:bios,option:client-arch,0
 +
dhcp-boot=tag:efi-x86_64,"efi64/syslinux.efi"
 +
dhcp-boot=tag:efi-x86,"efi32/syslinux.efi"
 +
dhcp-boot=tag:bios,"bios/lpxelinux.0"
 +
 
 +
Consulte {{man|8|dnsmasq}} para conocer más opciones.
  
Desde un ordenador que esté conectado a otro donde se esté ejecutando dnsmasq, puede configurar aquel para que obtenga la asignación automática de direcciones IP mediante DHCP. A continuación, intente acceder a la red con normalidad.
+
El resto depende del [[bootloader|gestor de arranque]].
  
 
== Consejos y trucos ==
 
== Consejos y trucos ==
  
=== Prevenir que OpenDNS redirija consultas a Google ===
+
=== Impedir que OpenDNS redirija las consultas de Google ===
  
Para evitar que OpenDNS redirija todas las consultas a Google a su propio servidor de búsqueda, añada a {{ic|/etc/dnsmasq.conf}}:
+
Para evitar que OpenDNS redirija todas las consultas de Google a su propio servidor de búsqueda, añada a {{ic|/etc/dnsmasq.conf}}:
 
{{bc|1=server=/www.google.com/<ISP DNS IP>}}
 
{{bc|1=server=/www.google.com/<ISP DNS IP>}}
  
=== Visualizar leases ===
+
=== Anular direcciones ===
{{bc|$ cat /var/lib/misc/dnsmasq.leases}}
 
  
=== Agregar un dominio personalizado ===
+
En algunos casos, como cuando esté operando un portal cautivo, puede ser útil resolver nombres de dominios específicos en un conjunto de direcciones codificadas. Esto se hace con la configuración {{ic|address}}:
Es posible añadir un dominio personalizado a los hosts en su red (local):  
 
local=/home.lan/
 
domain=home.lan
 
  
En este ejemplo, es posible hacer ping a un host/device (por ejemplo, definido en su archivo hots) como {{ic|hostname.home.lan}}.
+
address=/example.com/1.2.3.4
  
Descomente {{ic|expand-hosts}} para agregar el dominio personalizado a las entradas de hosts:  
+
Además, es posible devolver una dirección específica para todos los nombres de dominio que no son contestados desde {{ic|/etc/hosts}} o DHCP utilizando un comodín especial:
  expand-hosts
+
 
Sin este ajuste, tendrá que agregar el dominio a las entradas de /etc/hosts.
+
  address=/#/1.2.3.4
 +
 
 +
=== Tener más de una instancia ===
 +
 
 +
Si queremos que dos o más servidores dnsmasq funcionen por interfaz(ces).
 +
 
 +
==== Estático ====
 +
 
 +
Para hacer esto de forma estática, servidor por interfaz, utilice las opciones {{ic|interfaz}} y {{ic|bind-interface}}. Esto obliga a dnsmasq a iniciarse en segundo lugar.
 +
 
 +
==== Dinámico ====
 +
 
 +
En este caso, podemos excluir por interfaz y enlazar cualquier otra:
 +
 
 +
except-interface=lo
 +
bind-dynamic
 +
 
 +
{{Nota|Esto está predeterminado en [[libvirt]].}}
 +
 
 +
== Véase también==
 +
 
 +
* [http://www.g-loaded.eu/2010/09/18/caching-nameserver-using-dnsmasq/ Caching Nameserver using dnsmasq, and a few other tips and tricks.]

Latest revision as of 15:33, 14 September 2018

Estado de la traducción: este artículo es una versión traducida de dnsmasq. Fecha de la última traducción/revisión: 2018-09-14. Puedes ayudar a actualizar la traducción, si adviertes que la versión inglesa ha cambiado: ver cambios.

dnsmasq proporciona un servidor DNS, un servidor DHCP con soporte para DHCPv6 y PXE, y un servidor TFTP. Está diseñado para ser liviano y consumir poco, adecuado para enrutadores y cortafuegos con recursos limitados. dnsmasq también se puede configurar para almacenar en caché las consultas a DNS con el fin mejorar las velocidades de búsqueda de DNS de los sitios visitados con anterioridad.

Instalación

Instale el paquete dnsmasq.

Iniciar el demonio

Inicie/active el servicio dnsmasq.service.

Para ver si dnsmasq se inició correctamente, consulte el «journal» de systemd:

$ journalctl -u dnsmasq.service

La red también deberá reiniciarse para que el cliente DHCP pueda crear un nuevo archivo /etc/resolv.conf.

Configuración

Para configurar dnsmasq, necesita editar /etc/dnsmasq.conf. El archivo contiene extensos comentarios que explican sus opciones. Para todas las opciones disponibles, consulte dnsmasq(8).

Advertencia: dnsmasq activa de forma predeterminada su servidor DNS. Si no lo necesita, debe desactivarlo explícitamente definiendo el puerto DNS en 0:
port=0
Sugerencia: Para verificar la sintaxis de los archivos de configuración, ejecute:
$ dnsmasq --test

Servidor DNS

Para configurar dnsmasq como un demonio para el almacenamiento de DNS en un solo equipo, especifique una directiva listen-address, añadiendo la dirección IP del equipo local:

listen-address=::1,127.0.0.1

Para utilizar este equipo con el fin de que su dirección IP de LAN escuche otros equipos en la red. Se recomienda utilizar una IP LAN estática en este caso. Por ejemplo:

listen-address=::1,127.0.0.1,192.168.1.1

Establezca el número de nombres de dominio almacenables en caché con la opción cache-size=size (el valor predeterminado es 150):

cache-size=1000

Para validar con DNSSEC cargue los anclajes de confianza de DNSSEC proporcionados por el paquete dnsmasq y configure la opción dnssec:

conf-file=/usr/share/dnsmasq/trust-anchors.conf
dnssec
dnssec-check-unsigned

Consulte dnsmasq(8) para ver más opciones que quizás pueda querer usar.

Archivo de direcciones DNS y de reenvío

Después de configurar dnsmasq, necesita añadir las direcciones del equipo local como los únicos servidores de nombres en /etc/resolv.conf. Esto hace que todas las consultas se envíen a dnsmasq.

Como dnsmasq no es un servidor DNS recursivo, debe configurar el reenvío a un servidor DNS externo. Esto se puede hacer automáticamente usando openresolv o especificando manualmente la dirección del servidor DNS en la configuración de dnsmasq.

openresolv

Si su administrador de red admite resolvconf, en lugar de modificar directamente /etc/resolv.conf, puede utilizar openresolv para generar archivos de configuración para dnsmasq. [1]

Edite /etc/resolvconf.conf y añada las direcciones de loopback como servidores de nombres, y configure openresolv para escribir la configuración de dnsmasq:

/etc/resolvconf.conf
# Usa el servidor de nombre local
name_servers="::1 127.0.0.1"

# Escribe los archivos de configuración extendida y de resolución de dnsmasq
dnsmasq_conf=/etc/dnsmasq-openresolv.conf
dnsmasq_resolv=/etc/dnsmasq-resolv.conf

Ejecute resolvconf -u para que se creen los archivos de configuración. Si los archivos no existen dnsmasq.service no podrá iniciarse.

Edite el archivo de configuración de dnsmasq para usar la configuración generada de openresolv:

# Lee la configuración generada por openresolv
conf-file=/etc/dnsmasq-openresolv.conf
resolv-file=/etc/dnsmasq-resolv.conf
Reenvío manual

Primero debe establecer las direcciones del servidor local como los únicos servidores de nombres en /etc/resolv.conf:

/etc/resolv.conf
nameserver ::1
nameserver 127.0.0.1

Consulte Domain name resolution#Overwriting of /etc/resolv.conf sobre cómo proteger el archivo /etc/resolv.conf de ser modificado.

Las direcciones del servidor DNS ascendente deben especificarse en el archivo de configuración de dnsmasq como server=server_address. También añada no-resolv para que dnsmasq no lea innecesariamente /etc/resolv.conf, que solo contiene las direcciones del equipo local.

no-resolv

# Servidores de nombres de Google, por ejemplo
server=8.8.8.8
server=8.8.4.4

Ahora las consultas DNS se resolverán con dnsmasq, solo se verificará si los servidores externos no pueden responder a la consulta desde su caché.

Añadir un dominio personalizado

Es posible agregar un dominio personalizado a los equipos de nuestra red (local):

local=/lan/
domain=lan

En este ejemplo, es posible enviar un ping a un servidor/dispositivo (por ejemplo, definido en el archivo /etc/hosts como hostname .Lan.

Descomente expand-hosts para añadir el dominio personalizado a las entradas del equipo:

expand-hosts

Sin esta configuración, deberá añadir el dominio a las entradas de /etc/hosts.

Prueba

Para realizar una prueba de velocidad de búsqueda, elija un sitio web que no se haya visitado desde que se inició dnsmasq (drill es parte del paquete ldns):

$ drill archlinux.org | grep "Query time"

Al ejecutar nuevamente la orden, se usará la IP del DNS almacenada en la caché y se obtendrá un tiempo de búsqueda más rápido si dnsmasq está configurado correctamente:

$ drill archlinux.org | grep "Query time"
;; Query time: 18 msec
$ drill archlinux.org | grep "Query time"
;; Query time: 2 msec

Para comprobar si la validación de DNSSEC funciona, consulte DNSSEC#Testing.

Servidor DHCP

De manera predeterminada, dnsmasq tiene la funcionalidad DHCP desactivada; si desea usarla, debe activarla. Aquí están las configuraciones importantes:

# Solo escucha la interfaz LAN de los enrutadores.
# Al hacerlo, se abre el puerto 53 para tcp/udp (para localhost)
# y el 67 para udp (para el resto):
interface=<LAN-NIC>

# dnsmasq abrirá el puerto 53 tcp/udp y el puerto 67 udp (para el resto)
# para ayudar con las interfaces dinámicas (asignación de ip dinámicas).
# Dnsmasq descartará el resto de solicitudes,
# aunque al sistema «paranoid» le gustaría cerrarlos
# y dejar al kernel manejarlas:
bind-interfaces

# Opcionalmente, establecer un nombre de dominio
domain=example.com

# Establecer la puerta de enlace predeterminada
dhcp-option=3,192.168.1.1

# Establecer servidores DNS para anunciar
dhcp-option=6,192.168.1.1

# Rango dinámico de direcciones IP para poner a disposición
# de la interfaz LAN del equipo y el tiempo de «lease».
# Lo ideal es establecer el tiempo de «lease» en 5 m solo al principio
# para probar que todo funciona bien antes de establecer registros más largos.
dhcp-range=192.168.111.50,192.168.111.100,12h

# Si desea que dnsmasq asigne direcciones IP estáticas a algunos clientes,
# vincule las interfaces LAN de los equipos.
# Direcciones MAC:
dhcp-host=aa:bb:cc:dd:ee:ff,192.168.111.50
dhcp-host=aa:bb:cc:ff:dd:ee,192.168.111.51

Consulte dnsmasq(8) para conocer más detalles.

Prueba

Desde un equipo que está conectado al que tiene dnsmasq, configúrelo para utilizar DHCP para la asignación automática de direcciones IP, luego intente iniciar sesión normalmente en la red.

Si inspecciona el archivo /var/lib/misc/dnsmasq.leases en el servidor, debería poder ver su asignación.

Servidor TFTP

dnsmasq tiene un servidor TFTP incorporado.

Para utilizarlo, cree un directorio para la raíz de TFTP (por ejemplo /srv/tftp) para colocar los archivos transferibles.

Para mayor seguridad, se recomienda utilizar el modo seguro TFTP de dnsmasq. En modo seguro, solo los archivos propiedad del usuario dnsmasq pasarán a través de TFTP. Necesitará hacer chown a TFTP root ya todos los archivos para que pertenezcan al usuario dnsmasq a fin de que pueda usar esta característica.

Active TFTP:

enable-tftp
tftp-root=/srv/tftp
tftp-secure

Consulte dnsmasq(8) para más opciones.

Servidor PXE

PXE requiere servidores DHCP y TFTP, ambas funciones pueden ser provistas por dnsmasq.

Sugerencia: dnsmasq puede ejecutarse en modo «proxy-DHCP» y agregar opciones de arranque PXE a una red con un servidor DHCP en ejecución:
interface=enp0s0
bind-dynamic
dhcp-range=192.168.0.1,proxy
  1. configurar #Servidor TFTP y #Servidor DHCP
  2. copiar y configurar un gestor de arranque compatible con PXE (por ejemplo, PXELINUX) sobre la raíz TFTP
  3. active PXE en /etc/dnsmasq.conf:
Nota:
  • las rutas de archivos son relativas a la raíz TFTP
  • si el archivo tiene un sufijo de .0, debe excluir el sufijo en las opciones de pxe-service

Para enviar simplemente un archivo:

dhcp-boot=lpxelinux.0

Para enviar un archivo dependiendo de la arquitectura del cliente:

pxe-service=x86PC, "PXELINUX (BIOS)", "bios/lpxelinux"
pxe-service=X86-64_EFI, "PXELINUX (EFI)", "efi64/syslinux.efi"
Nota: En caso de que pxe-service no funcione (especialmente para clientes basados ​​en UEFI), la combinación de dhcp-match y dhcp-boot puede hacer que funcione. Consulte RFC4578 para obtener más números client-arch para utilizarlos con el protocolo de arranque dhcp.
dhcp-match=set:efi-x86_64,option:client-arch,7
dhcp-match=set:efi-x86_64,option:client-arch,9
dhcp-match=set:efi-x86,option:client-arch,6
dhcp-match=set:bios,option:client-arch,0
dhcp-boot=tag:efi-x86_64,"efi64/syslinux.efi"
dhcp-boot=tag:efi-x86,"efi32/syslinux.efi"
dhcp-boot=tag:bios,"bios/lpxelinux.0"

Consulte dnsmasq(8) para conocer más opciones.

El resto depende del gestor de arranque.

Consejos y trucos

Impedir que OpenDNS redirija las consultas de Google

Para evitar que OpenDNS redirija todas las consultas de Google a su propio servidor de búsqueda, añada a /etc/dnsmasq.conf:

server=/www.google.com/<ISP DNS IP>

Anular direcciones

En algunos casos, como cuando esté operando un portal cautivo, puede ser útil resolver nombres de dominios específicos en un conjunto de direcciones codificadas. Esto se hace con la configuración address:

address=/example.com/1.2.3.4

Además, es posible devolver una dirección específica para todos los nombres de dominio que no son contestados desde /etc/hosts o DHCP utilizando un comodín especial:

address=/#/1.2.3.4

Tener más de una instancia

Si queremos que dos o más servidores dnsmasq funcionen por interfaz(ces).

Estático

Para hacer esto de forma estática, servidor por interfaz, utilice las opciones interfaz y bind-interface. Esto obliga a dnsmasq a iniciarse en segundo lugar.

Dinámico

En este caso, podemos excluir por interfaz y enlazar cualquier otra:

except-interface=lo
bind-dynamic
Nota: Esto está predeterminado en libvirt.

Véase también