说明
很多时候我们在主机上完成了代理的配置,为了我们在虚拟机上能够方便的进行研究,我们想让虚拟机也走代理。
原理大概是让虚拟机和主机处于同一个局域网中,将虚拟机中的流量转发到主机上,这时主机的代理软件监听到局域网内的请求,就会把流量再转发到代理服务器中,实现科学地上网。(解释的可能不严谨)
为了这一目标,我们需要在主机和虚拟机上进行一系列的配置,作者虚拟机中的系统是ubuntu,主机中的系统是win10。
ubuntu设置
首先我们要配置好虚拟机中的代理,让虚拟机把流量转发出来。在ubuntu的网络设置中可以打开下面的界面。
-
这里的ip地址填的是局域网地址,在windows的cmd下使用
ipconfig
获得,如下图所示 -
端口号根据使用代理软件的不同而不同,某飞机默认为1080,某新兴代理软件默认为10808,这个可以在代理软件中找到,注意不是代理服务器的端口,而是本地监听端口。
-
注意只填最后一项socks host,不要填前面的https代理。这个要看代理软件本地监听端口使用的协议是什么,我了解的几个代理软件使用的协议都是socks,大家自己查找一下。
Windows设置
- 在代理软件中打开允许来自局域网的连接,这样代理软件才会去监听本地端口的流量请求。
- 在VMware中将网络设置为桥接模式,如下图:
如果不出意外的话到这里就可以使用浏览器google了。(2020/9/12更新:在一些特殊的网络环境下,也可能需要选择NAT模式,比如需要认证的校园网。不管选择什么模式,我们最终只要保证两点:1.不开启代理的情况下,虚拟机可以上网。2.虚拟机和主机位于同一个局域网内。)
虚拟机终端走代理
但是我们在终端运行的命令是不会通过我们刚刚配置好的代理的,ubuntu终端默认不支持socks协议,如果想让终端命令也走代理(加快git clone
速度,进行rosdep init
等),我们需要使用到proxychains工具。
首先输入sudo apt-get install proxychains
安装proxychains工具,然后我们需要对/etc/proxychains.conf
进行修改,将自己的代理ip地址和端口添加到ProxyList下。例如socks5 192.xxx.xxx.xxx 10808
。
最后需要使用find /usr/lib/ -name libproxychains.so.3 -print
命令输出路径,再将/usr/bin/proxychains
下的export LD_PRELOAD=libproxychains.so.3
改为export LD_PRELOAD=刚刚获得的路径
我们就可以愉快地使用proxychains工具了。想要走代理时只需要在命令前加上proxychains
即可。
via。https://blog.csdn.net/weixin_45467056/article/details/105956782