Dnsmasq löst den lokalen Hostnamen im gesamten Netz in 127.0.0.1 auf

8

Mein dnsmasq ist konfiguriert:

  • Auf dem Host 'rtfm.lan'
  • Domain 'lan'
  • Es gibt einige DHCP-Voreinstellungen, die Hostnamen enthalten

Alle über DHCP registrierten '* .lan'-Hosts lösen sich einwandfrei auf: dnsmasq weiß, welche IPs welchen Hostnamen zugewiesen sind. 'Rtfm.lan' wird jedoch aus / etc / hosts gelesen und in 127.0.0.1 aufgelöst.

Ich kann verhindern, dass dnsmasq / etc / hosts liest, und manuell eine Adresse hinzufügen:

no-hosts
address=/rtfm.lan/192.168.1.2

Dies ist jedoch nicht flexibel: Wenn ich eines Tages beschließe, meine IP zu ändern, muss ich sie auch in der dnsmasq.conf ändern.

Wie kann ich dnsmasq anweisen, den lokalen Hostnamen mit seiner tatsächlichen IP zu verwenden?


Nur für den Fall ... hier ist meine DNSmasq-Konfiguration:

# 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
quelle

Antworten:

10

Normalerweise definieren Sie Ihre statischen Hosts in Ihrer Datei /etc/hostsund aktivieren sie . Mit dieser Option können Sie einen alternativen Namen für diese Datei angeben.hostsdnsmasq.confdnsmasq

Wenn Sie möchten , rtfm.lanangesprochen werden , wie 192.168.1.2fügen Sie dann eine Linie Lesung 192.168.1.2 rtfm.lanzu /etc/hosts. Normalerweise sollte Ihre Hosts-Datei für dnsmasq auf alle Ihre Server portierbar sein.

Auf rtfm.landem IP-Stack wird das Routing kurzgeschlossen und kein Datenverkehr an das Netzwerk gesendet.

Wenn Sie Ihre /etc/hostsDatei aktualisieren und dnsmasqmit einem HUPSignal signalisieren, wird die Hosts-Datei erneut gelesen und die Änderungen werden übernommen.

BEARBEITEN: dnsmasq ist nicht dafür ausgelegt, eine dynamische Hostadresse für den eigenen Host bereitzustellen. Wie bereits erwähnt, werden Namen aus der Lease-Datei für DHCP-Clients bereitgestellt.

Wenn Ihr Host ein Internet-Gateway ist, wird normalerweise eine lokale statische Adresse bereitgestellt. Das Bereitstellen der Internet-Gateway-Adresse kann zu Routing- und Firewall-Problemen führen.

Sie können Ihren DHCP-Client so konfigurieren, dass eine einzeilige Hosts-Datei geschrieben wird. Die Option dnsmasq addn-hostkann verwendet werden, um dnsmasq dazu zu bringen, diese Datei zusätzlich zu lesen /etc/hosts. Wenn sich die Adresse wahrscheinlich ändert, kann der DHCP-Client die Datei neu schreiben und dnsmasq ein HUPSignal zur Änderung der IP-Adresse senden .

BillThor
quelle
Also ... gibt es keine Möglichkeit, dnsmasq dazu zu bringen, die aktuelle IP-Adresse zu verwenden, die von der Schnittstelle abgerufen wurde?
kolypto
Nicht standardmäßig, aber Sie können Ihren DHCP-Client dazu bringen, die erforderlichen Daten bereitzustellen. Ich bin nicht sicher, warum Sie eine dynamische Adresse für den Host von dnsmasq bereitstellen würden.
BillThor
4

dnsmasq kann seinen eigenen Hostnamen auflösen, indem das Lesen von / etc / hosts deaktiviert und eine andere Konfigurationsdatei zum Lesen der Hostnamen einschließlich sich selbst konfiguriert wird.

dnsmasq-Konfiguration (/etc/dnsmaq.conf):

no-hosts
addn-hosts=/etc/dnsmasq_hosts

Konfigurieren Sie in / etc / dnsmasq_hosts den eigenen Hostnamenpunkt auf die IP-Adresse, die Sie benötigen (sowie andere Hostnamen im lokalen LAN).

pnail
quelle