Dnsmasq risolve il nome host locale in 127.0.0.1 su tutta la rete


8

Il mio dnsmasq è configurato:

  • Sull'host "rtfm.lan"
  • Dominio "lan"
  • Ci sono alcuni preset DHCP che includono nomi host

Tutti gli host '* .lan' registrati tramite DHCP si risolvono bene: dnsmasq sapeva quali IP sono assegnati a quali nomi host. Tuttavia, 'rtfm.lan' viene letto da / etc / hosts e risolto in 127.0.0.1.

Posso impedire a dnsmasq di leggere / etc / hosts e aggiungere un indirizzo manualmente:

no-hosts
address=/rtfm.lan/192.168.1.2

Ma questo non è flessibile: se un giorno decido di cambiare il mio IP, dovrò anche cambiarlo in dnsmasq.conf.

Come posso dire a dnsmasq di usare local-hostname con il suo IP reale?


Per ogni evenienza ... ecco la mia configurazione 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

Risposte:


10

Normalmente, definirei i tuoi host statici /etc/hostse li abiliti hostsnel tuo dnsmasq.conffile. dnsmasqti permette di specificare un nome alternativo per questo file.

Se vuoi rtfm.lanessere indirizzato come 192.168.1.2allora aggiungi una riga 192.168.1.2 rtfm.lana /etc/hosts. Normalmente, il tuo file hosts per dnsmasq dovrebbe essere portabile su tutti i tuoi server.

Sullo rtfm.lanstack IP verrà cortocircuito il routing e non verrà inviato il traffico sulla rete.

Se aggiorni il tuo /etc/hostsfile e segnali dnsmasqcon un HUPsegnale, il file hosts verrà riletto e verranno applicate le modifiche.

EDIT: dnsmasq non è progettato per servire un indirizzo host dinamico per il proprio host. Come notato, fornisce nomi dal suo file di leasing per i client DHCP.

Se il tuo host è un gateway Internet, normalmente servirebbe un indirizzo statico locale. Fornire l'indirizzo del gateway Internet può causare problemi di routing e firewall.

È possibile configurare il client DHCP per scrivere un file host a una riga. L'opzione dnsmasq addn-hostpuò essere utilizzata per ottenere dnsmasq per leggere questo file in aggiunta a /etc/hosts. Se è probabile che l'indirizzo cambi, il client DHCP potrebbe riscrivere il file e inviare a dnsmasq un HUPsegnale sulla modifica dell'indirizzo IP.


Quindi ... non c'è modo di fare in modo che dnsmasq usi l'IP corrente recuperato dall'interfaccia?
Kolypto,

Non per impostazione predefinita, ma è possibile ottenere il client DHCP per fornire i dati richiesti. Non sono sicuro del motivo per cui dovresti fornire un indirizzo dinamico per l'host da dnsmasq.
BillThor,

4

dnsmasq può risolvere il proprio nome host disabilitando la lettura da / etc / hosts e configurando un altro file di configurazione per la lettura dei nomi host incluso se stesso.

configurazione dnsmasq (/etc/dnsmaq.conf):

no-hosts
addn-hosts=/etc/dnsmasq_hosts

In / etc / dnsmasq_hosts, configura il proprio punto nome host per l'indirizzo IP di cui hai bisogno (così come altri nomi host nella LAN locale).

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.