Dnsmasq resuelve el nombre de host local a 127.0.0.1 en toda la red

8

Mi dnsmasq está configurado:

  • En el host 'rtfm.lan'
  • Dominio 'lan'
  • Hay algunos valores predeterminados de DHCP que incluyen nombres de host

Todos los hosts '* .lan' registrados a través de DHCP se resuelven bien: dnsmasq sabe qué IP se asignan a qué nombres de host. Sin embargo, 'rtfm.lan' se lee desde / etc / hosts y se resuelve en 127.0.0.1.

Puedo evitar que dnsmasq lea / etc / hosts y agregue una dirección manualmente:

no-hosts
address=/rtfm.lan/192.168.1.2

Pero esto no es flexible: si algún día decido cambiar mi IP, también tendré que cambiarla en dnsmasq.conf.

¿Cómo puedo decirle a dnsmasq que use el nombre de host local con su IP real?


Por si acaso ... aquí está mi configuración DNSmasq:

# Never forward plain names (without a dot or domain part)
domain-needed
# Never forward addresses in the non-routed address spaces.
bogus-priv
# Read resolv.conf serially
strict-order

#==========[ NAMESERVER ]==========#

# Cache size
cache-size=4096
# Don't read /etc/hosts
no-hosts
# Read additional hosts-file (not only /etc/hosts) to add entries into DNS
addn-hosts=/etc/hosts-dnsmasq
# Auto-append <domain> to simple entries in hosts-file
expand-hosts

#=== HOSTNAME OVERRIDES
address=/localhost/127.0.0.1 # *.localhost => 127.0.0.1

#==========[ DHCP ]==========#
# Enable for the local network?
dhcp-authoritative
# Tell MS Windows to release a lease on shutdown
dhcp-option=vendor:MSFT,2,1i

#=== DHCP
# Domain name
domain=lan
# DNS-resolve hosts in these domains ONLY from /etc/hosts && DHCP leases
local=/lan/

# DHCP range & lease time
dhcp-range=192.168.1.70,192.168.1.89,24h 
# Default route
dhcp-option=3,192.168.1.1

#=== FIXED LEASES
# LAN MY HOSTS
dhcp-host=00:23:54:5d:27:fa,                    rtfm.lan,               192.168.1.2
dhcp-host=00:23:54:5d:27:fb,                    rtfm.lan,               192.168.1.2
dhcp-host=c8:0a:a9:45:f1:03, 00:1e:64:9e:e9:5e, wtf.lan,                192.168.1.3
Kolypto
fuente

Respuestas:

10

Normalmente, definiría sus hosts estáticos /etc/hostsy los habilitaría hostsen su dnsmasq.confarchivo. dnsmasqle permite especificar un nombre alternativo para este archivo.

Si quieres rtfm.lanser tratados como 192.168.1.2a continuación, añada una línea 192.168.1.2 rtfm.lana /etc/hosts. Normalmente, su archivo de hosts para dnsmasq debe ser portátil para todos sus servidores.

En rtfm.lanla pila IP, se cortocircuitará el enrutamiento y no se enviará tráfico a la red.

Si actualiza su /etc/hostsarchivo y señal dnsmasqcon una HUPseñal, el archivo de hosts se volverá a leer y se aplicarán los cambios.

EDITAR: dnsmasq no está diseñado para servir una dirección de host dinámica para su propio host. Como se señaló, sí sirve nombres de su archivo de arrendamiento para clientes DHCP.

Si su host es una puerta de enlace a Internet, normalmente servirá una dirección estática local. Servir la dirección de la puerta de enlace de Internet puede causar problemas de enrutamiento y firewall.

Puede configurar su cliente DHCP para escribir un archivo de hosts de una línea. La opción dnsmasq addn-hostse puede usar para que dnsmasq lea este archivo además de /etc/hosts. Si es probable que la dirección cambie, entonces el cliente DHCP podría reescribir el archivo y enviar una HUPseñal a dnsmasq sobre el cambio de dirección IP.

BillThor
fuente
Entonces ... ¿no hay forma de hacer que dnsmasq use la IP actual obtenida de la interfaz?
Kolypto
No de manera predeterminada, pero puede hacer que su cliente DHCP proporcione los datos requeridos. No estoy seguro de por qué estaría sirviendo una dirección dinámica para el host de dnsmasq.
BillThor
4

dnsmasq puede resolver su propio nombre de host deshabilitando la lectura de / etc / hosts y configurando otro archivo de configuración para leer los nombres de host, incluido él mismo.

Configuración de dnsmasq (/etc/dnsmaq.conf):

no-hosts
addn-hosts=/etc/dnsmasq_hosts

En / etc / dnsmasq_hosts, configure su propio punto de nombre de host para la dirección IP que necesita (así como otros nombres de host en la LAN local).

pnail
fuente