Ich glaube, Sie verstehen den Zweck der hosts.txt
Akte falsch .
Wenn Sie sich nur um TL; DR (zu lang; nicht gelesen) kümmern, scrollen Sie zum Ende der Antwort. Das Folgende ist eine Erklärung dessen, was vor sich geht, damit Sie verstehen, warum Sie die Ergebnisse erzielen, die Sie erzielen.
hosts.txt
(in der Regel /etc/hosts
auf Unix-ähnlichen Systemen) bietet eine Zuordnung zwischen einem Hostnamen und einer IP-Adresse. Der Systemnamensauflöser wird dann normalerweise so konfiguriert, dass hosts.txt
Einträge gegenüber DNS bevorzugt werden , sodass hosts.txt
diese als DNS-Überschreibung verwendet werden können. Dies ist besonders in Fällen nützlich, in denen lokale Namen nicht in DNS vorhanden sind, Sie jedoch nicht über genügend Hosts in Ihrem Netzwerk verfügen, um die Einrichtung eines lokalen, autorisierenden DNS-Servers mit allen dazugehörigen Komponenten zu rechtfertigen.
Das moderne Surfen im Internet beruht jedoch weit mehr als nur auf der Zuordnung von Namen zu IP-Adressen.
Der typische Prozess sieht ungefähr so aus:
- Der Benutzer gibt eine URL in das Adressfeld des Browsers ein oder löst auf andere Weise eine Webanforderung aus
- Der Browser sucht den Hostnamen von der URL bis zu einer IP-Adresse und stellt eine Verbindung zu dieser IP-Adresse her
- Der Browser richtet eine HTTPS-Sitzung ein, wenn die URL eine
https://
URL ist
- Der Browser wird abgebrochen, wenn das vorgelegte Zertifikat nicht mit dem Hostnamen in der URL übereinstimmt
- Der Browser weist den Remote-Webserver an, den Pfad
/something/whatever
vom Hostnamen über die URL anzugeben
- Der Remotewebserver antwortet mit der angeforderten Ressource oder zeigt normalerweise einen Fehler an, wenn die Anforderung aus irgendeinem Grund nicht erfüllt werden kann
- Der Browser interpretiert die vom Remote-Webserver empfangenen Daten und zeigt sie an oder verarbeitet sie
- Wenn es sich bei den empfangenen Daten um eine Umleitung handelt, beginnt der Prozess stattdessen mit Schritt 1 mit dieser URL
Durch die Bearbeitung hosts.txt
ändern Sie nur das, was in Schritt 2 oben passiert. Das Surfen im Internet ist viel komplexer als nur eine Namenssuche!
Beachten Sie auch, dass Webbrowser manchmal ihre eigene Namenssuchfunktion implementieren , anstatt sie auf den vom Betriebssystem bereitgestellten Resolver zu übertragen. In einem solchen Fall wird auch in Schritt 2 nicht unbedingt das gewünschte Ergebnis erzielt, da der Pfad für die normale Namensdelegierung vom DNS-Stamm aus sehr gut befolgt werden kann, sodass Sie die gleiche Antwort erhalten wie ansonsten. in diesem Fall wird hosts.txt
nie konsultiert!
Insbesondere erwartet der Browser weiterhin ein Zertifikat für den bestimmten Hostnamen in der URL in Schritt 3. und es teilt dem entfernten Webserver den Hostnamen mit, den Sie ihm in Schritt 4 gegeben haben.
Da es unwahrscheinlich ist, dass die Webserver von Google www.yahoo.com
für die Bereitstellung über HTTP oder HTTPS eingerichtet werden, schlägt dies spätestens zwischen Schritt 4 und 5 fehl (der Remotewebserver kann die angeforderte Ressource nicht bereitstellen).
Ich habe keine gute Erklärung dafür, warum Sie eine Zeitüberschreitung anstatt einer Webserver-Fehlerantwort erhalten, aber die Fehlerursache hängt größtenteils vom Remoteserver ab, und ich vermute, dass es durchaus in seinem Recht liegt, überhaupt nicht zu antworten, wenn Sie gefragt werden Ein Gastgeber, von dem es einfach nichts weiß.
Wenn Sie nur experimentieren, müssen Sie natürlich weder Yahoo noch Google verwenden. Vielmehr gibt es Internet-IP-Adressen und Hostnamen, die speziell für Beispiel- und Dokumentationszwecke vorgesehen sind. Beispielsweise könnten Sie 192.0.2.100
für die IP-Adresse und test.example.com
für den Hostnamen verwenden, da keiner von diesen bestimmten Personen gehört. Das oder RFC 1918- Speicherplatz (10.0.0.0 bis 10.255.255.255, 172.16.0.0 bis 172.31.255.255 oder 192.168.0.0 bis 192.168.255.255), aber Sie möchten immer noch einen entsprechenden Domain-Namen, für den die reservierten gut sind.
TL; DR:
Wenn Sie sehen möchten, dass Ihr hosts.txt
Eintrag genau das tut, was er sollte, öffnen Sie eine Eingabeaufforderung und geben Sie den Befehl aus ping -n 1 www.yahoo.com
(in Ihrem Fall). Es sollte mit der von Ihnen konfigurierten IP-Adresse antworten. Die -n 1
Ursachen nur eine einzige Echo - Anforderung gesendet werden, weil alles , was wir wirklich daran interessiert sind, ist das Ergebnis der Namenssuche.
Ich würde es vorziehen nslookup www.yahoo.com
, aber anscheinend unter Windows nslookup
sieht es auch nicht so aus hosts.txt
. (Unter Linux ist dies in der Regel der Fall, da der System-Resolver gefragt wird und der System-Resolver normalerweise so konfiguriert ist, dass er die Hosts-Datei abruft. Wenn Sie eine reine DNS-Suche unter Linux wünschen, verwenden Sie normalerweise host
oder dig
.)
ping
.nslookup
ist wahrscheinlich relevanter, da Sie nur an der IP-Adresszuordnung für den Namen interessiert sind.