Verwenden von DNSMasq zur lokalen Hostnamenauflösung

Verwenden von DNSMasq zur lokalen Hostnamenauflösung

Ich arbeite daran, ein Heim-Intranet für mich und meine Mitbewohner einzurichten. Meine Idee ist, dass wir Dinge wie alte Stromrechnungen an einem Ort aufbewahren können, der leichter zugänglich ist als eine Küchenschublade usw. Jedenfalls läuft Apache 2 auf einem Raspberry Pi in meinem LAN, und wenn ich seine IP-Adresse verwende, kann ich auf Seiten zugreifen, die auf dem Pi bereitgestellt werden. Da ich dieses Projekt eher mache, um etwas über Netzwerke zu lernen, als um meiner Wohnung einen Dienst bereitzustellen, dachte ich, es wäre cool, wenn mein Netzwerk eine Hostnamenauflösung für mein LAN bereitstellen könnte. Anstatt meinen Browser also auf die IP- 192.168.1.151Adresse des Pi zu richten, könnte ich ihn auf oberon(seinen Hostnamen) richten und die vom Pi bereitgestellten Webseiten anzeigen.

Nun war mir klar, dass ich nicht der Erste war, der das tun wollte, also begann ich mit Googlen. Diese Frage, ebenfalls zu Unix und Linux, hat mir enorm geholfen:So machen Sie einen Computer über seinen Hostnamen vom LAN aus zugänglich. An diesem Punkt habe ich alles in der verifizierten Antwort versucht. Ich habe darüber nachgedacht, die hostsDatei zu verwenden, aber das würde bedeuten, dass ich meinen Mitbewohnern sagen müsste, dass sie ihre Maschinen konfigurieren sollen, was ich ihnen nicht zumuten möchte. Ich habe versucht, auf meinem Router (einem NETGEAR WNR1000v2 (auch bekannt als N150)) eine DHCP-Lease für den Pi zu reservieren, und obwohl die Reservierung funktioniert hat, funktioniert die Hostnamenauflösung nicht. Das frustriert mich irgendwie, weil ich meinem Router die IP des Pi mitgeteilt habeUndseinen Hostnamen, stellt diese Information aber immer noch nicht den Clients in meinem LAN zur Verfügung.

Da diese beiden Methoden nicht funktionierten, habe ich mich für die Installation dnsmasqauf dem Pi entschieden. Die Konfiguration schien einfach zu sein und ich würde mich freuen, ein neues Tool zu lernen. Ich habe es installiert und es läuft (scheinbar) einwandfrei. Ich kann digoder nslookupdie Spitznamen des Pi (die ich in und festgelegt habe /etc/hosts) oberoneingeben homenetund bekomme die richtigen Ergebnisse. Ich kann dasselbe für Internetnamen wie tun yahoo.comund bekomme die richtigen Antworten, weil ich Googles 8.8.8.8und 8.8.4.4als Backup-Server in eingerichtet habe /etc/dnsmasq.conf. Sehen Sie sich das hier an:

me@oberon~$ dig oberon

; <<>> DiG 9.8.4-rpz2+rl005.12-P1 <<>> oberon
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 10787
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0

;; QUESTION SECTION:
;oberon.                                IN      A

;; ANSWER SECTION:
oberon.                 0       IN      A       192.168.1.151

;; Query time: 10 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Sun Oct  6 18:59:18 2013
;; MSG SIZE  rcvd: 40

Beachten Sie, dass SERVERis 127.0.0.1: oberonseine eigene IP-Adresse auf sich selbst sucht. Das ist, was ich erwartet habe. Die Ausgabe ist dieselbe, wenn ich tue dig oberon @localhost. Aufgrund dieser Ausgabe denke ich, dass das dnsmasqgut funktioniert. Um es auf die nächste Ebene zu bringen, möchte ichalleClients in meinem LAN können oberonin ihren Browser tippen und werden zur oberonIndexseite weitergeleitet. Ich weiß, dass ich dafür meinen Router konfigurieren muss (ich entschuldige mich, wenn das nicht unbedingt Unix- und Linux-Gebiet betrifft).

Ich habe einen Netgear WNR1000v2, mit dem ich ziemlich vertraut bin. Ich habe die Portweiterleitung konfiguriert, damit ich mich per SSH mit dem Pi verbinden kann, und ich habe auch in anderen Einstellungen herumgeschnüffelt. Ich weiß, dass ich vor Beginn dieses Projekts meine DNS-Server von meinem ISP erhalten habe, aber jetzt möchte ich diese DNS-Server hauptsächlich verwenden, aber auch 192.168.1.151als letzte Kontrolle. Also habe ich die DNS-Konfiguration meines Routers wie folgt geändert:

Die neue DNS-Konfiguration meines Routers. Vertrauen Sie mir, wenn ich sage, dass die ersten beiden Einträge von meinem ISP bereitgestellt werden

Mit dieser Konfiguration hätte ich erwartet, dass ich auf meinem (Windows-)Desktop Folgendes tun kann nslookup oberonund das Ergebnis erhalte 192.168.1.151. Aber das passiert nicht. Folgendes passiert:

C:\Users\me>nslookup oberon
Server:  UnKnown
Address:  fe80::226:f2ff:fefa:bea

*** UnKnown can't find oberon: Non-existent domain

Auch ein Zurücksetzen dnsflushingdes Netzwerkadapters auf meinem Windows-Rechner ändert nichts.

Und jetzt ist hier der Grund, warum ich mir die Haare raufe:

C:\Users\me>nslookup oberon 192.168.1.151
Server:  oberon.lan
Address:  192.168.1.151

Name:    oberon
Address:  192.168.1.151

Offensichtlich dnsmasqfunktioniert es einwandfrei. Wenn ich meiner Windows-Box sage, dass sie 192.168.1.151zur Auflösung des Namens verwenden soll oberon, ist alles in Ordnung (die .lanDomäne war Teil der Konfiguration von dnsmasq, also habe ich erwartet, sie dort zu sehen). Wenn ich meinen Router nur dazu bringen könnte, meiner Windows-Maschine mitzuteilen, dass 192.168.1.151sie bei DNS-Abfragen verwenden soll, sollte alles gut sein!

Mir scheint also, dass das Problem an meinem Router liegt, aber ich weiß einfach nicht, was ich tun soll, außer die DNS-Server zu ändern, damit sie einbezogen werden, 192.168.1.151wie ich es bereits getan habe. Kann mir hier jemand helfen? Ich werde versuchen, alle gewünschten weiteren Informationen bereitzustellen.

Antwort1

Ihr Problem liegt darin, dass Sie die Verwendung dieser DNS-Server nicht verstehen. Ich kenne die genauen Details der Methode nicht, die Windows verwendet, um auszuwählen, welcher DNS-Server abgefragt werden soll, aber ich wette, dass /immer/ der primäre > sekundäre > tertiäre Server gilt. Und selbst wenn dies nicht der Fall wäre und Round-Robin wäre, würden Sie dennoch 2 von 3 Malen einen nicht hilfreichen Server abfragen.

Was passieren wird, ist, dass der primäre Server abgefragt wird. Wenn das Zeitlimit überschritten wird, was ein oder zwei Sekunden dauern kann, wird der nächste Server abgefragt. DNS ist kein „Konsenssystem“. Wenn einer der Remote-Server abgefragt wird, wird er schließlich feststellen, dass Ihr Hostname aus seiner Sicht als Internet-DNS-Server maßgeblich NICHT existiert.

Sie benötigen Ihren eigenen LAN-DNS als primären DNS-Server. Die anderen wären geeignete Backup-Server, aber ich würde in Erwägung ziehen, das einfach ganz wegzulassen.

Beachten Sie auch, dass Ihr Reverse-DNS (IP-zu-Name-Lookup) zu „hostname.lan“ aufgelöst wird, Ihre Vorwärtsauflösungstests jedoch nur mit dem Hostnamen durchgeführt werden. Sie sollten auch irgendwo eine Vorwärtsauflösung für hostname.lan eingerichtet haben. Obwohl es für einen Host viele „Name-zu-Adresse“-Vorwärtslookups geben kann, wird erwartet, dass es einen Reverse-Lookup der IP zu einem Namen gibt, der wiederum einen passenden Namen zu diesem IP-Eintrag hat. Dies ist nicht immer kritisch und führt nur manchmal zu Protokolldateien, die jammern, aber einige Dinge reagieren empfindlicher darauf als andere.

Vergessen Sie auch nicht, sämtlichen Schund in der Hosts-Datei zu entfernen, den Sie angelegt haben, sobald alles funktioniert (ich weiß nicht, ob das für dnsmasq relevant ist, ich habe es nie verwendet. Ich habe eine ähnliche, aber kompliziertere Konfiguration mit dem ISC-BIND-Nameserver, für den Sie die Weiterleitung an andere Server konfigurieren können, wie Sie sie verwenden, oder den Sie einfach als DNS-Server ohne Weiterleitung verwenden können, der die vollständige Namensauflösung selbst durchführt – so habe ich es eingerichtet).

Es erübrigt sich zu erwähnen, dass Sie, wie Sie zunächst vermutet haben, bei weitem nicht der Einzige sind, der diese Konfiguration vornimmt; nahezu jedes einigermaßen entwickelte Firmen-LAN und sehr viele überentwickelte Heim-LANs verfügen über diese Art von Konfiguration.

Antwort2

Vielleicht ein bisschen spät, aber das Deaktivieren von IPv6 auf meinem WLAN-Adapter hat den Trick getan.

verwandte Informationen