Warum ignoriert Chrome / etc / hosts unter OS X?


27

Ich verwende OS X 10.8.5 und Chrome 30.

Ich 127.0.0.1 youtube.comhabe meine /etc/hostsDatei so ergänzt, dass sie jetzt Folgendes enthält:

# Host Database
#
# localhost is used to configure the loopback interface
# when the system is booting.  Do not change this entry.
##
127.0.0.1       localhost
255.255.255.255 broadcasthost
::1             localhost
fe80::1%lo0     localhost

127.0.0.1       youtube.com

Wenn ich den Befehl ausführe, traceroute youtube.comerhalte ich die erwarteten Ergebnisse (youtube.com wurde in 127.0.0.1 aufgelöst):

traceroute to youtube.com (127.0.0.1), 64 hops max, 52 byte packets
1  localhost (127.0.0.1)  0.272 ms  0.118 ms  0.063 ms

Wenn ich jedoch in Chrome youtube.com eingebe, stellt mein Browser keine Verbindung mit 127.0.0.1 her, sondern mit der "normalen" IP-Adresse für YouTube. Ich hätte erwartet, dass Chrome youtube.com auf 127.0.0.1 auflöst.

Ich habe Chrome so konfiguriert, dass die Proxy-Einstellungen meines Systems verwendet werden. Wenn ich in OS X zu Systemeinstellungen> Netzwerk> "Erweitert ..."> Proxies gehe, habe ich "Auto Proxy Discovery" ausgewählt.

Warum ignoriert Chrome meine /etc/hostsDatei anscheinend ?


4
Sind Sie sicher, dass es versucht, youtube.com und nicht www.youtube.com aufzulösen? Es könnte auch sein, dass youtube.com eine 301-Weiterleitung hat, die vom Browser zwischengespeichert wird, so dass er nicht einmal versucht, youtube.com zu kontaktieren (nicht auf meinem Computer zu überprüfen).
user2313067

@ user2313067 Danke! Ich habe / etc / hosts überarbeitet, um auch eine Zeile für www.youtube.com in 127.0.0.1 aufzulösen, und das hat den Trick getan.
Jonathan

@ user2313067 Möglicherweise möchten Sie Ihren Kommentar als Antwort veröffentlichen.
Blacklight Shining


Sie verwenden wahrscheinlich ein VPN oder eine Chrome-Erweiterung, die Ihre Verbindung in irgendeiner
Weise

Antworten:


8

Versuchen Sie, www.youtube.comzu Ihrer Hosts-Datei hinzuzufügen . youtube.comwird permanent weitergeleitet zu www.youtube.com, so lange Sie einmal besucht haben youtube.com, speichert Ihr Browser diese Antwort im Cache und leitet Sie weiter zu www.youtube.com. Diese Adresse befindet sich nicht in Ihrer Hosts-Datei. Daher wird sie von Chrome logisch korrekt aufgelöst.



1
Das Hinzufügen wwwfunktioniert bei mir nicht. Auch nach dem Löschen aller Daten meines Browsers und dem Leeren meines DNS. Vielleicht ist dies eine in Chrome eingebrannte Phishing-Schutzmaßnahme?
f1lt3r

Hinzufügen sowohl nackt als auch www. Versionen in der Hosts-Datei funktionierten für mich. Ich habe auch chrome: // flags / # enable-new-preconnect in Chrome
deaktiviert

10

Google Chrome ignoriert Ihre Hosts-Datei und führt tatsächliche DNS-Suchvorgänge durch (obwohl andere denken, dass dies /etc/hostsnicht Teil von DNS ist, sondern das, was vor DNS verwendet wurde). Google Chrome sollte zwar die Einträge in der Hostdatei berücksichtigen, dies ist jedoch nicht der Fall. Die Hosts-Datei, die eine Alternative zu DNS darstellt, wird gelesen, wenn kein DNS-Server verfügbar ist (z. B. wenn Sie Ihre Netzwerkverbindung deaktiviert haben).

Sie können dies testen, indem Sie "127.0.0.1 foobar.dev" zu Ihrer Hosts-Datei hinzufügen und dann Wireshark aktivieren und auf Ihrer Netzwerkschnittstelle beobachten. Öffne Chrome und gib http://foobar.dev/deine Adressleiste ein und los geht's. In Wireshark wird eine DNS-Abfrage angezeigt, etwa:

2   1.668727000 192.168.32.104  8.8.8.8 DNS 75  Standard query 0x663a  A foobar.dev

FWIW, Google DNS gibt 127.0.53.53 für foobar.dev zurück.

3   1.706484000 8.8.8.8 192.168.32.104  DNS 91  Standard query response 0x663a  A 127.0.53.53

Eine Problemumgehung wäre die Verwendung von HostAdmin , einer älteren Chrome-Erweiterung, mit der Chrome die Hosts verwendet. Neuere Versionen von Chrome (> 38) unterstützen dies jedoch nicht mehr.


Chrome ignoriert /etc/hostsDateien unter OS X nicht. Zumindest nicht Chrome v43 unter OS X 10.10.3.
Petr Peller

Wireshark erzählt eine andere Geschichte.
Karl Wilbur

1
Die Tatsache, dass Chrome auch das Google-DNS abfragt, bedeutet möglicherweise nicht, dass / etc / hosts ignoriert wird. Dies kann einfach zu Optimierungs- / Protokollierungs- / Spionagezwecken erfolgen. Ich verwende die Datei / etc / hosts sehr oft unter OS X und habe keine Probleme mit Chrome.
Petr Peller

3
Wenn meine Host-Datei '127.0.0.1 foo.dev' enthält und Chrome foo.dev magisch in 127.0.53.53 auflöst, wird meine Host-Datei IGNORIERT.
Karl Wilbur

1
Ja, aber mit Wi - Fi auf, Chrome sollten die Hosts - Datei verwenden zuerst , bevor Sie einen DNS - Lookup. Es tut nicht. Das ist das Problem.
Karl Wilbur

5

Ich habe dieses Problem folgendermaßen behoben: Deaktivieren Sie in den erweiterten Einstellungen von Chrome die Option "Schützen Sie Sie und Ihr Gerät vor gefährlichen Websites".

Der integrierte "Schutz" von Chrome umfasst das direkte Überprüfen einer Domain anhand ihres eigenen DNS und das Umgehen bestimmter Arten von Hosteinträgen, die als "verdächtig" eingestuft werden, oder von Einträgen für Websites, die überschrieben werden. Dies bedeutet, dass die meisten benutzerdefinierten Hosteinträge ignoriert werden. Insbesondere * .dev- und * .local-Einträge, die für die Entwicklung verwendet werden.

Wenn Sie dies deaktivieren, ist das Problem in 100% der Fälle für mich behoben. Das hat mich monatelang wütend gemacht, als ich lokale Entwicklung betrieben habe, und ich konnte die Antwort nirgendwo finden, alle sagten nur, es könne nicht passieren. Es stellte sich heraus, dass es sich bei den erweiterten Einstellungen um ein einfaches Umschalten handelte. Hoffe das hilft dir auch, Prost.


Danke, ich wusste, dass es letzte Woche funktioniert hat. Ich habe die Chrome-Optionen vor einigen Tagen auf Standard gesetzt und es hat nicht mehr funktioniert. Es funktionierte!
98percentmonkey

Danke, ich wusste, dass es letzte Woche funktioniert hat. Ich habe die Chrome-Optionen vor einigen Tagen auf Standard gesetzt und es hat nicht mehr funktioniert. Es funktionierte! Es heißt "Safe Browsing" in neueren Versionen
98percentmonkey

0

Localhost ist eine Konvention für die 127.0.0.1-Adresse, die eine interne Adresse für TCP / IP ist. Chrome verwendet jedoch nicht die Datei / etc / hosts, um die Adresse aufzulösen. Es wird ein DNS-Server verwendet. Daher stammt keine Adresse von Ihnen / etc / hosts, aber von einem DNS-Server, wenn er / etc / hosts verwendet, muss er den gesamten WWW-Hostnamen enthalten, um eine Adresse aufzulösen.

Hoffe das hilft.


1
-1. /etc/hostsÜberschreibt alle DNS-Server. Ja, wenn Sie nur /etc/hosts DNS verwenden , müssen alle Domänennamen enthalten sein. Die meisten Setups enthalten jedoch auch DNS-Server. Wenn Chrome das Betriebssystem lediglich auffordert, den Domain-Namen wie gewünscht aufzulösen , /etc/hostswird dies zuerst überprüft. Wenn der Name keinen Eintrag enthält, wird eine DNS-Abfrage gesendet.
Blacklight Shining

/etc/hosts sollte überschreiben und DNS-Anfrage, aber dies ist nicht der Fall mit Google Chrome. Es führt seine eigenen DNS-Suchvorgänge durch, ungeachtet dessen, was möglicherweise in der Hosts-Datei enthalten ist. Dies ist leicht nachweisbar. Dies ist speziell ein Problem für die lokale Entwicklung mit der .devTLD.
Karl Wilbur

0

Ich bin auf diese Frage gestoßen, als ich dachte, dass die hostsDatei unter Chrome für MacOS für die .devgefälschten Domains, die ich für die Entwicklung verwende, nicht funktioniert hat .

Tatsächlich funktioniert es zumindest auf Chrome 77.

Das Problem ist nicht, dass die Domain nicht gefunden wird, sondern dass alle .dev automatisch zu https umgeleitet werden :

Diese Seite ist nicht erreichbar - Chrome

Wenn Sie auf den Domainnamen doppelklicken, sehen Sie den Täter:

https

Nachdem Google unsere .devals Lösung gebrochen hat , schlägt der obige Link vor, zur Entwicklung auf eine andere TLD wie .testoder zu wechseln .localhost.

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.