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.