VirtualBox Network设置的NAT和Bridged Adapter模式区别

举报
Jerry Wang 发表于 2021/12/12 11:46:44 2021/12/12
【摘要】 区别:NAT模式下,虚拟机仍然可以访问网络,但是从网络接收者的眼中看来,这些网络请求都来自宿主机,而感知不到虚拟机。外网也无法访问虚拟机网络。虚拟机和宿主机器的IP地址在不同的子网,比如192.168.1.1和192.168.1.2。帮助文档提到,如果你只是想单纯的在虚拟机里访问网络,使用NAT足够了。Host-Only: 虚拟机仍然被分配一个IP地址,但是只有在虚拟机运行的环境里可以访问这...


区别:

NAT模式下,虚拟机仍然可以访问网络,但是从网络接收者的眼中看来,这些网络请求都来自宿主机,而感知不到虚拟机。外网也无法访问虚拟机网络。虚拟机和宿主机器的IP地址在不同的子网,比如192.168.1.1和192.168.1.2。

帮助文档提到,如果你只是想单纯的在虚拟机里访问网络,使用NAT足够了。

Host-Only: 虚拟机仍然被分配一个IP地址,但是只有在虚拟机运行的环境里可以访问这个IP地址。该地址对外界不可见。

Bridged:虚拟机有独立的IP地址,能被网络上其他主机访问。

VirtualBox的帮助文档:

https://www.virtualbox.org/manual/ch06.html

VirtualBox可以虚拟化以下六种物理网卡:

VirtualBox官网有个表格,非常清晰地展示了几种网络模式的区别:

第一列VM <-> Host: 表明虚拟机和宿主机是否可以通过网络互相访问。

第二列VM1 <-> VM2: 表明虚拟机之前是否能够通过网络相互访问

第三列VM -> Internet: 虚拟机是否可以访问网络

第四列VM <- Internet: 网络是否可以访问虚拟机

我在启动minikube时,遇到如下错误消息:

Starting local Kubernetes v1.10.0 cluster…

Starting VM…

E1010 03:27:37.920050 4827 start.go:174] Error starting host: Error creating host: Error executing step: Running precreate checks.

: We support Virtualbox starting with version 5. Your VirtualBox install is “WARNING: The vboxdrv kernel module is not loaded. Either there is no module available for the current kernel (3.10.0-862.11.6.el7.x86_64) or it failed to load. Please recompile the kernel module and install it by sudo /sbin/vboxconfig You will not be able to start VMs until this problem is fixed. 5.2.18r124319”. Please upgrade at https://www.virtualbox.org.

Retrying.

E1010 03:27:37.921090 4827 start.go:180] Error starting host: Error creating host: Error executing step: Running precreate checks.

: We support Virtualbox starting with version 5. Your VirtualBox install is “WARNING: The vboxdrv kernel module is not loaded. Either there is no module available for the current kernel (3.10.0-862.11.6.el7.x86_64) or it failed to load. Please recompile the kernel module and install it by sudo /sbin/vboxconfig You will not be able to start VMs until this problem is fixed. 5.2.18r124319”. Please upgrade at https://www.virtualbox.org

核心是这个错:

The vboxdrv kernel module is not loaded.

执行命令行:

rcvboxdrv setup

结果:

vboxdrv.sh: Stopping VirtualBox services.

vboxdrv.sh: Starting VirtualBox services.

vboxdrv.sh: Building VirtualBox kernel modules.

This system is currently not set up to build kernel modules.

Please install the gcc make perl packages from your distribution.

Please install the Linux kernel “header” files matching the current kernel

for adding new hardware support to the system.

The distribution packages containing the headers are probably:

kernel-devel kernel-devel-3.10.0-862.11.6.el7.x86_64

解决方案:

1. 按照这篇文章的介绍安装gcc make perl package:

2. 安装kernel header文件。参考:

3. 执行命令行:

rcvboxdrv setup

确保看到消息:

vboxdrv.sh: Building VirtualBox kernel modules.

这个vboxdrv的作用,VirtualBox的帮助文档写的很清楚:

In order to run other operating systems in virtual machines alongside your main operating system, VirtualBox needs to integrate very tightly into the system. To do this it installs a “driver” module called vboxdrv which does a lot of that work into the system kernel, which is the part of the operating system which controls your processor and physical hardware. Without this kernel module, you can still use the VirtualBox manager to configure virtual machines, but they will not start.

我简单翻译一下:

为了在宿主机里以虚拟机的方式运行其他类型的操作系统,VirtualBox需要和宿主机操作系统的Kernel交互,进行交互的模块就称为vboxdrv驱动,它本身也是操作系统的一部分,负责控制操作系统的CPU和其他硬件资源。如果没有vboxdrv驱动,我们虽然仍旧可以使用VirtualBox manager来管理虚拟机,但无法在宿主系统上启动这些虚拟机。

rcvboxdrv setup执行后问题解决。

要获取更多Jerry的原创文章,请关注公众号"汪子熙".

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。