
Vmware虚拟机借助主机实现代理上网
最近有个项目搭建环境,需要在github上下载源码、执行一些自动化脚本,时不时要才能正常执行。但又不想在虚拟机中配置梯子,不仅麻烦,而且还白白占用一个终端名额。之前都是手动在主机下载好,再通过共享文件夹传送给虚拟机,但是为了能跑一些脚本,不得不想办法让虚拟机也能通过主机正常访问网站。思路就是。
前言
最近有个项目搭建环境,需要在GitHub上下载源码、执行一些自动化脚本,但是GitHub经常由于各种原因无法访问。
最朴素的方法就是直接在虚拟机中配置代理软件。但这种方式对于多台虚拟机而言,不仅需要在每台虚拟机中依据不同系统下载不同版本的软件进行配置,还严重占用订阅的终端数量。
对我个人而言,还可以手动在主机下载好,再通过共享文件夹传送给虚拟机。但是这种方式无法跑脚本,因此最终不得不想办法让虚拟机也能正常访问网站。
主要思路就是 主机上网后,虚拟机通过代理把数据包转发到主机上,同时实现稳定访问GitHub等网站。
准备工作
虚拟机:Ubuntu
代理软件:自备,大同小异
虚拟机设置
找到网络代理设置
单击下图中Network Proxy的齿轮,若这里的"wired"无法打开,则需要打开DHCP/NAT服务,详见文末

修改代理参数
我使用的代理软件默认socks监听端口10808,http监听端口10809,理论上用啥填啥,不需要全部填,但我没仔细测试;
比较需要注意的是,IP地址需要选择[主机对外连接路由器] 的网卡地址,不要选择[主机连接虚拟机] 的虚拟网卡地址,否则包的转发会有问题。

无图形界面
如果是Ubuntu服务器版,是没有图形界面的。此时可以直接通过添加环境变量的方式实现代理:
echo 'export http_proxy=http://<proxy_host>:<proxy_port>' >> ~/.bashrc
echo 'export https_proxy=http://<proxy_host>:<proxy_port>' >> ~/.bashrc
此处的<proxy_host>是10.166.12.131,<proxy_port>是10808,然后执行source ~/.bashrc更新环境变量。
软件设置
Vmware设置
选择为NAT模式,虚拟网络编辑器初始化状态默认就行。

代理软件配置
勾选“允许来组局域网的连接”;
注:软件基础设置中可以看到sock监听端口,本地计算机的代理设置中可以看到http监听端口;

其他
测试
然后在虚拟机中就可以稳定实现对GitHub的访问了;
注:设置完成后虚拟机中的Terminal需要重新打开,否则也无法访问到;而且一般代理软件对ping包(ICMP协议)是不进行代理的;
问题
若遇到虚拟机的NAT模式出现问题,比如网卡不分配IP,多半是主机的Vmware服务有问题,需要保证DHCP和NAT服务是正常运行的状态,如下图。

更多推荐



所有评论(0)