VMware虚拟机使用技巧

警告
本文最后更新于 2019-11-17,文中内容可能已过时。

双系统时常折腾容易坏电脑,因此一般是在虚拟机中使用Linux系统,常用的虚拟机为VMware,本文对VMware的相关知识以及使用过程中的一些问题做介绍。

三种网络模式辨析

VMware有三种网络模式,分别是桥接模式、NAT模式和主机模式

1. Bridged(桥接模式)

在桥接模式下,VMware虚拟出来的操作系统就像是局域网中的一独立的主机,它可以访问网内任何一台机器。不过你需要空闲的IP地址,并且需要手工为虚拟系统配置IP地址、子网掩码,而且还要和宿主机器处于同一网段,这样虚拟系统才能和宿主机器进行通信。

如果你想利用VMware在局域网内新建一个虚拟服务器,为局域网用户提供网络服务,就应该选择桥接模式。

2. NAT(网络地址转换模式)

使用NAT模式,就是让虚拟系统借助NAT(网络地址转换)功能,通过宿主机器所在的网络来访问公网。也就是说,使用NAT模式可以实现在虚拟系统里访问互联网。NAT模式下的虚拟系统的TCP/IP配置信息是由VMnet8(NAT)虚拟网络的DHCP服务器提供的,无法进行手工修改,因此虚拟系统也就无法和本局域网中的其他真实主机进行通讯。采用NAT模式最大的优势是虚拟系统接入互联网非常简单,你不需要进行任何其他的配置,只需要宿主机器能访问互联网即可。

如果你想利用VMware安装一个新的虚拟系统,在虚拟系统中不用进行任何手工配置就能直接访问互联网,建议你采用NAT模式。(也可以配置静态IP,后面会介绍)

3. Host-only(主机模式)

在某些特殊的网络调试环境中,要求将真实环境和虚拟环境隔离开,这时你就可采用Host-only模式。

在Host-only模式中,所有的虚拟系统是可以相互通信的,但虚拟系统和真实的网络是被隔离开的。可以利用Windows XP里面自带的Internet连接共享(实际上是一个简单的路由NAT)来让虚拟机 通过主机真实的网卡进行外网的访问。虚拟系统的TCP/IP配置信息(如IP地址、网关地址、DNS服务器等),都是由VMnet1(Host-only)虚拟网络的DHCP服务器来动态分配的。如果你想利用VMware创建一个与网内其他机器相隔离的虚拟系统,进行某些特殊的网络调试工作,可以选择Host-only模式。

静态ip设置

虚拟机中安装的是Ubuntu18.04,因项目需要对其进行静态IP设置

1. 桥接模式

首先查看虚拟机网络配置信息,选择菜单栏编辑—>虚拟网络编辑器,在三个网络中选择VMnet0,桥接模式中选择网卡,我选择了有线网卡,可以根据需要选择无线网卡。

其次编辑虚拟机网络模式,点击编辑虚拟机设置,选择网络适配器,在网络连接部分选择桥接模式

### 2. NAT模式

首先依然是查看虚拟机网络配置信息,选择菜单栏编辑—>虚拟网络编辑器,在三个网络中选择VMnet8,点击NAT设置,查看并记录子网ip和网关。虚拟网络编辑器中的使用本地DHCP服务将IP地址分配给虚拟机选项不要取消勾选,因为看到很多教程说要取消勾选,实际上取消掉之后就没网了。

注:这一步是查看,没有需要更改的内容。

然后编辑虚拟机网络模式。查看完配置信息后,在要设置静态ip的虚拟机界面下,点击编辑虚拟机设置,进入后选择网络适配器,在网络连接部分从NAT模式切换到自定义特点虚拟网络,并选择VMnet8(NAT模式)。点击确定后退出。

注:这一步需要在关闭虚拟机的状态下进行,挂起状态无法设置

3. 静态ip设置

Ubuntu18.04的静态ip设置是通用的,不因使用虚拟机不同。官方对静态ip设置的说明位于Network Configuration,步骤如下:

  1. 使用ifconfig可以查看当前ip和网关地址和网卡名,若有必要可以自己测试一下网络是否畅通。

  2. /etc/netplan目录下创建配置文件02_config.yaml,因为该目录下已有01开头的文件。

    1
    
    $ sudo nano /etc/netplan/02_config.yaml
  3. 在配置文件中添加如下信息

     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    
    network:
      version: 2
      renderer: networkd
      ethernets:
        ens33:
          addresses:
            - 192.168.191.4/24
          gateway4: 192.168.191.1
          nameservers:
              search: [mydomain, otherdomain]
              addresses: [1.1.1.1, 8.8.8.8]

    ens33是网卡名,即之前使用ifconfig命令查到的ip最前面的字段。addresses下的ip是自定义的静态ip,根据子网ip自己选择设置即可,掩码是24位的。gateway4就是之前在NAT设置中看到的网关地址。nameservers下的addresses是域名服务器地址,这里写的两个是常用的。

  4. 保存退出,使用netplan启用配置

    1
    
    $ sudo netplan apply

    再次查询即可看到新的ip地址,为我们设置的静态ip,最后可以ping一下8.8.8.8和百度测一下网络是否可用。

桥接模式静态ip变动问题

联网试验期间突然有设备连不上了,经查发现使用netplan编辑启用的静态ip已变更,但这种情况只发生在虚拟机中。使用sudo netplan apply命令重新启用,但一段时间后会再次变为其它ip。是虚拟机桥接模式的设置问题,还是Ubuntu18.04本身设置静态Ip的方式问题,暂时不清楚。

桥接模式存在“复制物理网络连接状态”的选项,用于笔记本电脑在有线和无线网络之间切换时的ip地址续订。未确认是否对ip地址变动有影响,鉴于连接无线网络不做变动,已取消勾选。

官方解释-为现有虚拟机配置桥接模式网络连接

您可以为现有虚拟机配置桥接模式网络连接。

要为新虚拟机配置桥接模式网络连接,请在运行新建虚拟机向导时选择自定义硬件

过程

  1. 选择虚拟机,然后选择虚拟机 > 设置

  2. 硬件选项卡中,选择网络适配器

  3. 选择桥接模式: 直接连接物理网络

  4. 如果在笔记本电脑或其他移动设备上使用虚拟机,请选择复制物理网络连接状态

当您在有线或无线网络之间进行移动时,该设置会导致 IP 地址续订。

  1. 单击确定保存所做的更改。

第一种解决思路是虚拟机直接连接无线网络,但囿于笔记本的虚拟机无法检测到无线网卡,作罢,同时也不知道最后是否真的能起作用

目前打算直接从路由器后台针对MAC地址设置静态ip,虚拟机的MAC地址可以使用ifconfig命令查看,虽然网上都称应查看HWaddr后的地址,但并没有这个标识,只在ens33的描述信息中存在如下描述,ether后的地址为MAC地址

1
ether 00:0c:29:5d:1f:a1  txqueuelen 1000  (Ethernet)

也可以从虚拟机设置—>网络适配器—>高级查看MAC地址,两者应是一致的。

然后在路由器后台选择IP与MAC绑定—>静态ARP绑定设置,绑定设备MAC和要使用的静态IP即可。这里使用的路由器是水星MW306R。

ping出现DUP!

主机和树莓派都接入了路由器开启的WiFi网络,树莓派之间相互ping没有问题,但当树莓派ping虚拟机的系统,或者虚拟机的系统ping任何一个网址,返回的数据包都会出现DUP!错误。网上的解决办法是禁用然后重新启用VMnet8,但并没有起作用。

经测试,有线网卡和无线网卡都接入了路由器的网络,虚拟机桥接到了无线网卡上,可能因此造成了环路(并不确定)。当我将虚拟机直接桥接到有线网卡上,再次发起ping命令,并断开了无线网卡的连接,DUP!错误就消失了。没有明白原理,但确实解决了错误。

重启后界面变小

虚拟机重启后有时候窗口会变得只有中间一小块且没法放大,虽然可以通过重新安装vm-tools来修复,但经常重装也太麻烦了。实际上这种故障是由于vm-tools的服务没有正常启动造成的,可以通过执行下面的命令解决。

1
$ sudo systemctl restart opoen-vm-tools

github上open-vm-tools项目的#253#303两个issue都是讨论这个问题的。

参考

[1] 陆小呆-虚拟机网络NAT模式配置静态IP

支付宝
微信
0%