V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
wsgzao
V2EX  ›  macOS

VMware Fusion NAT 无法连网解决方案

  •  
  •   wsgzao · Jun 17, 2020 · 1869 views
    This topic created in 2146 days ago, the information mentioned may be changed or developed.

    前言

    因为在 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

    以上方法通通无效

    # 重启 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 )

    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 的配置。

    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

    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)

    No Comments Yet
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   2592 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 32ms · UTC 12:38 · PVG 20:38 · LAX 05:38 · JFK 08:38
    ♥ Do have faith in what you're doing.