Verwenden von DNSMasq für die Auflösung lokaler Hostnamen


9

Ich arbeite daran, ein Heim-Intranet für mich und meine Mitbewohner einzurichten. Meine Idee ist, dass wir Dinge wie frühere Stromrechnungen an einem Ort aufbewahren können, der leichter zugänglich ist als eine Schublade in der Küche usw. Wie auch immer, Apache 2 läuft auf einem Raspberry Pi, in meinem LAN und wenn ich es benutze Über seine IP-Adresse kann ich auf Seiten zugreifen, die auf dem Pi bereitgestellt werden. Da ich in diesem Projekt mehr über das Networking als über die Bereitstellung eines Dienstes für meine Wohnung erfahre, dachte ich, es wäre cool, wenn mein Netzwerk eine Hostnamenauflösung für mein LAN bereitstellen könnte. Anstatt meinen Browser auf 192.168.1.151die IP-Adresse des Pi zu verweisen, könnte ich auf ihn oberon(seinen Hostnamen) verweisen und die vom Pi bereitgestellten Webseiten anzeigen.

Jetzt wusste ich, dass ich nicht die erste Person war, die dies tun wollte, also begann ich mit Googeln. Diese Frage, auch unter Unix und Linux, hat mir sehr geholfen: Wie man einen Computer über das LAN mit seinem Hostnamen zugänglich macht . Zu diesem Zeitpunkt habe ich alles in der verifizierten Antwort versucht. Ich dachte darüber nach, die hostsDatei zu verwenden, aber das würde bedeuten, dass ich meinen Mitbewohnern sagen müsste, dass sie ihre Maschinen konfigurieren sollen, was ich nicht möchte, dass sie tun müssen. Ich habe versucht, eine DHCP-Lease für den Pi auf meinem Router (einem NETGEAR WNR1000v2 (auch bekannt als N150)) zu reservieren, und während die Reservierung funktionierte, funktioniert die Auflösung des Hostnamens nicht. Diese Art von frustriert mich, weil ich meinem Router die IP des Pi und seinen Hostnamen mitgeteilt habe , diese Informationen jedoch nicht an Clients in meinem LAN weitergibt.

Da diese beiden Methoden nicht funktionieren, habe ich mich für die Installation dnsmasqauf dem Pi entschieden. Es schien einfach zu konfigurieren und ich würde mich freuen, ein neues Tool zu lernen. Ich habe es installiert und es läuft einwandfrei (es scheint). Ich kann digoder nslookupdie Spitznamen des Pi (die ich /etc/hostsauf oberonund gesetzt habe homenet) und bekomme die richtigen Ergebnisse. Ich kann das Gleiche für Internetnamen wie tun yahoo.comund richtige Antworten erhalten, da ich Google 8.8.8.8und 8.8.4.4als Backup-Server in eingerichtet habe /etc/dnsmasq.conf. Sieh dir das 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 das SERVERis 127.0.0.1: oberonseine eigene IP-Adresse für sich selbst sucht. Das habe ich erwartet. Die Ausgabe ist die gleiche, wenn ich es tue dig oberon @localhost. Aufgrund dieser Ausgabe denke ich, dass dnsmasqdas gut funktioniert. Um es auf die nächste Ebene zu bringen, möchte ich, dass alle Clients in meinem LAN in der Lage sind, oberonihren Browser einzugeben und zur oberonIndexseite weitergeleitet zu werden. Dafür weiß ich, dass ich meinen Router konfigurieren muss (entschuldige mich, wenn dies nicht nur für Unix und Linux gilt).

Ich habe ein Netgear WNR1000v2, mit dem ich ziemlich vertraut bin. Ich habe die Portweiterleitung so konfiguriert, dass ich SSH in den Pi einbinden kann, und ich habe mich auch in anderen Einstellungen umgesehen. Ich weiß, dass ich vor dem Start 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 Überprüfung verwenden. 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 hatte ich erwartet, dass ich dies nslookup oberonauf meinem (Windows-) Desktop tun und ein Ergebnis von erhalten kann 192.168.1.151. Das passiert aber nicht. Folgendes passiert:

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

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

Das Zurücksetzen oder dnsflushingder Netzwerkadapter auf meinem Windows-Computer ändert nichts.

Hier ist der Grund, warum ich mir hier draußen die Haare reiße:

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

Name:    oberon
Address:  192.168.1.151

Klar, dnsmasqfunktioniert gut. Wenn ich meiner Windows-Box sage, dass sie 192.168.1.151zum Auflösen des Namens verwendet werden soll oberon, ist alles in Ordnung (die .lanDomäne war Teil der Konfiguration von dnsmasq, daher habe ich erwartet, dass sie dort angezeigt wird). Wenn ich nur meinen Router dazu bringen könnte, meinen Windows-Computer 192.168.1.151anzuweisen, ihn bei DNS-Abfragen zu verwenden, wäre ich gut!

Es scheint mir also, dass das Problem in meinem Router liegt, aber ich kann einfach nicht herausfinden, was ich tun soll, außer die DNS-Server so zu ändern, 192.168.1.151wie ich es bereits getan habe. Kann mir hier jemand helfen? Ich werde versuchen, weitere gewünschte Informationen bereitzustellen.


Versuchen Sie, den Pi als ersten DNS-Server zu verwenden. Funktioniert er dann?
Terdon

1
Der Router ist der richtige Ort dafür. Wenn Sie es aus irgendeinem Grund nicht schaffen, dass Ihr Router einen Namen für den Pi bereitstellt, funktioniert es, wenn Sie dnsmasq auf dem Pi ausführen und den Router den Pi als DNS-Server bereitstellen. Es sieht so aus, als ob Ihr Problem darin besteht, Ihren Router richtig zu konfigurieren.
Gilles 'SO - hör auf böse zu sein'

Erneuern Sie die DHCP-Lease auf dem Client erneut, nachdem Sie die DNS-Einstellungen auf dem Router aktualisiert haben? Die DNS-Konfiguration wird in der DHCP-Lease gesendet, daher muss eine neue Lease abgerufen werden, um die neuen Einstellungen zu erhalten. Als alternative Lösung können Sie auch mDNS / zeroconf / avahi untersuchen.
Patrick

Antworten:


2

Ihr Problem liegt in Ihrem Missverständnis der Art und Weise, wie diese DNS-Server verwendet werden. Ich kenne die genauen Details der Methode, mit der Windows den abzufragenden DNS-Server auswählt, aber ich wette, dass er primär> sekundär> tertiär / immer / ist. Und selbst wenn dies nicht der Fall war und Round-Robin war, werden Sie zwei der drei Male einen nicht hilfreichen Server abfragen.

Was passieren wird, ist, dass der Primärserver abgefragt wird. Wenn das Zeitlimit überschritten wird, was ein oder zwei Sekunden sein kann, wird der nächste Server abgefragt. DNS ist kein "Konsens" -System. Wenn einer der Remoteserver abgefragt wird, wird schließlich das Ergebnis festgestellt, dass Ihr Hostname aus seiner Sicht als Internet-DNS-Server NICHT autoritativ vorhanden ist.

Sie benötigen Ihre eigenen LAN-DNS als primären DNS-Server. Die anderen würden geeignete Backup-Server herstellen, aber ich würde in Betracht ziehen, das einfach ganz fallen zu lassen.

Beachten Sie auch, dass Ihre Reverse-DNS (IP-to-Name-Suche) in "hostname.lan" aufgelöst wird, Ihre Vorwärtsauflösungstests jedoch nur mit dem Hostnamen durchgeführt werden. Sie sollten auch eine Vorwärtsauflösung für hostname.lan eingerichtet haben. Während es für einen Host viele "Name-to-Address" -Vorlaufsuchen geben kann, wird erwartet, dass die IP zu einem Namen rückwärts gesucht wird, der wiederum einen passenden Namen zu diesem IP-Datensatz hat. Es ist nicht immer kritisch und lässt Protokolldateien manchmal nur jammern, aber einige Dinge reagieren empfindlicher darauf als andere.

Vergessen Sie auch nicht, alle Hostdateien zu entfernen, die Sie eingerichtet haben, sobald alles funktioniert (ich weiß nicht, ob dies für dnsmasq relevant ist, habe es nie verwendet, ich habe eine ähnliche, aber kompliziertere Konfiguration unter Verwendung des ISC-BIND-Namens eingerichtet Server, den Sie für die Weiterleitung an andere Server konfigurieren können, wie Sie ihn verwenden, oder einfach als DNS-Server ohne Weiterleitung verwenden können, der die vollständige Namensauflösung selbst ausführt (was ich eingerichtet habe).

Unnötig zu erwähnen, dass Sie, wie Sie zuerst spekuliert haben, bei der Einrichtung dieses Setups weit davon entfernt sind, allein zu sein. In fast jedem vernünftig entwickelten Unternehmens-LAN und in vielen überentwickelten Heim-LANs wird diese Art von Setup vorhanden sein.


1
Vielen Dank für Ihre Hilfe iain! Ich verstehe, was Sie darüber sagen, dass DNS kein Konsenssystem ist, daher setze ich den Pi auf den primären DNS-Server in meinem Router. Ich habe dann die DHCP-Lease auf meinem Windows-Computer erneuert. Funktioniert aber nslookup oberonimmer noch nicht. Eine Sache, die ich im Text meines ursprünglichen Beitrags nicht erwähnt habe, war, dass bei einem nslookupAusfall der verwendete Server eine fe80IPv6-Adresse war - von der ich weiß, dass es sich um eine reservierte linklokale Adresse handelt. Aber ich weiß nicht, was das für DNS bedeutet. Fragt sich meine Windows-Box selbst ab? dnsflushändert dieses Verhalten nicht.
c.anna

Und was auch immer es wert ist, die Auflösung von LAN-Hostnamen funktioniert auch auf meinen iOS-Geräten nicht. Ich habe sie noch nicht erwähnt, weil ich mit Windows viel mehr Selbstbeobachtungskraft habe, aber wenn meine Probleme wirklich ausschließlich von Windows herrühren würden, würde ich nicht erwarten, dass diese Geräte das gleiche Problem haben.
c.anna

Um Ihre Bedenken hinsichtlich der .lanDomain auszuräumen , habe ich außerdem konfiguriert dnsmasq, dass einfache Hostnamen automatisch erweitert werden, um sie hinzuzufügen .lan. Laufen nslookup oberon.lan 192.168.1.151gibt das erwartete Ergebnis vonName: oberon.lan Address: 192.168.1.151
c.anna

Ich frage mich, ob es einen "Windowsismus" bei der Arbeit gibt oder so. Die Benennung Ihrer Hosts direkt unter der Top-Level-Domain ("oberon") ist etwas seltsam. Oberon.lan ist viel sinnvoller. Beachten Sie, dass Domain-Suffixe und 'Suchdomänen' häufig an einen Namen angehängt werden, um ihn aufzulösen. Beispielsweise könnte "oberon" aufgelöst und als "oberon.lan" gefunden werden, wenn sich lan in den Suchdomänen befindet. Die obigen Abfragen scheinen jedoch nicht zu zeigen, dass dies der Fall ist. Die Ausgrabung hat speziell die Beendigungsfrist für die Hostnamen, aber beachten Sie dies beim Testen!
iain

Hmm, nachdem Sie die primären DNS repariert haben, müssen Sie Windows erneut dhcp (das Zurücksetzen des Adapters sollte dies tun). Überprüfen ipconfig /allSie dann, ob der richtige DNS-Server verwendet wird. Wenn dies richtig ist, müssen Sie möglicherweise die DNS spülen. Aber mir fällt nichts anderes ein, es sollte funktionieren.
Sourcejedi

1

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


Upvote: Immer eine gute Idee. Es sei denn, das System ist nackt da draußen und benötigt es. Und bis jetzt (September 2017) gibt es nur sehr wenige Geräte für Heimanwender, die diese Kategorie erfüllen, wenn überhaupt.
SDsolar
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.