Wie kommt es, dass die Umleitung von Hosts-Dateien fehlschlägt?


12

Ich versuche, google.com zum Spaß und Lernen mit dieser / etc / hosts-Datei auf meinem Mac auf meinen lokalen Computer umzuleiten.

127.0.0.1 www.google.com

Www.google.com wird jedoch weiterhin der Google-Startseite zugeordnet, wenn ich sie in Chrome auf meinem Mac besuche. Warum?

Im Grunde ist das alles, was ich getan habe:

  1. Geben Sie das sudo vim /etc/hostsTerminal ein.
  2. 127.0.0.1 www.google.comIn die Hosts-Datei eingegeben .
  3. Gespeichert und vim beendet.

Antworten:


10

Die hostsDatei funktioniert nicht so. Sie können damit nur Hostnamen IP-Adressen zuordnen, nicht localhost.

Für Ihren Fall würden Sie beispielsweise 127.0.0.1 www.google.comwww.google.com auf 127.0.0.1 zuordnen.

Wenn Sie einer einzelnen IP mehr Hostnamen zuordnen möchten, fügen Sie diese Hostnamen einfach in derselben Zeile hinzu, z 127.0.0.1 www.a.com www.b.com.


1
Vielen Dank. Ich habe gerade die Datei / etc / hosts auf meinem Mac in geändert 127.0.0.1 www.google.com. Google.com führt jedoch weiterhin zur Google-Startseite. Muss ich etwas aktualisieren? Soll ich meinen Computer neu starten?
David Faux

Das solltest du nicht brauchen. Versuchen Sie, 127.0.0.1 google.comnach dieser Zeile (ohne das WWW) hinzuzufügen , und prüfen Sie, ob es funktioniert.
Renan

127.0.0.1 google.comfunktioniert auch nicht. Ich bin mir nicht sicher, was los ist ... Ich weiß, dass dies /etc/hostseine weiche Verbindung zu /private/etc/hostseinem Mac ist, aber ich denke, das hilft überhaupt nicht.
David Faux

1
Eine Technik: hostsOrdnet Hostnamen IP-Adressen zu, nicht umgekehrt.
Dennis

1
@Dennis, das wollte ich sagen, aber andererseits funktioniert es wirklich in beide Richtungen, wenn Sie darüber nachdenken, weil es eine Assoziation zwischen zwei Elementen schafft.
Synetech

9

Ein Webbrowser ist nicht der beste Weg, um zu überprüfen, ob Ihre hostsSyntax korrekt ist. Versuchen Sie es auszuführen

ping www.google.com

und überprüfen Sie, ob es pingt 127.0.0.1.

Der Grund, warum Chrome Ihre hostsDatei scheinbar ignoriert , ist das Zwischenspeichern:

Wenn Chrome hat bereits die IP in letzter Zeit (die Definition des in letzter Zeit höchstwahrscheinlich auf die abhängig abgefragt Zeit Live (TTL) vom DNS - Server zurückgegeben werden ), wird es Bypass die hostsDatei, da es bereits kennt die richtige IP. Dies geschieht, um das Surfen im Internet zu beschleunigen.

Gehen Sie wie folgt vor, damit Chrome den neuen Eintrag respektiert:

  1. Bearbeiten /etc/hostswie bei @Renan beschrieben.

  2. Gehe zu chrome://chrome/settings/clearBrowserData.

  3. Wählen Sie since the beginning of time.

  4. Überprüfen Sie Empty the cache, aber deaktivieren Sie alles andere.

  5. Klicken Sie Clear browsing dataund warten Sie, bis der Vorgang abgeschlossen ist.

  6. Starten Sie Chrome neu.

Chrome sollte Ihre hostsDatei jetzt respektieren .


2
Das habe ich vor langer Zeit mit IE6 gelernt. Wenn ich eine Änderung an der HOSTS-Datei vornehmen würde, während der IE noch geöffnet war, müsste ich sie speziell schließen und erneut ausführen, damit sie die Änderungen übernimmt. Dies gilt für die meisten Programme. Einige Programme (wie Chrome-Versionen aus den letzten ein oder zwei Jahren) lesen die HOSTS-Datei jedoch regelmäßig neu. Wenn Sie also eine Änderung vornehmen, warten Sie nur ein oder zwei Minuten und aktualisieren Sie sie dann (der Cache muss nicht geleert werden). (Diese Richtlinie zum erneuten Lesen ist manchmal so praktisch, aber in der Realität normalerweise ziemlich schlecht, da sie verschwenderisch ist und besonders schlecht, wenn die HOSTS-Datei groß ist.)
Synetech

@Synetech: Chrome nimmt Änderungen hostssofort auf, solange der Eintrag kein Hostname ist, der bereits zwischengespeichert ist. Ich gehe davon aus, dass hostsnur geprüft wird , ob die TTL vorbei ist. Bei großen Websites kann dies eine Weile dauern.
Dennis

Ich weiß nicht genau, wie verschiedene Versionen die HOSTS-Datei erneut lesen, aber Sie können Filemon / ProcMon verwenden, um sie in Aktion zu sehen. chrome.exeliest gelegentlich die gesamte Datei.
Synetech

2
Es gibt eine weniger brutale Möglichkeit, den DNS-Cache von Chrome zu
leeren.

@akunin: Ordentlich. Unter Chromium 25.0.1364.160 Ubuntu 12.04 ist dies nicht einmal mehr erforderlich. Ich habe eingecheckt net-internals/#dnsund der Host-Cache wird automatisch gelöscht, wenn er /etc/hostsgeändert wird.
Dennis

1

Meine Antwort ist eine Kombination der oben genannten, da ich über Fortinet SSL VPN für Ubuntu 16.04 eine Verbindung zu meinem Büro herstelle.

Als erstes musste ich meine Terminalkonsole aufrufen und den folgenden Befehl ausführen:

sudo nano /etc/resolvconf/resolv.conf.d/base

Ich habe folgendes Beispiel hinzugefügt:

searchdomain domain.local
nameserver xxx.xxx.xxx.xxx
nameserver xxx.xxx.xxx.xxx

Dann habe ich die Datei durch Drücken gespeichert CTRL-Ound Nano durch Drücken geschlossen CTRL-X.

Ich habe dann folgendes gemacht und es hat perfekt funktioniert:

Gehen Sie wie folgt vor, damit Chrome den neuen Eintrag respektiert:

Bearbeiten /etc/hostswie bei @Renan beschrieben.

  1. Gehe zu chrome://chrome/settings/clearBrowserData.
  2. Wählen Sie seit Beginn der Zeit.
  3. Aktivieren Sie "Cache leeren", deaktivieren Sie jedoch alles andere.
  4. Klicken Sie auf Browserdaten löschen und warten Sie, bis sie abgeschlossen sind.
  5. Starten Sie Chrome neu.

Chrome sollte jetzt Ihre Hosts-Datei respektieren.

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.