Dnsmasq résout le nom d'hôte local en 127.0.0.1 partout sur le net

8

Mon dnsmasq est configuré:

  • Sur l'hôte 'rtfm.lan'
  • Domaine 'lan'
  • Certains préréglages DHCP incluent des noms d'hôtes

Tous les hôtes '* .lan' enregistrés via DHCP résolvent bien: dnsmasq sait quelles adresses IP sont affectées à quels noms d'hôtes. Cependant, 'rtfm.lan' est lu à partir de / etc / hosts et résolu en 127.0.0.1.

Je peux empêcher dnsmasq de lire / etc / hosts et ajouter une adresse manuellement:

no-hosts
address=/rtfm.lan/192.168.1.2

Mais ce n'est pas flexible: si un jour je décide de changer mon IP - je devrai aussi le changer dans dnsmasq.conf.

Comment puis-je dire à dnsmasq d'utiliser local-hostname avec sa véritable IP?


Juste au cas où .. voici ma configuration 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
la source

Réponses:

10

Normalement, vous devez définir vos hôtes statiques dans /etc/hostset activer hostsdans votre dnsmasq.conffichier. dnsmasqvous permet de spécifier un autre nom pour ce fichier.

Si vous voulez rtfm.lanêtre adressé comme 192.168.1.2alors ajoutez une lecture de ligne 192.168.1.2 rtfm.lanà /etc/hosts. Normalement, votre fichier hosts pour dnsmasq doit être portable sur tous vos serveurs.

Sur rtfm.lanla pile IP court-circuitera le routage et n'enverra pas de trafic sur le réseau.

Si vous mettez à jour votre /etc/hostsfichier et signalez dnsmasqavec un HUPsignal, le fichier hosts sera relu et les changements appliqués.

EDIT: dnsmasq n'est pas conçu pour servir une adresse d'hôte dynamique pour son propre hôte. Comme indiqué, il sert des noms à partir de son fichier de bail pour les clients DHCP.

Si votre hôte est une passerelle Internet, il servira normalement une adresse statique locale. Servir l'adresse de la passerelle Internet peut entraîner des problèmes de routage et de pare-feu.

Vous pouvez configurer votre client DHCP pour écrire un fichier d'hôtes d'une ligne. L'option dnsmasq addn-hostpeut être utilisée pour que dnsmasq lise ce fichier en plus /etc/hosts. Si l'adresse est susceptible de changer, le client DHCP pourrait réécrire le fichier et envoyer à dnsmasq un HUPsignal lors du changement d'adresse IP.

BillThor
la source
Donc ... il n'y a aucun moyen de faire en sorte que dnsmasq utilise l'IP actuelle récupérée depuis l'interface?
kolypto
Pas par défaut, mais vous pouvez demander à votre client DHCP de fournir les données requises. Je ne sais pas pourquoi vous serviriez une adresse dynamique pour l'hôte de dnsmasq.
BillThor
4

dnsmasq peut résoudre son propre nom d'hôte en désactivant la lecture depuis / etc / hosts et en configurant un autre fichier de configuration pour lire les noms d'hôte, y compris lui-même.

Configuration de dnsmasq (/etc/dnsmaq.conf):

no-hosts
addn-hosts=/etc/dnsmasq_hosts

Dans / etc / dnsmasq_hosts, configurez votre propre point de nom d'hôte sur l'adresse IP dont vous avez besoin (ainsi que d'autres noms d'hôte dans le réseau local).

pnail
la source