我办公室里的MacBook没有上网功能。所以我通过SSH建立了一个即时的SOCKS代理来上网。
但是,当我尝试添加条目时/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)可以访问互联网,所以我设置了一个即时的SOCKS代理来获取我的MacBook的互联网访问:
ssh -fND localhost:30000 ohho@192.168.12.128
然后在我的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
。
但是,如果我尝试打开网站:http://air.company.com
在浏览器(Safari / Chrome / Firefox)中,它们都没有返回结果curl
。Chrome会出错:
此网页不可用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>
但是,浏览器从真实Microsoft站点的Web服务器返回内容,而不是从MacBook(127.0.01)中返回内容。为什么?
PS
如果我禁用SOCKS代理,浏览器将正确返回127.0.0.1中的内容。
如果我断开LAN电缆,浏览器将正确返回127.0.0.1中的内容。