1. 前提描述

主机是Windows10 1909,使用以太网接口上网,代理软件是Shadowsocks或者ShadowsocksR,ShadowsocksR用得最多。

虚拟机(使用VMware® Workstation 15 Pro 15.1.0 build-13591040)为Ubuntu 16.04

需求

  • 在虚拟机中使用浏览器、git操作等tcp/udp能够全部通过宿主机的代理软件(绕过本地网络监管
  • 在虚拟机中调试程序时能够访问和宿主机同局域网ip的服务器

做法

其实很简单,只要能让虚拟机的网络请求全部通过宿主机的代理,并在代理中对局域网ip选择直接连接即可

2. 具体配置

2020.10.15:配置中有点小问题,请看一下第三节-后续

在VMware中,右键虚拟机选择“设置”或者点击“编辑虚拟机设置”,在弹框中选择网络适配器->网络连接,选择NAT模式或者在自定义中选择“VMnet8(NAT)模式”,随后在宿主机的“网络和Internet”中选择“更改适配器选项”,右键VMware Network Adapter VMnet8选择属性,双击项目中的ipv4,作如下设定:

如果对基础的网络知识比较了解的话,ip地址可以填写别的,那么在下列其他配置时也要作相应的变化,因为比较简单就不多记录了。

随后在VMware中打开虚拟网络编辑器进行设置:

当然,使用本地DHCP服务将ip分配给虚拟机那个选项可以不要,因为设置了静态地址。

随后进入虚拟机,打开Network,编辑Wired的options:

然后将Network proxy中手动设置全局代理:

这里的10899的端口与宿主机上ssr的设置要一样:

这样的话,在ubuntu中既可以随意访问谷歌,又能访问宿主机所在局域网的服务器。

如果不开启ubuntu的全局代理前,可以ping局域网服务器和没被墙的网站,开启之后就ping不了了,对vmnet8的网卡抓了下包简单看了看,我推测是因为ssr不支持到icmp这一层,有机会换vpn试试。

3. 后续

2020.9.29

有时(频率较高)打开虚拟机后发现网络不通,类似的错误有

  • fatal: unable to access 'https://github.com/ohmyzsh/ohmyzsh.git/': Failed to connect to 192.168.52.1 port 10899: Connection refused
  • The proxy server is refusing connections error

打开宿主机上的ssr日志发现没看到请求到代理,于是在宿主机打开Wireshark对VMnet8网卡抓包,一打开捕获虚拟机内浏览器马上就能访问网络了

挺诡异的,暂时没太多时间排查,先将就

2020.10.15

在VMware论坛上提问,得到了一些提示和回答,可见:A weird phenomenon about use VMnet8(NAT) with static IP

大概原因的话,推测是因为Wireshark把网卡改变成了混杂模式。

将虚拟网络编辑器和虚拟机中的网关修改成192.168.52.1且一致(也就是比如都设成192.168.52.2),基本就啥问题都没有了,既能ping内外网,也能通过宿主机的ssr上Google。