Was kann dazu führen, dass eine DNS-Suche einen Host-Dateieintrag ignoriert?


13

Ich habe ein DNS-Problem, das sich auf die Leistung meiner lokal gehosteten Website auswirkt, wenn ich sie auf meinem lokalen Computer durchsuche. Wenn ich das DNS-Suffix meines Netzwerks an den Namen meines lokalen Computers anhänge, während ich zur URL in meinem Browser gehe, hat die Site schreckliche Ladezeiten (mehr als 100-mal langsamer) als ohne das DNS-Suffix.

Ich dachte, ich könnte dieses Problem beheben, indem ich meine hosts-Datei verwende, um die Notwendigkeit einer Suche zu vermeiden. Ich habe so einen Eintrag zu meiner Hosts-Datei hinzugefügt

127.0.0.1    myMachine.MyDnsSuffix

Die Ladezeiten haben sich dadurch aber auch nach einem Neustart nicht verändert. Obwohl es nicht wichtig ist, dieses spezifische Problem zu lösen, möchte ich wirklich wissen, warum dies geschieht.

Wenn ich nslookup für die Domäne ausführe myMachine.MyDnsSuffix, wird der DNS-Server meines Netzwerks zum Ermitteln der IP-Adresse verwendet. Könnte dies mit meinem Problem zusammenhängen oder verstehe ich einfach nicht, wie nslookup funktioniert?

Antworten:


20

Ich glaube, dass nslookup verwendet wird, um einen DNS-Server selbst zu testen, anstatt Ihre HOSTS-Datei zu verwenden. http://support.microsoft.com/kb/200525 scheint darauf hinzuweisen.

Versuchen Sie es einfach mit einem einfachen Ping. Hat ping myMachine.MyDnsSuffixEntschlossenheit auf die Loopback - Adresse , die Sie in Ihrer HOSTS - Datei angegeben haben?


Sie haben einen guten Punkt gemacht nslookup. Ich habe gerade versucht, das Ping-Signal zu senden, myMachine.MyDnsSuffixund es wurde auf meine IP- 127.0.0.1Adresse im Netzwerk aufgelöst, die nicht in meiner HOSTS-Datei angegeben ist.
Dan Herbert

Was ist dein Betriebssystem? Ich denke, Windows7 und möglicherweise Vista hat einige seltsame UAC-Schutzfunktionen für die HOSTS-Datei. Sind Sie sicher, dass Ihre Änderungen ordnungsgemäß gespeichert werden?
Christopher Karel

Mein Betriebssystem ist Windows XP. Die Änderungen werden anscheinend ordnungsgemäß gespeichert.
Dan Herbert

Hmm ... am Anfang dieses HOSTS-Eintrags befindet sich keine Raute, oder? (das würde es zu einem Kommentar machen) Und Sie sind sicher, es ist in C: \ Windows \ System32 \ drivers \ etc \ hosts? Können Sie dort einen Dummy-Eintrag hinzufügen und sehen, ob sich das so auflöst, wie Sie es angegeben haben?
Christopher Karel

3
Oh, und vergessen Sie nicht, Ihren Namenscache zu leeren. ipconfig /flushdns. Und die NETBIOS - Cache zu: nbtstat -R. (Groß- und Kleinschreibung in Windows - WTF, warum?!?)
Christopher Karel

8

DNS-Lookups verwenden keine Hosts-Datei. Je.


2
@BartDeVos nein, es ist nicht falsch. Eine generische Host- Suche (dh gethostbyname()kann über die Hosts-Datei oder über DNS erfolgen, aber eine DNS-spezifische Suche (wie von durchgeführt nslookup) verwendet die Hosts-Datei nicht.
Alnitak

Das heißt, gethostinfo / getaddrinfo (die modernen Versionen von gethostbyname) sind POSIX und nicht unbedingt das, was Windows verwendet.
21.

2

OK, ganz neuer Ansatz. Lassen Sie uns Ihren IP- und NETBIOS-Cache leeren. ipconfig /flushdnsund nbtstat -R. Dann zünde einen Packet Sniffer wie Wireshark an und pinge, während er läuft.

Anhand der Paketerfassung möchten wir sehen, ob A) eine DNS-Anforderung ausgeht und wenn ja, welchen Namen sie anfordert. B) Wenn eine NETBIOS-Anfrage ausgeht. Möglicherweise wird dieser Name über NETBIOS anstelle des richtigen DNS aufgelöst.

Wenn keine der oben genannten Meldungen angezeigt wird, obwohl Sie den Cache geleert haben, wird der Name wahrscheinlich von Hosts oder lmhosts abgerufen.


1

Einige Leute in Webforen behaupten, dass das Erstellen einer neuen Hostdatei und der Neustart des DNS-Client-Dienstes das Problem beheben. Ich bin mir jedoch nicht sicher, warum dies funktionieren würde, wenn Sie bereits einen Neustart versucht hätten.

Mir ist klar, dass dies ein Longshot ist, aber es gibt keine Microsoft-bezogenen Wörter wie MSDN, Microsoft oder MSN im Hosts-Dateieintrag. Microsoft hat dnsapi.dll geschrieben, um Host-Dateieinträge zu ignorieren, die bestimmten Namen entsprechen. Wenn ich beispielsweise den folgenden Eintrag hinzufüge, überspringt Windows diesen und löst beide Hostnamen im Eintrag mithilfe von DNS auf:

127.0.0.1 www.microsoft.com www.mysite.com

Ich habe keine Microsoft-bezogenen Inhalte in meiner HOSTS-Datei. Ich habe nur wenige interne Testdomains zugewiesen. Meine HOSTS-Datei ist ziemlich einfach.
Dan Herbert

Hmm, interessant. Ich wusste, dass sie MS-Domänen fest codiert haben, um die HOSTSDatei zu ignorieren , aber auch die Nicht-MS-Domäne wird ignoriert, wenn sie einen Eintrag mit einer MS-Domäne teilt. Das ist nur eine schlechte Programmierung. Dies ist auf jeden Fall zu beachten, wenn eine HOSTSDatei „verkleinert“ wird.
Synetech

0

Wenn Sie den vollständigen DNS-Namen verwenden, versucht Ihr Browser, Ihren Proxyserver zu durchlaufen - klicken Sie auf IE .

Die Reihenfolge der Hosts-Datei oder der Namensauflösung hat nichts mit diesem Problem zu tun, und die eiternde Wunde auf der Rückseite der Menschheit, die die Hosts-Datei ist, sollte zurückgenommen und geräuschvoll erschossen werden.


Ich bin jedoch nicht mit einem Proxy verbunden.
Dan Herbert

1
@mh: Ich stimme Ihnen zu, wenn es um die Aufnahme von Hosts geht, sofern Root-Server mir erlauben, Datensätze hinzuzufügen, zu entfernen oder zu bearbeiten.
Ian Boyd

0

http://geekswithblogs.net/JanS/archive/2009/06/17/beware-of-spacing-in-windows7-hosts-file.aspx

Dies scheint die eigentliche Ursache zu sein. Überlassen Sie es Microsoft, eine 25 Jahre alte Konvention plötzlich und ohne Vorwarnung zu ignorieren.


2
Bitte geben Sie die Antwort / den Grund in Ihrer Antwort an. Es ist viel schöner als nur ein Link.
Jacob

Hier ist der wesentliche Teil der verlinkten URL. Es schien jedoch nichts zu funktionieren. Bis ich einige andere Beispiel-Hosts-Dateien sah, die als <IP-Adresse> <einzelnes Leerzeichen> <Wert> formatiert waren
Tun

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.