Jade Dungeon

virtualbox

Windows 10中使用VirtualBox

https://docs.microsoft.com/en-us/windows/security/identity-protection/credential-guard/credential-guard-manage https://docs.microsoft.com/zh-cn/windows/security/identity-protection/credential-guard/credential-guard-manage

新版Windows 10或者安装了新的更新以后,VirtualBox虚拟机就不能用了。

原因是Windows10里面有个叫Virtualization-base security的安全机制打开了。

关掉的步骤如下

1.检查Virtualization-base security是否运行

Run msinfo32 can view the item “Virtualization-base security” is running。

2.禁止Device Guard

gpedit.msc | Administrative templates | system | Device Guard

3.删除几个注册表记录

If you used Group Policy, disable the Group Policy setting that you used to enable Windows Defender Credential Guard (Computer Configuration -> Administrative Templates -> System -> Device Guard -> Turn on Virtualization Based Security).

Delete the following registry settings:

HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\LSA\LsaCfgFlags
HKEY_LOCAL_MACHINE\Software\Policies\Microsoft\Windows\DeviceGuard\LsaCfgFlags

If you also wish to disable virtualization-based security delete the following registry settings:

HKEY_LOCAL_MACHINE\Software\Policies\Microsoft\Windows\DeviceGuard\EnableVirtualizationBasedSecurity
HKEY_LOCAL_MACHINE\Software\Policies\Microsoft\Windows\DeviceGuard\RequirePlatformSecurityFeatures

4.PowerShell运行DG_Readiness工具Disable

DG_Readiness_Tool_v3.6.ps1 -Disable -AutoReboot

5.重启以后会有2次文本界面分别提示按F3关掉“Virtualization-base security” 和 “Device Guard” 按照提示按F3关掉就好了。

网络配置

网络接入模式

VirtualBox的提供了四种网络接入模式,它们分别是:

  • NAT 网络地址转换模式(NAT,Network Address Translation)
  • Bridged Adapter 桥接模式
  • Internal 内部网络模式
  • Host-only Adapter 主机模式

NAT模式

解释: NAT模式是最简单的实现虚拟机上网的方式,你可以这样理解:Vhost访问网络的所有数据都是由主机提供的,vhost并不真实存在于网络中,主机与网络中的任何机器都不能查看和访问到Vhost的存在。

虚拟机与主机关系: 只能单向访问,虚拟机可以通过网络访问到主机,主机无法通过网络访问到虚拟机。

虚拟机与网络中其他主机的关系: 只能单向访问,虚拟机可以访问到网络中其他主机,其他主机不能通过网络访问到虚拟机。

虚拟机与虚拟机之间的关系: 相互不能访问,虚拟机与虚拟机各自完全独立,相互间无法通过网络访问彼此。

IP:10.0.2.15 网关:10.0.2.2 DNS:10.0.2.3

一台虚拟机的多个网卡可以被设定使用 NAT, 第一个网卡连接了到专用网 10.0.2.0,第二个网卡连接到专用网络 10.0.3.0,等等。默认得到的客户端ip(IP Address)是10.0.2.15,网关(Gateway)是10.0.2.2,域名服务器(DNS)是10.0.2.3,可以手动参考这个进行修改。

NAT方案优缺点:

  • 笔记本已插网线时: 虚拟机可以访问主机,虚拟机可以访问互联网,在做了端口映射后(最后有说明),主机可以访问虚拟机上的服务(如数据库)。
  • 笔记本没插网线时: 主机的「本地连接」有红叉的,虚拟机可以访问主机,虚拟机不可以访问互联网,在做了端口映射后,主机可以访问虚拟机上的服务(如数据库)。

Bridged Adapter模式

解释: 网桥模式是我最喜欢的用的一种模式,同时,模拟度也是相当完美。你可以这样理解,它是通过主机网卡,架设了一条桥,直接连入到网络中了。因此,它使得虚拟机能被分配到一个网络中独立的IP,所有网络功能完全和在网络中的真实机器一样。

虚拟机与主机关系: 可以相互访问,因为虚拟机在真实网络段中有独立IP,主机与虚拟机处于同一网络段中,彼此可以通过各自IP相互访问。

虚拟机于网络中其他主机关系: 可以相互访问,同样因为虚拟机在真实网络段中有独立IP,虚拟机与所有网络其他主机处于同一网络段中,彼此可以通过各自IP相互访问。

虚拟机于虚拟机关系: 可以相互访问,原因同上。

IP:一般是DHCP分配的,与主机的「本地连接」的IP 是同一网段的。虚拟机就能与主机互相通信。

  • 笔记本已插网线时:(若网络中有DHCP服务器)主机与虚拟机会通过DHCP分别得到一个IP,这两个IP在同一网段。 主机与虚拟机可以ping通,虚拟机可以上互联网。
  • 笔记本没插网线时:主机与虚拟机不能通信。主机的「本地连接」有红叉,就不能手工指定IP。虚拟机也不能通过DHCP得到IP地址,手工指定IP后,也无法与主机通信,因为主机无IP。

这时主机的VirtualBox Host-Only Network 网卡是有ip的,192.168.56.1。虚拟机就算手工指定了IP 192.168.56.*,也ping不能主机。

Internal模式

解释: 内网模式,顾名思义就是内部网络模式,虚拟机与外网完全断开,只实现虚拟机于虚拟机之间的内部网络模式。

虚拟机与主机关系: 不能相互访问,彼此不属于同一个网络,无法相互访问。

虚拟机与网络中其他主机关系: 不能相互访问,理由同上。

虚拟机与虚拟机关系: 可以相互访问,前提是在设置网络时,两台虚拟机设置同一网络名称。如上配置图中,名称为intnet。

IP: VirtualBox的DHCP服务器会为它分配IP ,一般得到的是192.168.56.101,因为是从101起分的,也可手工指定192.168.56.*。

笔记本已插网线时:虚拟机可以与主机的VirtualBox Host-Only Network 网卡通信

这种方案不受主机本地连接(网卡)是否有红叉的影响。

Host-only Adapter模式

解释: 主机模式,这是一种比较复杂的模式,需要有比较扎实的网络基础知识才能玩转。可以说前面几种模式所实现的功能,在这种模式下,通过虚拟机及网卡的设置都可以被实现。 我们可以理解为Vbox在主机中模拟出一张专供虚拟机使用的网卡,所有虚拟机都是连接到该网卡上的,我们可以通过设置这张网卡来实现上网及其他很多功能,比如(网卡共享、网卡桥接等)。

虚拟机与主机关系: 默认不能相互访问,双方不属于同一IP段,host-only网卡默认IP段为192.168.56.X 子网掩码为255.255.255.0,后面的虚拟机被分配到的也都是这个网段。通过网卡共享、网卡桥接等,可以实现虚拟机于主机相互访问。

虚拟机与网络主机关系: 默认不能相互访问,原因同上,通过设置,可以实现相互访问。

虚拟机与虚拟机关系: 默认可以相互访问,都是同处于一个网段。

  • 虚拟机访问主机 用的是主机的VirtualBox Host-Only Network网卡的IP:192.168.56.1 ,不管主机「本地连接」有无红叉,永远通。
  • 主机访问虚拟机,用是的虚拟机的网卡3的IP: 192.168.56.101 ,不管主机「本地连接」有无红叉,永远通。
  • 虚拟机访问互联网,用的是自己的网卡2, 这时主机要能通过「本地连接」有线上网,(无线网卡不行)

小结

通过对以上几种网络模式的了解,我们就可以灵活运用,模拟组建出我们所想要的任何一种网络环境了。

比如我想模拟出来一个一台主机,监控一个局域网上网情况的网络环境。

首先我开启了两台虚拟机vhost1与vhost2,当然如果硬件允许,我同样可以再增加vhost3、vhost4…

所有的vhost我都设置成internat内网模式,网络名称为intnal,网关为192.168.56.100,意思就是通过 192.168.56.100网卡上网。其中有一台vhost1我设置为双网卡,一张为内网模式(192.168.56.100),一张为网桥模式(192.168.1.101)。两张网卡设置双网卡共享上网

虚拟机之间为局域网,其中有一台虚拟机vhost1通过与外网相连,所有局域网中的虚拟机又通过vhost1来实现上外网。这样vhost1就可以监控整个虚拟机局域网上网情况了。

推荐网络连接方式

最简单地使用桥接模式,这样可以直接访问主机与虚拟机,也可以访问外网。

如果桥接时主机不能连虚拟机,那么可以试试双网卡模式:

  • 一块用Hosy-Only。用于主机与虚拟机的互联。
  • 一块用NAT。用于虚拟机访问外网。

如果创建虚拟机时只用了一块网卡,那么操作系统里要手动添加网卡, 要注意Ubuntu184添加新网卡的方式改了, 在yaml格式的配置文件/etc/netplan/50-cloud-init.yaml里:

$ sudo ls /etc/netplan
50-cloud-init.yaml

$ sudo cat /etc/netplan/50-cloud-init.yaml
network:
    ethernets:
        enp0s3:
            addresses: []
            dhcp4: true
            optional: true
        enp0s8:
            addresses: []
            dhcp4: true
            optional: true
    version: 2

只有一块网卡enp0s03, 我们查看一下新的网卡:

$ sudo ls /sys/class/net
enp0s3@  enp0s8@  lo@

lo是回环网卡,那么新网卡名字就是enp0s8,把它加到配置文件里:

network:
    ethernets:
        enp0s3:
            addresses: []
            dhcp4: true
            optional: true
        enp0s8:
            addresses: []
            dhcp4: true
            optional: true
    version: 2

添加以后重启网卡就可以了。重启网卡的三种方式:

一、network

sudo service network restart
# or
sudo /etc/init.d/networking restart

二、ifdown/ifup

ifdown enp0s8
# or
ifup enp0s8

三、ifconfig

ifconfig enp0s8 down
ifconfig enp0s8 up

Windows虚拟机

开虚拟机感觉很卡是因为你的虚拟机性能调优没有做好假设你是在Linux上用Libvirt开Windows虚拟机,有下面几个小技巧可以大幅提升虚拟机体验:

  • 使用Windows 10 LTSC版。LTSC版是微软给一些特殊用户群体开发的精简版Win10,砍掉了大量无用功能,包括Cortana。LTSC版不能直接从MS官网获取,但是可通过MyDigitalLife等论坛获取。
  • 任务管理器检查一下CPU型号是否和主机一致,如果不一致,CPU Model要改成host-passthrough。因为Windows有针对不同CPU的调优,如果虚拟型号与实际不一致,会损失性能。
  • 各设备尽量使用VirtIO驱动,例如硬盘选择SCSI类型,将SCSI Controller Model设为VirtIO。VirtIO是一套专为虚拟机开发的设备接口,能最大幅度降低主机和客机通信的延时。
  • 不要用Libvirt提供的声卡设备,虚拟机里装一个Scream,主机上开一个Receiver。
  • 开启VCPU Pinning,就是让虚拟机线程永远跑在固定几个CPU物理线程上,这样虚拟机性能不受主机的线程调度影响。
  • 开启Hyper-V Enlightenments,这些接口能帮助虚拟机中的Win10提高性能。
  • 如果你的主机有两块显卡(集成显卡也算),可以考虑开显卡透传,如果显卡有自己的Video Port的话,接一个显示器上去,这样就真的和两台电脑没什么区别了。

我自己的情况,我的笔记本i5-1135G7,16G内存,集显+GTX1650,主机装Linux,虚拟机分配2核4线程+8G内存+N卡,对性能要求不高的游戏就毫无压力了,一些入门级的3D游戏能达到110fps。