前言

因为在macOS下实在仍受不了VirtualBox的各种Bug和低性能,转投熟悉的VMware Fusion后本来一直都挺稳定的,但在一次Linked Clone链接克隆中发现NAT网络下VM可以访问外网但宿主机和虚拟机之间的网络却无法ping通,查阅了非常多的资料仍然无解差点就要暴力选择添加一块新网卡做host-only,最后发现重启下VMware Fusion网络就恢复了,这大概就是传说中的无脑重启解决一切问题。

更新历史

2020年06月16日 - 初稿

阅读原文 - https://wsgzao.github.io/post/vmware-fusion/


问题描述

  1. 创建1台NAT网络类型的CentOS虚拟机,IP为默认DHCP段的192.168.184.128,宿主机和虚拟机网络互通,虚拟机可以正常访问外网
  2. 创建1台Linked Clone链接克隆CentOS虚拟机,IP为192.168.184.129,宿主机和虚拟机网络无法互通,虚拟机可以正常访问外网

解决方案

网上解决方案:

  1. 检查macOS是否联网
  2. 检查macOS是否给予VMware权限
  3. 重启虚拟机
  4. 重启VMware
  5. 重启macOS

以上方法通通无效

1
2
3
4
# 重启vmware network服务解决问题
sudo /Applications/VMware\ Fusion.app/Contents/Library/vmnet-cli --stop
sudo /Applications/VMware\ Fusion.app/Contents/Library/vmnet-cli --start

修改 VMware Fusion networking

配置 VMware Fusion 虚拟网络配置

VMware Fusion 安装完成后,会在macOS中新建两个网卡:vmnet1以及vmnet8(在 /Library/Preferences/VMware Fusion 下可以看到)

  1. vmnet1 是 Host-only 模式
  2. vmnet8 是 NAT 模式

这里仅对网卡vmnet8 进行修改(修改过程中需关闭VMWare Fusion)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
sudo vi /Library/Preferences/VMware\ Fusion/networking

VERSION=1,0
answer VNET_1_DHCP yes
answer VNET_1_DHCP_CFG_HASH E805FD2F642680617F0D09147C8D5C5ED962ED29
answer VNET_1_HOSTONLY_NETMASK 255.255.255.0
answer VNET_1_HOSTONLY_SUBNET 172.16.131.0
answer VNET_1_VIRTUAL_ADAPTER yes
answer VNET_8_DHCP yes
answer VNET_8_DHCP_CFG_HASH ABBB4D6B9DEC5639F2756A1991B197986AB5597E
answer VNET_8_HOSTONLY_NETMASK 255.255.255.0
answer VNET_8_HOSTONLY_SUBNET 192.168.184.0
answer VNET_8_NAT yes
answer VNET_8_VIRTUAL_ADAPTER yes
add_bridge_mapping en0 2
  1. 将 DHCP 设置为 no, 即使用静态IP。 将 SUBNET 修改为自己想用的网段,比如自定义192.168.111.0网段
  2. 保存退出

注意:只修改 vmnet8 的配置, 不要修改vmnet1的配置。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
sudo vi /Library/Preferences/VMware\ Fusion/vmnet8/nat.conf

# VMware NAT configuration file
# Manual editing of this file is not recommended. Using UI is preferred.

[host]

# NAT gateway address
ip = 192.168.184.2
netmask = 255.255.255.0

# VMnet device if not specified on command line
device = vmnet8

# Allow PORT/EPRT FTP commands (they need incoming TCP stream ...)
activeFTP = 1

# Allows the source to have any OUI. Turn this on if you change the OUI
# in the MAC address of your virtual machines.
allowAnyOUI = 1

# Controls if (TCP) connections should be reset when the adapter they are
# bound to goes down
resetConnectionOnLinkDown = 1

# Controls if (TCP) connection should be reset when guest packet's destination
# is NAT's IP address
resetConnectionOnDestLocalHost = 1

# Controls if enable nat ipv6
natIp6Enable = 0

# Controls if enable nat ipv6
natIp6Prefix = fd15:4ba5:5a2b:1008::/64

[tcp]

# Value of timeout in TCP TIME_WAIT state, in seconds
timeWaitTimeout = 30

[udp]

# Timeout in seconds. Dynamically-created UDP mappings will purged if
# idle for this duration of time 0 = no timeout, default = 60; real
# value might be up to 100% longer
timeout = 60

[netbios]
# Timeout for NBNS queries.
nbnsTimeout = 2

# Number of retries for each NBNS query.
nbnsRetries = 3

# Timeout for NBDS queries.
nbdsTimeout = 3

[incomingtcp]

# Use these with care - anyone can enter into your VM through these...
# The format and example are as follows:
#<external port number> = <VM's IP address>:<VM's port number>
#8080 = 172.16.3.128:80

[incomingudp]

# UDP port forwarding example
#6000 = 172.16.3.0:6001

设置网关为192.168.111.2,网关的IP要和上一步中的IP保持网关一致,至此VMware Fusion的配置完毕。

配置虚拟机

  1. 将虚拟机网络切换到NAT模式
  2. 打开虚拟机,配置虚拟机网络配置信息

vi /etc/sysconfig/network-scripts/ifcfg-ens33

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
TYPE=Ethernet
BOOTPROTO=static
DEFROUTE=yes
PEERDNS=yes
PEERROUTES=yes
IPV4_FAILURE_FATAL=no
NAME=ens33
DEVICE=ens33
ONBOOT=yes
IPADDR=192.168.111.100      // 自定义的虚拟机IP, 需与VMware Fusion配置的IP在同一个网段上
GATEWAY=192.168.111.2       // 配置的网关地址
NETMASK=255.255.255.0       // 配置的掩码
DNS1=114.114.114.114        // macOS本机的DNS地址。 系统偏好设置-> 网络 -> 在左侧选择当前使用的网络,点击右下角的“高级”按钮 -> 切换Tab页,可找到DNS地址。
DNS2=8.8.8.8         // 同上

# 保存退出,重启网络服务
systemctl restart network

参考文章

Troubleshooting networking and internet connection issues in VMware Fusion (1016466)

VMware Fusion 中的网络和 Internet 连接问题故障排除 (1016466)

文章目录
  1. 1. 前言
  2. 2. 更新历史
  3. 3. 问题描述
  4. 4. 解决方案
  5. 5. 修改 VMware Fusion networking
    1. 5.1. 配置 VMware Fusion 虚拟网络配置
    2. 5.2. 配置虚拟机
  6. 6. 参考文章