Mac系统修改VMware Fusion虚拟机IP段

Mac系统上虚拟机软件有很多款,不过萝卜青菜各有所爱,我个人目前在用的是VMware家的Fusion虚拟机毕竟VMware更加专业。目前在使用上有一个不友好的点就是不能可视化的配置虚拟机的IP地址。

桥接模式网络连接

如果您的 Mac 位于以太网、无线网或 FireWire 网络中,则使用桥接网络连接通常是使您的虚拟机可以访问该网络的最简单方法。使用桥接网络连接,虚拟机将显示为与 Mac 相同的物理以太网网络中的其他计算机。

使用桥接网络连接的虚拟机可能会使用在该虚拟机桥接到的网络上提供的任何服务,其中包括文件服务器、打印机和网关。同样,配置有桥接网络连接的任意物理主机或其他虚拟机可以使用虚拟机上的资源,就好像该虚拟机是同一个网络中的物理计算机。

桥接网络适配器称为 vmnet0。在 Fusion 3.x 及更高版本中,该适配器使用 vmnet-bridge 和 vmnet-netifup 服务。

仅主机型网络 – vmnet1

当使用此类型的网络连接时,虚拟机将连接到虚拟专用网络中的 Mac,这在 Mac 以外通常不可见。在同一个 Mac 中配置有仅主机网络的多个虚拟机将位于同一个网络中,并且互相可见。

仅主机网络适配器称为 vmnet1。在 Fusion 3.x 及更高版本中,该适配器使用 vmnet-dhcpd 服务。

网络地址转换 (NAT) 网络 – vmnet8

如果要使用 Mac 拨号网络连接的方法将虚拟机连接到 Internet 或其他 TCP/IP 网络,或者无法向虚拟机提供 Mac 的网络中的 IP 地址,则此类型通常是使您的虚拟机可以访问网络的最简单方法。此类型还允许虚拟机访问 Mac 已连接到的 VPN。

虚拟机在外部网络中没有自己的 IP 地址。相反,会在 Mac 中设置单独的专用网络。虚拟机从 VMware 虚拟 DHCP 服务器中获取该网络上的地址。除非虚拟机启动连接,否则无法直接通过除 Mac 以外的任意计算机或网站连接该虚拟机。

NAT 网络适配器称为 vmnet8。在 Fusion 3.x 及更高版本中,该适配器使用 vmnet-natd、vmnet-dhcpd 和 vmnet-netifup 服务。

自定义网络 IP 地址段

VMware Fusion 有三个网络配置文件:networking、dhcpd.conf 和 nat.conf。

全局:

/Library/Preferences/VMware\ Fusion/networking

vmnet1:

/Library/Preferences/VMware\ Fusion/vmnet1/dhcpd.conf
/Library/Preferences/VMware\ Fusion/vmnet1/nat.conf

vmnet8:

/Library/Preferences/VMware\ Fusion/vmnet8/dhcpd.conf
/Library/Preferences/VMware\ Fusion/vmnet8/nat.conf

修改 IP 地址段步骤如下,在 VMware Fusion 11.5 版本中测试通过。

停止 vmnet 网络服务

执行命令:

sudo /Applications/VMware\ Fusion.app/Contents/Library/vmnet-cli --stop

备注:这步是可选的,直接下一步也可以

只需要修改 networking 配置文件

执行命令:

sudo vi /Library/Preferences/VMware\ Fusion/networking

示例:将 vmnet1 中的 IP 段修改为 192.168.1.0,将 vmnet8 中的 IP 段修改为 10.10.1.0

VERSION=1,0
answer VNET_1_DHCP yes
answer VNET_1_DHCP_CFG_HASH 305D3393C78096F94C8C979DF2321B14BEE94AB1
answer VNET_1_HOSTONLY_NETMASK 255.255.255.0
answer VNET_1_HOSTONLY_SUBNET 172.16.178.0  # 修改为 192.168.1.0
answer VNET_1_VIRTUAL_ADAPTER yes
answer VNET_8_DHCP yes
answer VNET_8_DHCP_CFG_HASH DE662EAB01380DE3338128A859C717A8F863F3CF
answer VNET_8_HOSTONLY_NETMASK 255.255.255.0
answer VNET_8_HOSTONLY_SUBNET 172.16.24.0  # 修改为 10.10.1.0
answer VNET_8_NAT yes
answer VNET_8_VIRTUAL_ADAPTER yes

配置网络

执行命令:

sudo /Applications/VMware\ Fusion.app/Contents/Library/vmnet-cli --configure

vmnet-cli 将根据上述修改的地址段自动修改 dhcpd.conf 和 nat.conf 中的 IP 地址。

查看 dhcpd.conf 和 nat.conf 配置文件:

cat /Library/Preferences/VMware\ Fusion/vmnet1/dhcpd.conf
cat /Library/Preferences/VMware\ Fusion/vmnet1/nat.conf

cat /Library/Preferences/VMware\ Fusion/vmnet8/dhcpd.conf
cat /Library/Preferences/VMware\ Fusion/vmnet8/nat.conf

可以看到配置已经修改成功。

启动网络服务

执行命令:

sudo /Applications/VMware\ Fusion.app/Contents/Library/vmnet-cli --start

验证

执行命令:

ifconfig

可以看到 vmnet1 和 vmnet8 的 IP 地址已经更改成功。

虚拟机重新获取配置

虚机如果是手动配置的 IP,直接修改即可。

虚机如果是 DHCP,可以直接重启 vmware fusion 和 虚机系统,也可以直接在虚机重新获取地址,比如 Linux 命令行中执行 sudo dhclient -v -r eth0 ,eth0 为对应网卡。