2013-06-19 7 views
5

オフィスの私のMacBookはインターネットにアクセスできない。だから私はスタックオーバーフローをアクセスするSSHを介してインスタントSOCKSプロキシを設定します。私は主に開発用に私のMacBookを使用していますので、/etc/hostsと仮想ホストを使っていくつかのサイトをローカルでテストしています。SOCKSプロキシがある場合、私のスクリプトは/ etc/hostsに続いてブラウザは表示されないのはなぜですか?

しかし、私は/etc/hostsにエントリを追加しようとすると、ブラウザは、私が予想サイトに行かない...

私のMacBookのWIFIがオフで、社内LANに接続されている:

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

デフォルトでは、インターネットにアクセスできません。

あり、インターネットへのアクセスを持っているLinux開発ボックス(192.168.12.128)は、私は私のMacBookのためのインターネットアクセスを得るためにインスタントSOCKSプロキシを設定します。

ssh -fND localhost:30000 [email protected] 

そして、私のMacBookのシステム環境設定で>ネットワーク>プロキシ

(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 

今、私はウェブをサーフィンすることができます。

は、開発のために、私は、仮想ホストの目的のために/etc/hostsにいくつかの項目を設定します

127.0.0.1 air.company.com 

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> 

それはよさそうだとcurlがうまくindex.htmlの内容を返します。

ただし、ブラウザ(Safari/Chrome/Firefox)でサイト:http://air.company.comを開こうとすると、curlのような結果は返されません。 Chromeはエラーを与える:私は/etc/hosts内の別のエントリを追加した場合

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.

bash

127.0.0.1 www.microsoft.com 

を、それがOKになります。

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

私はまた、Rubyスクリプトを使用してみてください:

require 'socket' 
require 'curl' 

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

puts 

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

出力はOKになります。

$ bundle exec ruby openweb.rb 
127.0.0.1 

<html>OK</html> 

をしかし、私はブラウザを使用する場合、ブラウザではなく、私のMacBookからのコンテンツの、リアル Microsoftのサイトのウェブサーバからコンテンツを返す(127.0.01)を。どうして?

p.s:

私はSOCKSプロキシを無効にした場合、ブラウザが正しく127.0.0.1からコンテンツを返します。

LANケーブルを取り外すと、ブラウザは127.0.0.1の内容を正しく返します。

答えて

1

は、実際に接続し、サーバを持つことができますアドレスの名前に、アドレス(http://en.wikipedia.org/wiki/SOCKS#SOCKS4a)だけでなく、

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

そして、SOCKSサーバーインターネットアクセスを持っているので、あなたは、マイクロソフトのサイトではなく、あなたのローカルバージョンを見ることができます。


アイデア:

  • バージョン4にSOCKSプロトコルのバージョンを変更することができるならば、それが動作するはずです。
  • 長期的にはおそらく良いでしょう:ブラウザでリモートDNSを無効にする、少なくともFirefoxはこの設定をサポートしています:Network.proxy.socks.remote_dns
1

これはDNSの問題です。名前をローカルで解決してみてください。

0

私も、この問題が発生し、ちょうど取り除くだけ/etc/hostエントリを変更

によって解決:inshortサーバーipアドレスを追加

192.168.8.250 www.microsoft.com

127.0.0.1 www.microsoft.com

をして追加しますの代わりにip

関連する問題