dnsmasq (Español)
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, 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.
Contents
Instalación
Instale dnsmasq desde los repositorios oficiales.
Configuración de la caché DNS
Para configurar dnsmasq como un demonio de almacenamiento de DNS en la caché de un único equipo, edite /etc/dnsmasq.conf
y descomente la directiva listen-address
, añadiendo la dirección IP localhost:
listen-address=127.0.0.1
Para utilizar este equipo a fin de que otros equipos conectados a la misma red puedan consultar con su dirección IP LAN:
listen-address=192.168.1.1 # IP de ejemplo
Se recomienda que utilice una IP LAN estática en este último caso.
Archivo de direcciones DNS
Después de configurar dnsmasq necesitará configurar el cliente DHCP para anteponer la dirección de localhost a las direcciones DNS presentes en /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.
resolv.conf
La opción principal consiste en una configuración pura de resolv.conf
. Para ello, basta con poner el primer servidor de nombres en /etc/resolv.conf
apuntando a localhost:
/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. dhcpcd, por desgracia, tiende a sobrescribir, por defecto, el archivo /etc/resolv.conf
, así que, si usa DHCP, es una buena idea proteger /etc/resolv.conf
. Para ello, agregue nohook resolv.conf
en el archivo de configuración de dhcpcd:
/etc/dhcpcd.conf
... nohook resolv.conf
También es posible proteger contra escritura su resolv.conf con:
# chattr +i /etc/resolv.conf
Más de tres servidores de nombres
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 resolv.conf
. Como solución alternativa, puede hacer de localhost el único servidor de nombres en resolv.conf
y, luego, crear un archivo separado, resolv-file
, para sus servidores de nombres externos. Para ello, en primer lugar, cree un nuevo archivo resolv para dnsmasq:
/etc/resolv.dnsmasq.conf
# Servidores de nombres de Google, por ejemplo nameserver 8.8.8.8 nameserver 8.8.4.4
Y, luego, edite /etc/dnsmasq.conf
, para utilizar el nuevo archivo resolv:
/etc/dnsmasq.conf
... resolv-file=/etc/resolv.dnsmasq.conf ...
dhcpcd
dhcpcd tiene la capacidad de anteponer o posponer servidores de nombres a los presentes en /etc/resolv.conf
mediante la creación (o edición) del archivo /etc/resolv.conf.head
y /etc/resolv.conf.tail
, respectivamente:
echo "nameserver 127.0.0.1" > /etc/resolv.conf.head
dhclient
Para dhclient, descomente en /etc/dhclient.conf
:
prepend domain-name-servers 127.0.0.1;
NetworkManager
NetworkManager tiene la capacidad de iniciar dnsmasq desde su archivo de configuración. Añada la opción dns=dnsmasq
a NetworkManager.conf
en la sección [main]
, después de desactivar dnsmasq.service
para que puede ser cargado al comienzo por systemd:
/etc/NetworkManager/NetworkManager.conf
[main] plugins=keyfile dns=dnsmasq
Se pueden crear configuraciones personalizadas para dnsmasq, mediante la creación de archivos de configuración en /etc/NetworkManager/dnsmasq.d/
. Por ejemplo, para cambiar el tamaño de la memoria caché DNS (que se almacena en RAM):
/etc/NetworkManager/dnsmasq.d/cache
cache-size=1000
Cuando dnsmasq sea iniciado por NetworkManager
, el archivo de configuración de este directorio será usado en lugar del archivo de configuración predeterminado.
Otros métodos
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: 127.0.0.1, DNS-server-one, ...
.
Configuración del servidor DHCP
Por defecto, dnsmasq viene con la funcionalidad DHCP desactivada, si quiere usarla, hay que activarla en (/etc/dnsmasq.conf
). He aquí los ajustes importantes:
# Only listen to routers' LAN NIC. Doing so opens up tcp/udp port 53 to # localhost and udp port 67 to world: interface=<LAN-NIC> # dnsmasq will open tcp/udp port 53 and udp port 67 to world to help with # dynamic interfaces (assigning dynamic ips). Dnsmasq will discard world # requests to them, but the paranoid might like to close them and let the # kernel handle them: bind-interfaces # Dynamic range of IPs to make available to LAN pc 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 # NIC MAC address: dhcp-host=aa:bb:cc:dd:ee:ff,192.168.111.50
Iniciar el demonio
Para cargar dnsmasq en el arranque:
# systemctl enable dnsmasq
Para iniciar dnsmasq inmediatamente:
# systemctl start dnsmasq
Para ver si dnsmasq se ha iniciado correctamente, compruebe el «journal» del sistema:
$ journalctl -u dnsmasq
También será necesario reiniciar la red si se ha creado un archivo /etc/resolv.conf
nuevo para el cliente DHCP.
Test
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 dnsutils[broken link: replaced by bind-tools]):
$ dig archlinux.org | grep "Query time"
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:
$ dig archlinux.org | grep "Query time"
;; Query time: 18 msec
$ dig archlinux.org | grep "Query time"
;; Query time: 2 msec
Servidor DHCP
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.
Consejos y trucos
Prevenir que OpenDNS redirija consultas a Google
Para evitar que OpenDNS redirija todas las consultas a Google a su propio servidor de búsqueda, añada a /etc/dnsmasq.conf
:
server=/www.google.com/<ISP DNS IP>
Visualizar leases
$ cat /var/lib/misc/dnsmasq.leases
Agregar un dominio personalizado
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 hostname.home.lan
.
Descomente expand-hosts
para agregar el dominio personalizado a las entradas de hosts:
expand-hosts
Sin este ajuste, tendrá que agregar el dominio a las entradas de /etc/hosts.