У моего MacBook в офисе нет доступа в Интернет. Поэтому я установил мгновенный SOCKS-прокси через SSH для доступа к stackoverflow. В основном я использую свой MacBook для разработки, поэтому я полагаюсь на /etc/hosts
и виртуальные хосты для локального тестирования некоторых сайтов.
Однако, когда я пытаюсь добавить запись в /etc/hosts
, браузер не переходит на тот сайт, на который я рассчитывал...
WIFI моего MacBook выключен и подключен к локальной сети компании:
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), у которого есть доступ к Интернету, поэтому я настроил мгновенный прокси-сервер SOCKS, чтобы получить доступ к Интернету для моего MacBook:
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
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>
Это выглядит хорошо, и curl
прекрасно возвращает содержимое index.html
.
Однако, если я попытаюсь открыть сайт:http://air.company.com
в браузерах (Safari/Chrome/Firefox), ни один из них не вернет такой результат, как curl
. Хром выдает ошибку:
Эта веб-страница недоступна Веб-страница по адресу http://air.company.com/ может быть временно недоступна или возможно, навсегда переехал на новый веб-адрес. Ошибка 120 (net::ERR_SOCKS_CONNECTION_FAILED): неизвестная ошибка.
Если я добавлю еще одну запись в /etc/hosts
:
127.0.0.1 www.microsoft.com
В bash
выглядит нормально:
$ 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>
Я также пытаюсь использовать рубиновый скрипт:
require 'socket'
require 'curl'
ip = IPSocket.getaddress('www.microsoft.com')
puts ip
puts
http = Curl.get("http://www.microsoft.com/")
puts http.body_str
Вывод выглядит нормально:
$ bundle exec ruby openweb.rb
127.0.0.1
<html>OK</html>
Однако, когда я использую браузеры, браузеры возвращают содержимое с веб-сервера настоящего сайта Microsoft вместо содержимого моего MacBook (127.0.01). Почему?
p.s.:
Если я отключу прокси-сервер SOCKS, браузер правильно вернет содержимое с 127.0.0.1.
Если я отключу кабель локальной сети, браузер правильно вернет содержимое с 127.0.0.1.