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.