Ich habe dies auf Debian Wheezy und Jessie getestet und das OP hat bestätigt, dass es auch auf Stretch funktioniert. Stretch und Jessie verwenden resolvconf, wheezy nicht.
/etc/hosts
Geben Sie einfach alle Ihre festen IP-Adressen in die lokale Datei des Hosts ein, auf dem dnsmasq ausgeführt wird. Sie fügen hier Hosts mit festen Adressen in Ihrem lokalen Netzwerk (Domäne local.net
, IP- Adresse 192.168.0.xxx
in diesem Beispiel) oder Hosts hinzu, die Sie aus irgendeinem Grund lokal überschreiben möchten:
# /etc/hosts # the local host 127.0.0.1 localhost # provide fixed addresses used by dnsmasq for the local network 192.168.0.100 host0.local.net host0 192.168.0.101 host1.local.net host1 192.168.0.102 host2.local.net host2 # map a fancy service to the same address as above (e.g. on host2) 192.168.0.102 imap.local.net imap 192.168.0.102 mediaserver.local.net mediaserver # overwrite an external host with address 1.2.3.4 1.2.3.4 some.external-host.com # map unwanted external hosts to localhost 127.0.0.1 some.malicious-advertising-server.com
Dnsmasq liest die hosts-Datei vorzugsweise für den Aufruf externer Resolver. Daher sollten alle IP-Adressen in dieser Datei verfügbar sein, bevor einer dieser Hosts nach einer Lease (oder sogar nach einer Ausführung) fragt. Stellen Sie sicher, dass die folgenden Punkte in Ihrem System enthalten sind /etc/dnsmasq.conf
:
# /etc/dnsmasq.conf ... # If you don't want dnsmasq to read /etc/hosts, uncomment the # following line. #no-hosts ...
Wenn Ihre Domäne local.net
keine öffentlich verfügbare Domäne ist, fügen Sie sie in die folgende Klausel ein, um zu verhindern, dass dnsmaq Upstream-Auflöser in nicht vorhandenen Domänen abfragt:
# /etc/dnsmasq.conf ... # Add local-only domains here, queries in these domains are answered # from /etc/hosts or DHCP only. local=/local.net/ ...
Möglicherweise möchten Sie einige weitere Optionen für die /etc/hosts
Datei in überprüfen /etc/dnsmasq.conf
. Die umgebenden Kommentare sind sehr informativ.
Jetzt möchten Sie Ihre physischen Hosts diesen IP-Adressen zuordnen. Wenn nicht vorhanden, erstellen Sie die Datei /etc/ethers
. In dieser Datei tragen Sie die MAC-Adressen aller Hosts ein, die eine feste IP-Adresse erhalten sollen, gefolgt von ihrem entsprechenden DNS-Namen:
# /etc/ethers 1C:6F:65:39:09:8D host0.local.net 1C:6F:65:39:19:8D host1.local.net 1C:6F:65:39:29:8D host2.local.net
Sie benötigen nur Ihre physischen Hosts, nicht die zusätzlichen Servicenamen, die Sie in der /etc/hosts
obigen Datei definiert haben . Gehen Sie zurück zu Ihrem /etc/dnsmasq.conf
und prüfen Sie, ob das Lesen von /etc/ethers
aktiviert ist:
# /etc/dnsmasq.conf ... # If this line is uncommented, dnsmasq will read /etc/ethers and act # on the ethernet-address/IP pairs found there just as if they had # been given as --dhcp-host options. Useful if you keep # MAC-address/host mappings there for other purposes. read-ethers
Es gibt wieder mehr Optionen bezüglich /etc/ethers
. Wenn Sie nach zusätzlichen Funktionen suchen, möchten Sie diese möglicherweise überfliegen.
Als dritten Schritt müssen Sie resolveconf davon überzeugen, den lokalen dnsmasq als ersten Resolver zu verwenden. Andernfalls funktioniert die Auflösung für dynamische Leases auf dem Host, auf dem dnsmasq ausgeführt wird, nicht ordnungsgemäß (nicht für die oben konfigurierten festen). So sieht mein /etc/resolvconf.conf
aus:
# /etc/resolvconf.conf # Configuration for resolvconf(8) # See resolvconf.conf(5) for details resolv_conf=/etc/resolv.conf # If you run a local name server, you should uncomment the below line and # configure your subscribers configuration files below. name_servers=127.0.0.1 # Mirror the Debian package defaults for the below resolvers # so that resolvconf integrates seemlessly. dnsmasq_resolv=/var/run/dnsmasq/resolv.conf pdnsd_conf=/etc/pdnsd.conf unbound_conf=/var/cache/unbound/resolvconf_resolvers.conf
Die Schlüsselzeile hier ist:
# /etc/resolvconf.conf ... name_servers=127.0.0.1 ...
Sie weist den Resolver an, den lokalen Host als ersten Resolver zu verwenden. Das Problem hierbei ist, dass dnsmasq auch resolvconf verwendet, um unbekannte Adressen aufzulösen. Aber keine Sorge, dnsmasq ist klug genug, sich nicht in rekursiven Schleifen aufzurufen.
Eine letzte (wahrscheinlich offensichtliche) Sache: Wenn Sie auch einen dynamischen IP-Bereich definieren, z. B. für Gäste, mobile Geräte usw., stellen Sie sicher, dass er nicht mit den in folgenden Adressen angegebenen Adressen kollidiert /etc/hosts
:
# /etc/dnsmasq.conf ... # Uncomment this to enable the integrated DHCP server, you need # to supply the range of addresses available for lease and optionally # a lease time. If you have more than one network, you will need to # repeat this for each network on which you want to supply DHCP # service. dhcp-range=192.168.0.50,192.168.0.99,12h # this range must not include above addresses given in /etc/hosts ...
Nun erhält dnsmaq die IP-Adressen aus der /etc/hosts
Datei, unabhängig von einer vorhandenen Lease. DHCP-Anfragen lösen die MAC-Adresse mit /etc/ethers
einem Domänennamen auf, der wiederum in eine IP -Adresse mit aufgelöst wird /etc/hosts
.
So können Sie Hosts und Ether in separaten Dateien ordentlich konfigurieren und müssen nicht jeden Host /etc/dnsmaq.conf
mit der dhcp-host
Option ... ` in Ihren Ordner aufnehmen .