Mój MacBook w biurze nie ma dostępu do Internetu. Dlatego ustawiłem Proxy SOCKS na SSH, aby uzyskać dostęp do stackoverflow. Używam głównie mojego MacBooka do programowania, więc polegam na /etc/hosts
i wirtualnych hostach, aby testować niektóre witryny lokalnie.Dlaczego mój skrypt podąża za/etc/hosts ale przeglądarki nie, gdy jest proxy SOCKS?
Jednak gdy próbuję dodać wpis do /etc/hosts
przeglądarka nie udać się do serwisu spodziewałem ... WIFI
My MacBook jest wyłączony i jest podłączony do sieci LAN przedsiębiorstwa:
IP address: 192.168.8.250
Subnet mask: 255.255.255.0
Router: 192.168.8.1
DNS server: 8.8.8.8
Domyślnie nie ma dostępu do Internetu.
Nie pudełko rozwój Linux (192.168.12.128), który ma dostęp do internetu, więc skonfigurować proxy SOCKS błyskawiczne uzyskanie dostępu do Internetu dla mojego MacBooka:
ssh -fND localhost:30000 [email protected]
potem w moich preferencjach MacBook za systemowe > Sieć> proxy
(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
teraz mogę surfować po sieci, do tej pory tak dobrze.
Dla rozwoju skonfigurować kilka wpisów w /etc/hosts
dla hostów wirtualnych celów:
127.0.0.1 air.company.com
W 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>
To wygląda dobrze i curl
zwraca zawartość index.html
przyjemnie.
Jeśli jednak spróbuję otworzyć witrynę: http://air.company.com
w przeglądarkach (Safari/Chrome/Firefox), żaden z nich nie zwraca wyniku takiego jak curl
. Chrome daje błąd:
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.
Jeśli dodać kolejny wpis w /etc/hosts
:
127.0.0.1 www.microsoft.com
W bash
, wygląda 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>
Ja też spróbować użyć ruby skrypt:
require 'socket'
require 'curl'
ip = IPSocket.getaddress('www.microsoft.com')
puts ip
puts
http = Curl.get("http://www.microsoft.com/")
puts http.body_str
Wyjście wygląda OK:
$ bundle exec ruby openweb.rb
127.0.0.1
<html>OK</html>
Jednak kiedy używać przeglądarek, przeglądarek powrócić zawartości z serwera witryny prawdziwy Microsoft, zamiast treści z mojego MacBooka (127.0.01) . Czemu?
p.s .:
Gdybym wyłączyć proxy SOCKS, przeglądarka zwraca zawartość od 127.0.0.1 poprawnie.
Jeśli odłączę kabel LAN, przeglądarka poprawnie zwróci treść z 127.0.0.1.