本篇介绍NAT网络模式下,虚拟机怎么走Windows宿主机的系统代理。本篇的目的是介绍整体流程,具体操作细节请参考其它教程。
1. 前言
虚拟机和宿主机的网络连接模式有3种:Host-Only、桥接、NAT,其中NAT是我用得多的模式。
虚拟化平台有多种,比如Hyper-v(Windows自带)、VMware软件、VirtualBox软件等。不同平台的操作方法有细微差别,详细操作可以参考其它教程、博客。虽然我只尝试过Hyper-v和VMware,但是理论上这篇博客适用于所有虚拟化平台。
如果不想折腾系统代理,还有更简单粗暴的方法——TUN模式。一般的网络代理软件(比如Clash系列、v2ray系列等)都能设置TUN模式。在TUN模式下,代理软件会创建一个虚拟网卡,宿主机的所有网络流量都会经过这个虚拟网卡。NAT虚拟机的网络流量也会经过虚拟网卡
2. 开启NAT
把虚拟机的网络模式设置为NAT。
- 提一下Hyper-v。在Hyper-v里,默认的网络模式
Default Switch,已经可以满足NAT的功能了。只不过每次虚拟机重启后,Default Switch的IP地址会更改(其实也不影响虚拟机上网)。 - 提一下VMware。VMware可能会同时开启Host-Only模式和NAT模式,这样也可以,不影响。可以在VMware菜单栏的“编辑”选项里,打开“虚拟网络编辑器”。只要
VMnet8(NAT模式下的网卡)和主机是连接的,就没问题。
验证虚拟机是否能访问网络,比如在虚拟机里访问:baidu.com,看能不能访问到网站。
接下来补充说明一个点:虚拟机能访问网络,就说明网络模式没问题了,不需要关注宿主机和虚拟机能不能ping通。宿主机和虚拟机想要ping通,还需要解决防火墙规则的问题。默认防火墙设置下,宿主机和虚拟机是ping不通的——这是正常现象。而我们的目标——虚拟机走宿主机网络代理——并不要求二者能ping通。
3. 宿主机允许代理软件通过防火墙
想让虚拟机走宿主机的系统代理,这一步是必须的。
在Windows宿主机里,按下快捷键“Windows+I”,打开设置。在设置的搜索框里,输入“防火墙”,选择“允许应用通过Windows防火墙”。
在新打开的界面里,添加代理软件的应用程序。比如我使用的是clash-verge-rev,需要添加安装目录下的verge-mihomo.exe。
4. 虚拟机设置代理
代理包含两部分:IP地址,端口号。
端口号好说,看宿主机代理软件里的设置。比如我使用的是clash-verge-rev,端口号是7897。
下面介绍怎么找IP地址。以VMware为例。
- 虚拟机,在命令行中输入
ipconfig,部分结果如下。虚拟机的IP地址是192.168.208.128。
以太网适配器 Ethernet0:
连接特定的 DNS 后缀 . . . . . . . : localdomain
本地链接 IPv6 地址. . . . . . . . : fe80::4dc0:5754:6ed6:61de%8
IPv4 地址 . . . . . . . . . . . . : 192.168.208.128
子网掩码 . . . . . . . . . . . . : 255.255.255.0
默认网关. . . . . . . . . . . . . : 192.168.208.2
- 宿主机,在命令行中输入
ipconfig,部分结果如下。宿主机的IP地址是192.168.208.1。
Ethernet adapter VMware Network Adapter VMnet8:
Connection-specific DNS Suffix . :
Link-local IPv6 Address . . . . . : fe80::3a25:52e8:e738:2204%7
IPv4 Address. . . . . . . . . . . : 192.168.208.1
Subnet Mask . . . . . . . . . . . : 255.255.255.0
Default Gateway . . . . . . . . . :
NAT模式下,宿主机和虚拟机共享同一个子网(192.168.208.0)。在这个子网下,虚拟机和宿主机可以互相访问。
把虚拟机的代理设置为192.168.208.1:7897,虚拟机就可以通过宿主机的代理软件实现代理。
虚拟机具体的代理设置(比如Windows的代理、让Windows命令行走代理、Linux的代理等),请参考其它教程或博客。