Host-Datei leitet nicht um


1

Ich habe mit meiner Windows 10-Hostdatei herumgespielt, um ein besseres Verständnis der Funktionsweise zu erhalten, und es ist mir bisher nicht gelungen, eine Adresse umzuleiten.

Ich versuche, yahoo.com oder www.yahoo.com auf 216.58.209.36 (www.google.com) umzuleiten.

216.58.209.36  yahoo.com
216.58.209.36  www.yahoo.com

Aber wenn ich versuche, es in meinen Browser zu laden, sagt es mir

Diese Seite ist nicht erreichbar

www.yahoo.com hat zu lange gebraucht, um zu antworten.

Weiß jemand, was ich falsch mache?
Ich habe auch versucht, meinen Browserverlauf zu löschen.

Antworten:


3

Ich glaube, Sie verstehen den Zweck der hosts.txtAkte 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/hostsauf Unix-ähnlichen Systemen) bietet eine Zuordnung zwischen einem Hostnamen und einer IP-Adresse. Der Systemnamensauflöser wird dann normalerweise so konfiguriert, dass hosts.txtEinträge gegenüber DNS bevorzugt werden , sodass hosts.txtdiese 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:

  1. Der Benutzer gibt eine URL in das Adressfeld des Browsers ein oder löst auf andere Weise eine Webanforderung aus
  2. Der Browser sucht den Hostnamen von der URL bis zu einer IP-Adresse und stellt eine Verbindung zu dieser IP-Adresse her
  3. 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
  4. Der Browser weist den Remote-Webserver an, den Pfad /something/whatevervom Hostnamen über die URL anzugeben
  5. Der Remotewebserver antwortet mit der angeforderten Ressource oder zeigt normalerweise einen Fehler an, wenn die Anforderung aus irgendeinem Grund nicht erfüllt werden kann
  6. 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.txtnie 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.comfü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.100für die IP-Adresse und test.example.comfü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.txtEintrag 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 1Ursachen 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 nslookupsieht 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 hostoder dig.)


0

Ihre hosts-Datei leitet yahoo.com wie vorgesehen auf 216.58.209.36 um. Der Grund, warum es nicht so funktioniert, wie Sie es beabsichtigt haben, ist wahrscheinlich, dass der Webserver hinter 216.58.209.36 nach einer Site namens yahoo.com sucht. Da der Server diese Site jedoch nicht hostet, wird sie nicht gefunden und teilt Ihnen die mit Seite kann nicht erreicht werden.

Es ist so, als würde man die falsche Nummer wählen. Wenn Sie Alice anrufen und nach Bob fragen, wird sie wahrscheinlich antworten "Es gibt niemanden hier mit diesem Namen".


0

Du hast nichts falsch gemacht. Führen Sie an einer Eingabeaufforderung Folgendes aus, um sich zu vergewissern, dass Ihre Host-Dateieinträge den beabsichtigten Effekt haben:

ping www.yahoo.com

... und beachten Sie, dass die IP-Adresse, die als Ping gesendet wird, diejenige ist, die Sie in Ihrer hostsDatei angegeben haben.

Wie in der Antwort von FastEthernet erwähnt, kann der Zugriff auf einen Webserver über einen Hostnamen, der dem Server nicht zugewiesen ist, zu unerwartetem Verhalten führen. Es ist jedoch besser, den obigen Ping-Befehl zu verwenden, um zu überprüfen, ob der Hostname Ihrer benutzerdefinierten IP-Adresse zugeordnet ist, anstatt sich darauf zu verlassen, dass die Site in einem Browser geladen werden kann.


Nicht alle Websites im Internet antworten auf ICMP-Echoanforderungen. Viele der Großen tun es wahrscheinlich. In diesem Fall gibt es überhaupt keinen Grund, es zu verwenden ping. nslookupist wahrscheinlich relevanter, da Sie nur an der IP-Adresszuordnung für den Namen interessiert sind.
ein Lebenslauf

@ MichaelKjörling pingzeigt weiterhin die IP-Adresse des Ziels an, unabhängig davon, ob es antwortet oder nicht. Sieht nslookupauch nicht in der Hosts-Datei nach, da der Nameserver direkt gefragt wird.
FastEthernet

1
@ MichaelKjörling Es ist nicht erforderlich, dass die Site auf die Ping-Anforderungen reagiert, damit dieser Test funktioniert. Und IIRC nslookup umgeht die hosts-Datei.
Twisty Imitator

@FastEthernet Natürlich muss der Remote-Host nicht auf ICMP-Echoanfragen reagieren, um eine Namenssuche durchzuführen. Aber warum sollten die Pipes unnötig verstopft werden?
ein Lebenslauf

0

Wahrscheinlich haben Sie mit Sicherheitsmaßnahmen allerlei Probleme, da die Google-Website nicht das richtige Zertifikat enthält, um ernsthaft als Yahoo eingestuft zu werden.

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.