VirtualBox 网络连接配置

        这几天为了确认笔记本电脑的ssd磁盘型号,拆开电脑查看了一下,并且拔出来又装回去了,就是这个插拔的动作,导致原本能好好运行的虚拟机,突然启动报错启动不起来了。看了启动日志,显示启动的时候磁盘数据校验出错。折腾了好久没解决,也不知道具体是什么原因。我的虚拟机是 virtualbox + centos7 的组合模式,没办法,只能重新去下载了一个centos7的镜像重新安装。

        安装是很顺利,但是安装完成后,发现VirtalBox的网络配置有点糊里糊涂,整了半天新起的linux虚拟机也没连上网,网上的教程只是依样画葫芦,没有说是啥原理,于是重新认真研究了一下VirtualBox的各种网络配置,在此记录一下,以备日后可以查阅,也希望可以帮到遇到同样问题的童鞋。

        之前用的是Vmvare虚拟机,的确好用多了,没那么多复杂的配置,但是Vmvare人家是要收费的。相对来说,VirtualBox的配置要比Vmvare复杂些,需要知道一些网络知识比如交换机和网络地址映射(NAT)的概念才能很好的理解这些配置的意义。

        我们在windows上使用linux虚拟机,一般网络需要两个要求:1、虚拟机里面要能访问到外网(互联网)  2、能从宿主机连接进入到虚拟机   在virtalbox的设计看来,这两个需求是独立的,因此就设计了不同的网络连接方式。最常用的是 网络地址转换(NAT)和 仅主机(Host-Only)网络。其中网络地址转换(NAT)是为了使虚拟机能通过虚拟的 NAT设备接入外网,而仅主机(Host-Only)网络就是为了能从宿主机能访问到虚拟机。因此,我们首先可以使用第一种配置方式  NAT + Host-Only方式达到目的

        首先,你可能需要了解一下VirtualBox各种网络网络配置具体的意义,可以参考这篇文章:

搞懂虚拟机VirtualBox网络配置 - 知乎 在了解这些不同的网络连接方式之后,我们可以继续往下看

        为了达到我们的两个目的(1、虚拟机里面要能访问到外网(互联网)  2、能从宿主机连接进入到虚拟机),我们可以有如下的配置方式:

一、网络地址转换(NAT) + 仅主机(Host-Only)网络 方式

        配置了网络地址转换(NAT)的连接方式,VirtualBox就会为我们的虚拟机虚拟出一个NAT设备,并且给我们的虚拟机配置一块专用的网卡,分配一个单独的ip,网络名称一般为。我们l虚拟机发送给互联网的数据,都通过这个虚拟的NAT设备转发。这个虚拟的NAT设备就类似于我们通常用的路由器,我们上网的时候都需要从路由器接一条网线出来,连接我们的电脑,我们电脑(虚拟机)里面的数据都通过路由器(NAT设备)发送和接收。我们都知道,我们的机器用NAT方式上网的话,我们机器能访问(主动发起连接)到外网的ip,但是外网的机器是访问(主动发起连接)不到我们的机器的,因为我们的机器ip其实对外网的机器是不可见的,外网的机器只知道路由器(NAT设备)的地址。如果想要外网机器能访问到我们的机器,需要在NAT设备上做端口映射,我们在后面会提到。

        为了让我们能从宿主机直接访问到虚拟机进行操作,仅配置网络地址转换(NAT)的连接方式是不行的,前面的配置仅解决了【虚拟机里面要能访问到外网(互联网)】这个需求。我们还需要使用其他手段。VirtualBox提供了仅主机(Host-Only)网络连接方式,顾名思义,就是只能通过宿主机访问的方式。当配置了这个方式,VirtualBox同样给我们的虚拟机配置一个网卡和一个单独的ip,网卡的名称一般为enp0s8。下面是配置教程:

(1)配置 网络地址转换(NAT) 网卡

在左侧点击需要更改的虚拟机,右键 设置->网络,有4个网卡,可以在任意一个网络进行配置,如下:

需要注意的是 控制芯片 这个选项,一定要选 Intel PRO/1000 MT 服务器 (xxx),我开始的时候以为这个不重要,然后直接用默认值 xxx MT 桌面 xxx,发现DHCP老是获取不到ip,连接不了外网,后来改了之后才可以。这个不知道是不是个例,有兴趣可以自己去查阅资料证实

一般来说,如果你不需要从除宿主机外的机器访问虚拟机,是不需要给这个网卡配置静态ip的,直接用动态ip就可以,如果要配置静态ip,你还需要费心去查找网关ip和DNS ip地址,对于新手来说这也要费一番功夫。

(2)配置 仅主机(Host-Only)网络 网卡

        在左侧点击需要更改的虚拟机,右键 设置->网络,有4个网卡,可以在任意一个网络进行配置,连接方式选 仅主机(Host-Only)网络 ,如下:

         这个网卡的配置,控制芯片就可以是默认值,没问题。但是 混杂模式要选 全部允许 ,这个是照着别人的教程来的,我也没有深究是为啥。

        配置完之后启动,可以用命令查看一下网络配置。如果是最小化安装,是没有ifconfig命令的,只有ip命令,用ip addr 查看:

lo网卡是回环网卡,不用管,enp0s8就是我们配置的仅主机(Host-Only)网络 网卡,enp0s17就是我们配置的 网络地址转换(NAT) 网卡。你可能会有疑问,我是怎么知道的?其实在配置仅主机(Host-Only)网络 网卡的时候,我们有个参数叫"界面名称",我们只有一个选项,就是“VirtualBox Host-Only Ethernet Adapter”,这个其实是一个这个网卡的一些参数配置,应该是VirtalBox安装完成后就自动生成的,我们也可以新增其他新的配置,在下面的路径查看及修改:左上角点击 管理->主机网络管理器(H) 如下:

因此,我们用这个“VirtualBox Host-Only Ethernet Adapter”配置生成的 Host-Only网卡,ip范围就是从192.168.56.101~192.168.56.254。因此enp0s8就是我们配置的仅主机(Host-Only)网络 网卡。那么另一个就是enp0s17就是我们配置的 网络地址转换(NAT) 网卡。那由此看来,网络地址转换(NAT) 网卡的DHCP ip地址范围默认就是10.0.2.x

检验:

外网访问就是命令:ping www.baidu.com

然后我们根据ip addr查看的结果,我们要从宿主机用xshell连接虚拟机,就是用这个ip:192.168.56.102去连接,端口22,能连上说明就配置成功了。

另外,因为目前配置的仅主机(Host-Only)网络 网卡ip是自动获取的,每次重启就有可能变更,是否可以配置成静态ip?答案是可以的,这个是linux的网络配置范畴,可以参考我的另一篇文章进行配置:虚拟机里的 centos 使用静态ip地址-CSDN博客

二、网络地址转换(NAT) + 端口映射 配置方式

        从前文提到的 网络地址转换(NAT) + 仅主机(Host-Only)网络 配置方式我们知道,网络地址转换(NAT)的配置实现了我们虚拟机访问外网的目的,既然VirtualBox实现了虚拟NAT设备的功能,那我们是否可以直接用该虚拟NAT设备做端口映射,从而达到我们通过宿主机访问虚拟机的目的?答案是肯定的。

        前面配置 网络地址转换(NAT) 网卡的时候,点击高级箭头,下面有个"端口转发"的按钮,就可以配置端口映射,下面配置样例:

点击右边的加号按钮就可以增加端口映射,上面的配置是指,当访问宿主机任意网卡(ip)的1222端口的时候,会把请求转发到ip192.168.56.102的22端口上,这个ip是我们linux虚拟机的ip,并且不管是哪个网卡的ip都可以,同样可以是10.0.2.15这个ip。VirtalBox做了处理,没有网段的区分。

        然后访问的时候,可以用宿主机的ip+1222端口去连接,就能连接上我们的虚拟机,比如我直接在宿主机上用xshell连接127.0.0.1 的1222端口,也可在其他能访问到宿主机的机器上访问虚拟机,比如宿主机有一个外网的ip 10.33.2.10,那么也可以在其他机器上用10.33.2.10+1222端口访问到我们的虚拟机

        到这里你可以看出来,网络地址转换(NAT) + 端口映射的配置方式,只需要配置一块网卡,就能达到我们的两个目标。并且不仅限于宿主机访问,其他机器也一样可以访问到我们的虚拟机。

三、NAT网络 + 端口映射

        NAT网络 和 网络地址转换(NAT)这两种网卡的配置方式,其实是一回事。原理都一样,区别在于:

        1、网络地址转换(NAT)具有默认的DHCP ip分配范围(固定),而 NAT网络 可以自己配置

        2、NAT网络是全局配置可以多台虚拟机共用,而网络地址转换(NAT) 是仅针对一台虚拟机的配置

NAT网络配置如下:

(1)首先配置Natnetwork

坐上角 管理->全局设定->网络 ,点右边加号新建Nat网络,然后双击新建的Nat网络

然后做点击端口转发,配置端口转发,然后保存

虚拟机ip也可以填任意网卡的ip

(2)配置虚拟机的 NAT网络 网卡

        在左侧点击需要更改的虚拟机,右键 设置->网络,有4个网卡,可以在任意一个网络进行配置,连接方式选 NAT网络 ,如下:

选择 NAT网络,界面名称选你刚才新建的,混杂模式这个在此次似乎不用管。然后保存,启动虚拟机然后用ip addr查看,发现也会新增一个网卡,如下:

四、桥接网卡 方式

        这个方式相当于虚拟机和宿主机是同等的地位,需要分配在同一个网段,即对外部看来,宿主机跟虚拟机是两台机器,虚拟机需要占用一个外网ip。这种方式目前对我不适用,但是配置起来应该是同样的道理,有兴趣的可以自己去实践,这里不做赘述

总体说来,VirtualBox的网络配置方式十分丰富,但是要理解了才能配置好

参考文章:

 virtualBox虚拟机网络配置(nat网络和桥接网卡两种模式)详解_vboxnetnat.exe-CSDN博客

virtualbox中网络地址转换和NAT网络的区别-CSDN博客

搞懂虚拟机VirtualBox网络配置 - 知乎 (zhihu.com)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/2660361.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

Java多线程技术五——单例模式与多线程

1 概述 本章的知识点非常重要。在单例模式与多线程技术相结合的过程中,我们能发现很多以前从未考虑过的问题。这些不良的程序设计如果应用在商业项目中将会带来非常大的麻烦。本章的案例也充分说明,线程与某些技术相结合中,我们要考虑的事情会…

Spring 是如何解决循环依赖问题的方案

文章目录 Spring 是如何解决循环依赖问题的? Spring 是如何解决循环依赖问题的? 我们都知道,如果在代码中,将两个或多个 Bean 互相之间持有对方的引用就会发生循环依赖。循环的依赖将会导致注入死循环。这是 Spring 发生循环依赖…

Linux安装GitLab教程

Linux安装GitLab教程 1、配置yum源 相当于新建一个文件,通过这个文件来安装gitlab vim /etc/yum.repos.d/gitlab-ce.repo 把这些配置粘进去 [gitlab-ce] nameGitlab CE Repository baseurlhttps://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el$releasever/ gp…

NVIDIA GeForce Experience下载更新失败怎么办?

下载的文件会在C:\ProgramData\NVIDIA Corporation\Downloader这个目录下, 打开名字很长的文件夹,在被删除前手动安装即可。

12.27_黑马数据结构与算法笔记Java(补1)

目录 266 活动选择问题 分析 267 活动选择问题 贪心 268 分数背包问题 贪心 269 0-1 背包问题 贪心 270 斐波那契 动态规划 271 斐波那契 动态规划 降维 272 Bellman Ford 动态规划 分析 273 Bellman Ford 动态规划 实现1 274 Bellman Ford 动态规划 实现2 275 Leetco…

微信小程序开发系列-06事件

什么是事件 事件是视图层到逻辑层的通讯方式。事件可以将用户的行为反馈到逻辑层进行处理。事件可以绑定在组件上,当达到触发条件时,就会执行逻辑层中对应的事件处理函数。事件对象可以携带额外信息,如 id, dataset, touches。 事件分类 事…

使用cmake配置matplotlibcpp生成VS项目

https://gitee.com/feboreigns/matplotlibcpp 这篇文章需要一些cmake基础,python基础,visualstudio基础 准备环境 注意如果在VS平台使用必须要手动下载python,不能使用conda里面的,比如3.8版本,因为conda里面没有py…

Understanding Deep Image Representations by Inverting Them(2014)

文章目录 AbstractIntroductionContribution -Summary hh Abstract 从SIFT和视觉词袋到卷积神经网络(cnn),图像表示几乎是任何图像理解系统的关键组成部分。然而,我们对它们的了解仍然有限。在本文中,我们通过提出以下问题对表征中包含的视觉…

Mybatis行为配置之Ⅱ—结果相关配置项说明

专栏精选 引入Mybatis Mybatis的快速入门 Mybatis的增删改查扩展功能说明 mapper映射的参数和结果 Mybatis复杂类型的结果映射 Mybatis基于注解的结果映射 Mybatis枚举类型处理和类型处理器 再谈动态SQL 文章目录 专栏精选引言摘要正文autoMappingBehaviorautoMappingU…

关于设计模式、Java基础面试题

前言 之前为了准备面试,收集整理了一些面试题。 本篇文章更新时间2023年12月27日。 最新的内容可以看我的原文:https://www.yuque.com/wfzx/ninzck/cbf0cxkrr6s1kniv 设计模式 单例共有几种写法? 细分起来就有9种:懒汉&#x…

【中小型企业网络实战案例 四】配置OSPF动态路由协议

【中小型企业网络实战案例 三】配置DHCP动态分配地址-CSDN博客 【中小型企业网络实战案例 二】配置网络互连互通-CSDN博客 【中小型企业网络实战案例 一】规划、需求和基本配置_大小企业网络配置实例-CSDN博客 配置OSPF 由于内网互联使用的是静态路由,在链路出…

第八章 JPA和缓存

1.JPA 1.1.创建User实体类 public class User {private Integer uId;private String uName;private Integer uGender;private Integer uAge;private String uLoginname;private String uPassword;private Date uBirth;private String uEmail;private String uAddress; } 1.2…

走进电子技术之光敏电阻、电位器、开关

同学们大家好,今天我们继续学习杨欣的《电子设计从零开始》,这本书从基本原理出发,知识点遍及无线电通讯、仪器设计、三极管电路、集成电路、传感器、数字电路基础、单片机及应用实例,可以说是全面系统地介绍了电子设计所需的知识…

Redis 是如何执行的?

文章目录 命令执行流程步骤一:用户输入一条命令步骤二:客户端先将命令转换成 Redis 协议,然后再通过 socket 连接发送给服务器端步骤三:服务器端接收到命令步骤四:执行前准备步骤五:执行最终命令&#xff0…

牛客网SQL训练5—SQL大厂真题面试

文章目录 一、某音短视频1.各个视频的平均完播率2.平均播放进度大于60%的视频类别3.每类视频近一个月的转发量/率4.每个创作者每月的涨粉率及截止当前的总粉丝量5.国庆期间每类视频点赞量和转发量6.近一个月发布的视频中热度最高的top3视频 二、用户增长场景(某度信…

idea Spring Boot项目使用JPA创建与数据库链接

1.pom.xml文件中添加依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-jpa</artifactId></dependency><dependency><groupId>com.mysql</groupId><artifactId>…

文章智能改写伪原创方法技巧

哈喽&#xff0c;小伙伴们&#xff0c;大家好&#xff0c;我 又回来了。 今天给大家分享一个文章智能改写原创的方法&#xff0c;现在的自媒体平台&#xff0c;做视频流量挺不好做的&#xff0c;除非你有好的方法&#xff0c;文章呢&#xff0c;就相对比较容易点了&#xff0c;…

Graph Transformer2023最新研究成果汇总,附15篇必看论文

图Transformer是一种结合了Transformer模型和图神经网络&#xff08;GNN&#xff09;的框架&#xff0c;用于在图形结构数据上执行预测任务。在图Transformer中&#xff0c;Transformer的自注意力机制被用来学习节点之间的关系&#xff0c;而GNN则被用来生成节点的嵌入表示。通…

Qt学习:Qt的意义安装Qt

Qt 的简介 QT 是一个跨平台的 C图形用户界面应用程序框架。它为程序开发者提供图形界面所需的所有功能。它是完全面向对象的&#xff0c;很容易扩展&#xff0c;并且允许真正地组件编程。 支持平台 xP 、 Vista、Win7、win8、win2008、win10Windows . Unix/Linux: Ubuntu 等…

一、C++简介

C语言的发展史 1983年&#xff0c;贝尔实验室&#xff08;Bell Labs&#xff09;的Bjarne Stroustrup发明了C。 C在C语言的基础上进行了扩充和完善&#xff0c;是一种面向对象程序设计&#xff08;OOP&#xff09;语言。 Stroustrup说&#xff1a;“这个名字象征着源自于C语言变…