Warum ignorieren Browser /etc/hosts hinter einem SOCKS-Proxy?

Mein MacBook im Büro hat keinen Internetzugang. Also habe ich einen sofortigen SOCKS-Proxy über SSH eingerichtet, um im Internet zu surfen.

Wenn ich jedoch versuche, einen Eintrag zu hinzuzufügen /etc/hosts, geht der Browser nicht auf die erwartete Seite ...

Das WLAN meines MacBook ist ausgeschaltet und mit dem Firmen-LAN verbunden:

 IP address:  192.168.8.250
 Subnet mask: 255.255.255.0
 Router:      192.168.8.1
 DNS server:  8.8.8.8

Standardmäßig gibt es keinen Internetzugang.

Es gibt eine Linux-Entwicklungsbox (192.168.12.128), die Zugriff auf das Internet hat, also richte ich einen sofortigen SOCKS-Proxy ein, um Internetzugang für mein MacBook zu erhalten:

 ssh -fND localhost:30000 ohho@192.168.12.128

Dann in den Systemeinstellungen meines MacBook > Netzwerk > Proxys

 (Enable) SOCKS Proxy
 SOCKS Proxy sever: 127.0.0.1:30000
 Bypass proxy settings for these Hosts & Domains:
   *.local, 169.254/16, 127.0.0.1

Jetzt kann ich im Internet surfen, soweit so gut.

Für die Entwicklung habe ich einige Einträge /etc/hostsfür virtuelle Hosts eingerichtet:

 127.0.0.1 air.company.com

Im bash:

 $ ping air.company.com
 PING air.ohho.es (127.0.0.1): 56 data bytes
 64 bytes from 127.0.0.1: icmp_seq=0 ttl=64 time=0.046 ms

 $ curl air.company.com
 <html>OK</html>

Es sieht gut aus und curlgibt den Inhalt index.htmlgut wieder.

Wenn ich jedoch versuche, die Site zu öffnen: http://air.company.comIn den Browsern (Safari/Chrome/Firefox) gibt keiner von ihnen das Ergebnis wie zuvor zurück curl. Chrome gibt einen Fehler aus:

Diese Webseite ist nicht verfügbar Die Webseite unter http://air.company.com/ ist möglicherweise vorübergehend nicht verfügbar oder wurde dauerhaft an eine neue Webadresse verschoben. Fehler 120 (net::ERR_SOCKS_CONNECTION_FAILED): Unbekannter Fehler.

Wenn ich einen weiteren Eintrag hinzufüge in /etc/hosts:

 127.0.0.1 www.microsoft.com

Im bash:

 $ ping www.microsoft.com
 PING www.microsoft.com (127.0.0.1): 56 data bytes
 64 bytes from 127.0.0.1: icmp_seq=0 ttl=64 time=0.047 ms
 64 bytes from 127.0.0.1: icmp_seq=1 ttl=64 time=0.128 ms
 ^C
 --- www.microsoft.com ping statistics ---
 2 packets transmitted, 2 packets received, 0.0% packet loss
 round-trip min/avg/max/stddev = 0.047/0.087/0.128/0.041 ms

 $ curl www.microsoft.com
 <html>OK</html>

Die Browser geben jedoch den Inhalt vom Webserver der echten Microsoft-Site zurück, anstatt den Inhalt von meinem MacBook (127.0.01). Warum?

p.s

Wenn ich den SOCKS-Proxy deaktiviere, gibt der Browser den Inhalt von 127.0.0.1 korrekt zurück.

Wenn ich das LAN-Kabel trenne, gibt der Browser den Inhalt von 127.0.0.1 korrekt zurück.

Der Informationssicherheitsbeauftragte in mir muss fragen: Gibt es einen Grund, warum Ihr Büro keinen öffentlichen Internetzugang anbietet, Mr. Snowden? ;)
Was ist, wenn Sie 127.0.0.1 nicht in den Bypass stecken? Es ist immer noch localhost und sollte den Proxy sowieso nicht verwenden. Vielleicht ist es die Bypass-Funktion, die die Browser zum Stolpern bringt.
Es ist nur dumm von Microsoft, dass die Datei nur ohne Proxy verwendet wird.

Antworten (1)

Ihr Browser fragt den SOCKS-Proxy nach den Sites, er stellt keine direkte Verbindung her. Daher funktioniert das Einfügen der IP-Adresse in die Ausnahmeliste nicht, da Ihr Computer die Suche von air.company.com nach 127.0.0.1 nicht durchführt. Der SOCKS-Proxy ist.

Um dies zu vermeiden, platzieren Sie den vollständigen Domänennamen dessen, auf das Sie lokal zugreifen, in der Ausnahmeliste unter Systemeinstellungen > Netzwerk > Proxys.

Für air.company.com würden Sie also eine Ausnahmeliste (aus Ihrem obigen Beispiel) sehen von:

  *.local, 169.254/16, 127.0.0.1, air.company.com

Ihr Computer verbindet sich nun direkt mit air.company.com und verwendet daher /etc/hosts.

Es ist nur dumm von Microsoft, dass die Datei nur ohne Proxy verwendet wird.