Mac设置Parallels Desktop中的虚拟机使用宿主机代理
Table of Contents
需求
前提:你的mac本身已经安装代理客户端(如某2ray),并且可以通过该代理客户端科学上网(或者win也一样)
想要实现:Parallels Desktop里的虚拟机也想科学上网(或者win里安装vmware也一样,或者是另一台物理机也是一样的)
方法一:虚拟机也安装一个代理客户端
对于有窗口的系统,比如你虚拟机里安装的是win、或者ubuntu等,那么再安装一个客户端是很方便的,这就相当于在另一台电脑里使用代理客户端,既然mac上你会用了,那在其他电脑上也是一样的。
但是如果你虚拟机里是最小化安装的纯命令行的centos,那么使用客户端可能有一定的麻烦,yum无法安装,pip安装的感觉也是ssserver,并没有客户端,所以客户端还得编译,编译还有很多依赖,编译好还得写对配置文件,很多人都不太清楚这个,所以还是挺麻烦的。
方法二:虚拟机设置代理到宿主机
即虚拟机里设置代理到mac(这里mac就是虚拟机的宿主机),让虚拟机通过mac的ss科学上网,这里如果宿主机换成win,虚拟机软件换成vmware或virtualbox,它的原理也都是一样的。
设置方法:
1、首先把宿主机(我这里是mac)的ss设置里的Local Socks5 Listen Address由原来的127.0.0.1
设置为0.0.0.0
,如果你需要通过HTTP代理,那么也要把ss里的HTTP选项打开,并把HTTP proxy Listen Address地址由原来的127.0.0.1
设置为0.0.0.0
,这样做表示代理所有ip,而不只是本机的127.0.0.1
。或者如果你用的是其他科学上网工具,也有些写成“share over LAN(通过局域网共享)”,如果有这个选项,选上了就表示监听0.0.0.0
。
2、搞清楚你的虚拟机是通过什么方式联网的,虚拟机连网无非有两种方式:
- 桥接
- NAT
如果你是桥接连网,那么你只要找出你的宿主机的联网ip即可(mac的话,一般都是wifi,或者你通过转接头插网线的话,那就是转接头对应的ip)
如果你是NAT连网的,那么你要找出你的宿主机中NAT网卡的ip(在mac里使用parallels desktop虚拟机的话,NAT网卡一般是parallels Shared开头的)
3、在虚拟机里的~/.bashrc
或~/.zshrc
里,添加以下两句的其中一句:
export ALL_PROXY=SOCKS5://10.211.55.2:1080
export ALL_PROXY=HTTP://10.211.55.2:1087
第一句表示使用SOCKS5代理,第二句表示使用HTTP代理,注意ip和端口不要照抄我的,填你自己的,ip就是第2步中找到的ip,端口就是你的代理客户端对应的端口,一般有两个端口,一个是socks5端口,一个http端口,找到对应端口填进去即可。
最后source一下配置文件:
source ~/.bashrc
或者你用zsh shell的话就是:
source ~/.zshrc
测试你的ip是哪里的:
curl https://ip.cn
如果显示的是你当前城市的ip或者附近城市的ip,说明代理无效,检查一下哪里搞错了。
如果显示的是你的代理服务器所在地址(比如美国)和ip,那说明代理设置成功。
然后试试能否访问google:
curl https://www.google.com
如果报以下错误,那就是不能访问
curl: (7) Failed connect to www.google.com:443; Connection timed out
如果返回一大片内容,那就是能访问,那一大片内容就是google首页的html源码。
如果是Windows,可以直接在cmd里设用set http_proxy=http://127.0.0.1:1087
,set https_proxy=http://127.0.0.1:1087
,set all_proxy=http://127.0.0.1:1087
其实更好的方式是这样,为什么这样写请参考Mac让Mail(自带邮箱客户端)的gmail走代理及终端走代理:
# 设置使用代理
alias setproxy="export http_proxy=http://127.0.0.1:1087; export https_proxy=$http_proxy; export all_proxy=socks5://127.0.0.1:1080; echo 'Set proxy successfully'"
# 设置取消使用代理
alias unsetproxy="unset http_proxy; unset https_proxy; unset all_proxy; echo 'Unset proxy successfully'"
楼主,想问一下,在虚拟机里使用科学上网的话,在mac主机里也要同时打开吗?我现在在虚拟机里用科学上网,但好像不稳定,有时候很顺,有时候不太好
虚拟机就相当于另外一台电脑,主机里要不要打开,取决于你虚拟机那台电脑有没有使用主机的代理,使用了就要打开,没使用就不用打开,代理本质上都是指定ip和端口,换句话说,要看你虚拟机里网络——代理那儿设置的代理ip是不是主机的ip,很明显,你是直接在虚拟机里用的,设置的是127.0.0.1(也就是虚拟机本身),这样就跟你主机没有关系了,你慢是你的账号慢吧,如果账号本身慢,那你在哪儿用它都一样慢,跟是不是虚拟机无关
谢谢楼主细心解答!另外想问一下,在虚拟机里用v2ray科学上网的时候,有的时候网会断是因为网络的原因还是节点的原因呀?
既然你在主机跟虚拟机里都有分别使用,那你可以对比一下,如果在两台机都慢,那就跟虚拟机无关,如果只有在虚拟机里才慢,在主机里不慢,那肯定就是虚拟机哪里设置有问题
我的v2ray在虚拟机里运行时候报错:fail to read response,fail to process outbound traffic,an exsisting connection was forcily closed by remost host,技术白痴求问大佬该怎么解决
这个我就不清楚了
Thanks a lot, it works!
You are welcome!