Custom NAT Gateway and DNS for VMware Fusion
由于电脑使用了 Surge 并开启了 Enhanced Mode 来做全局透明代理,现在希望 VMware Fusion 的虚拟机也自动使用这个代理。其实打开 Enhanced Mode 之后无需配置虚拟机即可直接享受透明代理的。但是这样在 Surge Dashboard 中看到的所有连接都是来源于 vmnet-natd
这个进程,十分不方便监控。
为此,可以手动在虚拟机中修改网关和 DNS 服务器来使 Surge 能够分辨出流量来自哪台虚拟机。但这在我的场景下还是有点麻烦,因为需要不停的重装虚拟机等操作,每一次都需要重新配置。本文将介绍如何修改 VMware Fusion 的 vmnet-dhcpd
配置文件来使虚拟机自动获取自定义的网关和 DNS 服务器。
Modify dhcpd.conf
此处假定需要修改的是默认 NAT 虚拟网络的配置,即 vmnet8
其它自定义网络同理(桥接除外)。配置文件位于 /Library/Preferences/VMware Fusion/vmnet8/dhcpd.conf
,里面的内容主体如下:
1 | ###### VMNET DHCP Configuration. Start of "DO NOT MODIFY SECTION" ##### |
注意其中被 DO NOT MODIFY SECTION
包起来的部分,这一部分信息是根据 /Library/Preferences/VMware Fusion/networking
自动生成的,如子网网段等配置,而我需要修改的是其中 domain-name-servers
和 routers
两个 networking
文件中无法配置的选项。因此,我们需要在这个 section 之后复制一段 subnet 的配置,将其中的两个选项改成自定义的值即可:
1 | ###### VMNET DHCP Configuration. Start of "DO NOT MODIFY SECTION" ##### |
这样一来,在 VMware Fusion 重启之后改配置也将得到保留,且会覆盖其自动生成的 subnet 配置。注意若之后通过任何方式修改了 vmnet8
的 DHCP 子网网段,此处也需要手动修改。
Reconfigure Virtual Network
接下来需要重启 vmnet-dhcpd
使配置生效,这需要借助 VMware Fusion 自带的 vmnet-cli
工具。如果 Fusion 是通过 brew cask
安装的 ,那么它已经被软链接到 PATH
之中了;否则可以在 /Applications/VMware Fusion.app/Contents/Library/vmnet-cli
找到它。
依次执行如下命令即可:
1 | # alias vmnet-cli='/Applications/VMware Fusion.app/Contents/Library/vmnet-cli' |
至此,在虚拟机中禁用再开启相应网卡即可自动获取新的配置了。