2013-06-19 52 views
5

MacBook của tôi trong văn phòng không có truy cập internet. Vì vậy, tôi thiết lập một SOCKS Proxy ngay lập tức trên SSH để truy cập stackoverflow. Tôi chủ yếu sử dụng MacBook của tôi để phát triển vì vậy tôi dựa vào /etc/hosts và máy chủ ảo để kiểm tra một số trang web cục bộ.Tại sao tập lệnh của tôi theo sau/etc/hosts nhưng các trình duyệt thì không, khi có proxy SOCKS?

Tuy nhiên, khi tôi cố gắng thêm một mục để /etc/hosts, trình duyệt không đi đến chỗ tôi mong đợi ... WIFI

My MacBook bị tắt và được kết nối với các công ty LAN:

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

Được mặc định, không có truy cập internet.

Có một hộp phát triển Linux (192.168.12.128) trong đó có quyền truy cập vào internet, vì vậy tôi thiết lập một proxy SOCKS ngay lập tức truy cập internet cho MacBook của tôi:

ssh -fND localhost:30000 [email protected] 

Sau đó, trong hệ thống MacBook của tôi Preferences > Mạng> 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 

Bây giờ tôi có thể lướt web, cho đến nay rất tốt.

Đối với phát triển, tôi thiết lập một vài mục trong /etc/hosts cho mục đích host ảo:

127.0.0.1 air.company.com 

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

Nó có vẻ tốt và curl trả về nội dung của index.html độc đáo.

Tuy nhiên, nếu tôi cố gắng mở trang web: http://air.company.com trong trình duyệt (Safari/Chrome/Firefox), không có kết quả nào trong số đó trả về kết quả như curl. Chrome cung cấp cho một lỗi:

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.

Nếu tôi thêm một mục trong /etc/hosts:

127.0.0.1 www.microsoft.com 

Trong bash, có vẻ 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> 

Tôi cũng thử sử dụng kịch bản 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 

Sản lượng có vẻ OK:

$ bundle exec ruby openweb.rb 
127.0.0.1 

<html>OK</html> 

Tuy nhiên, khi tôi sử dụng các trình duyệt, các trình duyệt trả về nội dung từ máy chủ web của Microsoft trang web thực, thay vì các nội dung từ MacBook của tôi (127.0.01) . Tại sao?

p.s .:

Nếu tôi tắt proxy SOCKS, trình duyệt sẽ trả lại nội dung từ 127.0.0.1 một cách chính xác.

Nếu tôi ngắt kết nối cáp LAN, trình duyệt sẽ trả lại nội dung từ 127.0.0.1 một cách chính xác.

Trả lời

1

Với SOCKSv4a và SOCKSv5 khách hàng đang thực sự có thể có máy chủ kết nối đến một tên miền tên, không chỉ đến một địa chỉ (http://en.wikipedia.org/wiki/SOCKS#SOCKS4a).

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

Và kể từ khi SOCKS máy chủ truy cập internet, bạn sẽ nhìn thấy trang web của Microsoft, và không phải phiên bản địa phương của bạn.


Ý tưởng:

  • Nếu bạn có thể thay đổi phiên bản của giao thức SOCKS lên phiên bản 4, cần làm việc.
  • Có lẽ tốt hơn về lâu dài: Tắt DNS từ xa trong trình duyệt, ít nhất Firefox hỗ trợ cài đặt này: Network.proxy.socks.remote_dns.
1

Đó là sự cố DNS. Hãy thử giải quyết các tên cục bộ.

0

Tôi cũng gặp phải vấn đề này và giải quyết bằng cách chỉ cần thay đổi /etc/host nhập

Chỉ cần loại bỏ:

127.0.0.1 www.microsoft.com

và thêm:

192.168.8.250 www.microsoft.com

inshort thêm địa chỉ máy chủ ip của bạn thay vì loopbackip