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.151
die 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 hosts
Datei 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 dnsmasq
auf 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 dig
oder nslookup
die Spitznamen des Pi (die ich /etc/hosts
auf oberon
und gesetzt habe homenet
) und bekomme die richtigen Ergebnisse. Ich kann das Gleiche für Internetnamen wie tun yahoo.com
und richtige Antworten erhalten, da ich Google 8.8.8.8
und 8.8.4.4
als 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 SERVER
is 127.0.0.1
: oberon
seine 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 dnsmasq
das gut funktioniert. Um es auf die nächste Ebene zu bringen, möchte ich, dass alle Clients in meinem LAN in der Lage sind, oberon
ihren Browser einzugeben und zur oberon
Indexseite 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.151
als letzte Überprüfung verwenden. Also habe ich die DNS-Konfiguration meines Routers wie folgt geändert:
Mit dieser Konfiguration hatte ich erwartet, dass ich dies nslookup oberon
auf 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 dnsflushing
der 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, dnsmasq
funktioniert gut. Wenn ich meiner Windows-Box sage, dass sie 192.168.1.151
zum Auflösen des Namens verwendet werden soll oberon
, ist alles in Ordnung (die .lan
Domä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.151
anzuweisen, 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.151
wie ich es bereits getan habe. Kann mir hier jemand helfen? Ich werde versuchen, weitere gewünschte Informationen bereitzustellen.
quelle
Antworten:
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.
quelle
nslookup oberon
immer noch nicht. Eine Sache, die ich im Text meines ursprünglichen Beitrags nicht erwähnt habe, war, dass bei einemnslookup
Ausfall der verwendete Server einefe80
IPv6-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..lan
Domain auszuräumen , habe ich außerdem konfiguriertdnsmasq
, dass einfache Hostnamen automatisch erweitert werden, um sie hinzuzufügen.lan
. Laufennslookup oberon.lan 192.168.1.151
gibt das erwartete Ergebnis vonName: oberon.lan Address: 192.168.1.151
ipconfig /all
Sie 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.Vielleicht etwas spät, aber das Deaktivieren von IPv6 auf meinem WLAN-Adapter hat den Trick getan.
quelle