Verwenden von dnsmasq zum Adressieren von Computern nach Namen und Auflösen externer Hostnamen

25558
BrDaHa

Ich habe Probleme mit meinem Dnsmasq-Setup. Ich möchte nur, dass bestimmte Hostnamen in bestimmte IP-Adressen für alle Computer in meinem Netzwerk aufgelöst werden. Genauer gesagt versuche ich, allen Geräten in meinem Netzwerk zu ermöglichen, einige Rechner in meinem Netzwerk nur mit einem angegebenen Hostnamen zu erreichen. Ich denke, ich muss etwas Wichtiges vermissen, denn obwohl ich einmal funktioniert hatte, nachdem mein DNS-Server neu gestartet wurde, stoppte er die Weiterleitung von Anforderungen für Server außerhalb des LANs.

Hier ist mein Setup: (alle IP-Adressen haben nur die letzte Ziffer der IPv4-Adresse)

  • Apple Airport Extreme ist im DHCP- und NAT-Modus eingerichtet (kann NAT nicht einfach auf diesem Router haben. Um NAT zu erhalten, habe ich den DHCP-Bereich auf 253-254 gesetzt und einige falsche MAC-Adressen für diese IPs reserviert). In meinem Netzwerk hat dies die IP-Adresse 1

  • Himbeer-PI mit Himbian und Dnsmasq. Diese hat die IP-Adresse 4 und den Hostnamen 'pi'.

  • Eine Maschine namens "Tower" um 3

Dnsmasq ist als DNS- und DHCP-Server eingerichtet. Alle Maschinen, die eine Verbindung zum Netzwerk herstellen, erhalten eine IP-Adresse im korrekten Bereich, die ich in dnsmasq angegeben habe, und die Himbeer-Pi (IP 4) wird automatisch als DNS-Server festgelegt. Dnsmasq ist auch so eingestellt, dass alle Anforderungen, die es nicht finden kann, an andere öffentliche DNS-Server weitergeleitet werden. Hier ist die Gesamtheit meiner DNS-Server mit vollständigen IP-Adressen:

/etc/dnsmasq.conf:

# Dnsmasq.conf for raspberry pi  # Full examples found here:  # http://www.thekelleys.org.uk/dnsmasq/docs/dnsmasq.conf.example   # Set up your local domain here  domain=hyrule.home  # Example: The option local=/localnet/ ensures that any domain name query which ends in .localnet will be answered if possible from /etc/hosts or DHCP, but never sent to an upstream server # don't forward requests (andrewoberstar.com/blog/2012/12/30/raspberry-pi-as-server-dns-and-dhcp) local=/hyrule.home/  #resolv-file=/etc/resolv.dnsmasq  resolv-file=/etc/resolv.conf  #min-port=4096   ## DNS SERVERS #openNic california server=173.230.156.28  #openNic Washington server=23.226.230.72  #google public DNS server=8.8.8.8 server=8.8.4.4  # Max cache size dnsmasq can give us cache-size=10000  # Use the hosts file on this machine expand-hosts  # ethernet - ip address mappings from /etc/ethers file read-ethers  # Below are settings for dhcp.  dhcp-range=XXX.XXX.X.10,XXX.XXX.X.200,12h dhcp-option=3,XXX.XXX.X.1 dhcp-authoritative log-queries 

/etc/resolv.conf:

domain hyrule.home  #search hyrule.home #nameserver 8.8.8.8 

/ etc / hosts

127.0.0.1 localhost ::1 localhost ip6-localhost ip6-loopback fe00::0 ip6-localnet ff00::0 ip6-mcastprefix ff02::1 ip6-allnodes ff02::2 ip6-allrouters  127.0.1.1 raspberrypi XXX.XXX.X.3 tower XXX.XXX.X.4 pi 

Die Datei / etc / ethers enthält die MAC-Adressen der Ethernet-Schnittstellen der jeweiligen Maschinen

Ich kann sehen, dass dnsmasq Anforderungen protokolliert, und alles sieht normal aus, alle Anfragen sehen so aus

Nov 2 17:29:21 raspberrypi dnsmasq[2067]: query[AAAA] time.apple.com.hsd1.ca.comcast.net from 10.0.1.1 Nov 2 17:29:21 raspberrypi dnsmasq[2067]: forwarded time.apple.com.hsd1.ca.comcast.net to 173.230.156.28 Nov 2 17:29:21 raspberrypi dnsmasq[2067]: forwarded time.apple.com.hsd1.ca.comcast.net to 23.226.230.72 Nov 2 17:29:21 raspberrypi dnsmasq[2067]: forwarded time.apple.com.hsd1.ca.comcast.net to 8.8.8.8 Nov 2 17:29:21 raspberrypi dnsmasq[2067]: forwarded time.apple.com.hsd1.ca.comcast.net to 8.8.4.4 Nov 2 17:29:24 raspberrypi dnsmasq[2067]: query[A] north-america.pool.ntp.org from 10.0.1.59 Nov 2 17:29:24 raspberrypi dnsmasq[2067]: forwarded north-america.pool.ntp.org to 8.8.4.4 Nov 2 17:29:24 raspberrypi dnsmasq[2067]: forwarded north-america.pool.ntp.org to 8.8.8.8 Nov 2 17:29:24 raspberrypi dnsmasq[2067]: forwarded north-america.pool.ntp.org to 23.226.230.72 Nov 2 17:29:24 raspberrypi dnsmasq[2067]: forwarded north-america.pool.ntp.org to 173.230.156.28 Nov 2 17:29:24 raspberrypi dnsmasq[2067]: query[TXT] push.apple.com from 10.0.1.3 Nov 2 17:29:24 raspberrypi dnsmasq[2067]: forwarded push.apple.com to 8.8.8.8 Nov 2 17:29:24 raspberrypi dnsmasq[2067]: forwarded push.apple.com to 23.226.230.72 Nov 2 17:29:24 raspberrypi dnsmasq[2067]: forwarded push.apple.com to 173.230.156.28 Nov 2 17:29:24 raspberrypi dnsmasq[2067]: forwarded push.apple.com to 8.8.4.4 Nov 2 17:29:24 raspberrypi dnsmasq[2067]: query[AAAA] time.apple.com.hyrule.home from 10.0.1.14 Nov 2 17:29:24 raspberrypi dnsmasq[2067]: config time.apple.com.hyrule.home is NXDOMAIN-IPv6 Nov 2 17:29:24 raspberrypi dnsmasq[2067]: query[A] time.apple.com.hyrule.home from 10.0.1.14 Nov 2 17:29:24 raspberrypi dnsmasq[2067]: config time.apple.com.hyrule.home is NXDOMAIN-IPv4 Nov 2 17:29:24 raspberrypi dnsmasq[2067]: query[AAAA] time.apple.com from 10.0.1.14 Nov 2 17:29:24 raspberrypi dnsmasq[2067]: forwarded time.apple.com to 8.8.4.4 Nov 2 17:29:24 raspberrypi dnsmasq[2067]: forwarded time.apple.com to 8.8.8.8 Nov 2 17:29:24 raspberrypi dnsmasq[2067]: forwarded time.apple.com to 23.226.230.72 Nov 2 17:29:24 raspberrypi dnsmasq[2067]: forwarded time.apple.com to 173.230.156.28 

BEARBEITEN: Ich habe beschlossen, das pi auf den Standard-Raspbian zurückzusetzen, da ich viel experimentiert habe, also wollte ich alle anderen Variablen entfernen. Ich ging voran und lud Minibian auf und installierte dnsmasq. Ich habe meine resolv.conf so bearbeitet, dass sie so aussieht (danke @Chuck Kollars für den Hinweis, was die Datei wirklich gemacht hat):

domain hyrule.home search hyrule.home nameserver XXX.XXX.X.4 

und setze nur meine dnsmasq.conf so, dass sie diese Nameserver abfragt (standardmäßig liest sie meine hosts-Datei):

server=/localnet/192.168.0.1 <--- still have the feeling this isn't right ## DNS SERVERS #openNic california server=173.230.156.28  #openNic Washington server=23.226.230.72 

In meiner Hosts-Datei hatte ich auch die Aliase eingerichtet, die von @Chuck Kollars vorgeschlagen wurden, mit einem Format von

<ipv4> <subdomain> <fqdn> 

Zu diesem Zeitpunkt hatte ich immer noch Probleme, und so bemerkte ich, dass dnsmasq immer dann versuchte, "tower.hsdn.comcast.com" oder etwas Ähnliches zu lösen, wenn ich etwas wie "tower" pingte, und es an die externen Nameserver weiterleitete weil es intern nicht aufgelöst wurde. Der Comcast-Teil kam mir bekannt vor. In meinem Airport Utility (5.6.1) wurde unter TCP / IP in der Registerkarte "Internet" die gleiche Adresse in das Feld "Domain Name" eingetragen (geisterhaft, als ob er geerbt wurde), also habe ich das geändert auch hyrule.home zu sein, und alles funktionierte wie erwartet!

Ich bin immer noch verwirrt, warum dieser Domänenname im Router sein musste und warum er in der Datei resolv.conf nicht beachtet wurde ...

2
Ich sage vererbt in dem Sinne, dass ich, da ich eine benutzerdefinierte, interne DNS-IP-Adresse habe, dies in der Routerkonfiguration angegeben habe und folglich jeder Rechner in meinem Netzwerk dieselbe DNS-Serveradresse erhält BrDaHa vor 9 Jahren 0

1 Antwort auf die Frage

3
Chuck Kollars

Obwohl ich nicht alle Details herausfinden kann, warum sich Ihr System falsch verhält, habe ich die folgenden Vorschläge, die Sie gewinnbringend betrachten könnten:

1) Dnsmasq verwendet /etc/resolv.conf nur für Abfragen, die auf demselben Computer erstellt wurden. Abfragen von allen anderen Computern werden direkt in Dnsmasq ausgeführt. Daher enthält /etc/resolv.conf normalerweise einen Zeiger auf den Nameserver 127.0.0.1, um Anforderungen, die von Anwendungen auf diesem Computer stammen, an Dnsmasq abzurufen. Tatsächlich kann /etc/resolv.conf beim Start von Dnsmasq sogar überschrieben werden. Seien Sie sehr vorsichtig bei der Eingabe von Anweisungen in /etc/resolv.conf. insbesondere glaube ich nicht, dass "domain hyrule.home" das tut, was Sie für einige Ihrer Hosts tun.

2) Eine andere Möglichkeit, mit lokalen Kurznamen umzugehen (so wie ich es mache), besteht darin, explizit sowohl den Kurznamen als auch den Langnamen jedes lokalen Computers in / etc / hosts zu schreiben (anstatt sich auf einen Softwaremechanismus zu verlassen), etwa wie folgt:

XXX.XXX.X.1 router router.hynet.home XXX.XXX.X.3 tower tower.hynet.home XXX.XXX.X.4 pi pi.hynet.home 

3) Ich bin mir nicht sicher, wofür die Definition von "raspberrypi" bis "localhost" gilt. Ich habe Angst vor einer solchen Äquivalenz, die manchmal zur falschen Zeit eine falsche Antwort auf das falsche System generiert, was dazu führt, dass einige Abfragen in der Runddatei ablaufen und nicht dort, wo sie eigentlich sollten. Mein System arbeitet ohne eine solche Definition.

4) Zur Verdeutlichung Ihrer verschiedenen Protokolle möchten Sie möglicherweise auch eine Definition von "localnet" (analog zu Ihrer Definition für "ip6-localnet"). Sie würden erwarten, dass dies in / etc / networks geht ... und in der Tat könnte das funktionieren. Aber Dnsmasq selbst schaut nur auf / etc / hosts, daher müssen Sie die Definition stattdessen in / etc / hosts eintragen, auch wenn es sich um ein Netzwerk handelt.

XXX.XXX.X.0 localnet hynet.home 
Vielen Dank, @Chuck Kollars. Ich glaube, es war weniger die Konfiguration von dnsmasq als die Einrichtung der Domäne auf meinem Router. BrDaHa vor 8 Jahren 0