2013-06-19 5 views
5

Mein MacBook im Büro hat keinen Internetzugang. Also habe ich einen Instant-SOCKS-Proxy über SSH eingerichtet, um auf stackoverflow zuzugreifen. Ich benutze hauptsächlich mein MacBook für die Entwicklung, so verlasse ich mich auf /etc/hosts und virtuelle Hosts, um einige Sites lokal zu testen.Warum folgt mein Skript/etc/hosts, aber die Browser nicht, wenn es einen SOCKS-Proxy gibt?

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

Mein MacBook WIFI ist aus und ist mit dem Unternehmens-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 ist kein Internetzugang verfügbar.

Es gibt ein Linux-Entwicklungsfeld (192.168.12.128), die den Zugang zum Internet hat, so dass ich einen Augenblick SOCKS-Proxy bis zu dem Internet-Zugang für mein MacBook zu gewinnen:

ssh -fND localhost:30000 [email protected] 

Da ist in meiner MacBook Systemeinstellung > Netzwerk> Proxies

(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 Web surfen, so weit so gut.

Für die Entwicklung, habe ich einige Einträge in /etc/hosts für virtuelle Hosts Zweck up:

127.0.0.1 air.company.com 

In 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 curl gibt den Inhalt des index.html schön.

Allerdings, wenn ich versuche, die Website zu öffnen: http://air.company.com in den Browsern (Safari/Chrome/Firefox), keiner von ihnen gibt das Ergebnis wie curl hat. Chrome einen Fehler geben:

This webpage is not available The webpage at http://air.company.com/ might be temporarily down or it may have moved permanently to a new web address. Error 120 (net::ERR_SOCKS_CONNECTION_FAILED): Unknown error.

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

127.0.0.1 www.microsoft.com 

In bash, es sieht nicht gut aus:

$ 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> 

Ich versuche auch Ruby-Skript verwenden:

require 'socket' 
require 'curl' 

ip = IPSocket.getaddress('www.microsoft.com') 
puts ip 

puts 

http = Curl.get("http://www.microsoft.com/") 
puts http.body_str 

Die Ausgabe sieht OK:

$ bundle exec ruby openweb.rb 
127.0.0.1 

<html>OK</html> 

Allerdings, wenn ich den Browser verwenden, der Browser die Inhalte aus dem Web-Server der realen Microsoft-Website, statt den Inhalts von meinem MacBook (127.0.01) zurückkehrt . Warum?

P. S .:

Wenn ich den SOCKS-Proxy zu deaktivieren, der Browser korrekt den Inhalt von 127.0.0.1 zurückgibt.

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

Antwort

1

Mit SOCKSv4a und SOCKSv5 Kunden sind tatsächlich in der Lage, den Server haben verbinden zu einer Domäne Name, nicht nur zu einer Adresse (http://en.wikipedia.org/wiki/SOCKS#SOCKS4a).

             ---------- 
                 - DNS - 
                 ┐--------- 
                . 
                . 
----------------     ----------------.- 
-    ====================-    - 
- Browser  = CON microsoft.com - SOCKS Server - 
-    ====================-    - 
----------------     ------------------ 

Und da die SOCKS-Server Internetzugang hat, können Sie die Website von Microsoft sehen können, und nicht die lokale Version.


Ideen:

  • Wenn Sie die Version des SOCKS-Protokoll Version 4, es funktionieren sollte in der Lage zu ändern.
  • Wahrscheinlich auf lange Sicht besser: Deaktivieren Sie Remote-DNS im Browser, zumindest unterstützt Firefox diese Einstellung: Network.proxy.socks.remote_dns.
1

Es ist ein DNS-Problem. Versuchen Sie, die Namen lokal aufzulösen.

0

begegne ich auch dieses Problem und gelöst, indem nur die Änderung /etc/host Eintrag

Entfernen Sie einfach:

127.0.0.1 www.microsoft.com

und fügen:

192.168.8.250 www.microsoft.com

inshort Ihrem Server ip Adresse hinzufügen anstelle von loopbackip

Verwandte Themen