手把手教你使用 virtualBox 让虚拟机连接网络

手把手教你使用 virtualBox 让虚拟机连接网络,第1张

打开设置-》网络

采用桥接模式连接网络,并选择对应的物理网卡

注意: 这里 “界面名称” 必须选择实际的物理网卡。

1、使用 nmcli 命令,查看当前虚拟机的所有网络基本信息:

nmcli connection show

具体参数说明如下:

2、设置 centos7 的网络获取方式为自动获取 IP(这种方法最方便啦 O(∩_∩)O~)

3、上面的命令只是修改了设定档,因此还要使用 nmcli 的 up 参数让它实际生效:

使用 ping 命令验证:

成功啦,我们的 virtualBox 的这台虚拟机连上外网啦 O(∩_∩)O~

最近打算搭一套虚拟机来学习一下 k8s,所以就需要搭建多个可以相互访问的虚拟机并组成一个局域网。搭建的时候走了不少弯路,这里记录一下组网过程。

本文涉及到了如下部分:

目的是搭建一套网络,满足下列要求:

从需求可以看出来,网络模式选 桥接网卡 模式肯定就不行了,因为桥接网卡会将虚拟机映射到宿主机所处的网络中,虽然可以将其设置为静态 ip,但是依旧会对宿主机网络产生一定影响,如果 宿主机移动到了另一个网络中,而那个网络中恰好又有另一个设备已经使用了虚拟机的 ip,那么势必会出现问题 。所以,桥接模式 pass。

然后来看一下 仅主机 host-only 模式,这个模式可以满足第 2、3 条需求。但是使用该模式后,虚拟机想要访问互联网的话会受到宿主机的 host-only 网卡的网络状态影响,如果该网卡不能上网的话那么虚拟机就都不能上网,虽然可以通过配置完成,但是会修改宿主机的网络配置,个人不太满意,继续思考。

一提到简单的网络配置那就想到了 NAT网络地址转换 模式了。这个模式是 VirtualBox 默认的网络配置,可以让虚拟机无需配置就直接连接互联网。刚好可以满足第 1 条需求。

那么情况就已经清晰了,给每台虚拟机都配置双网卡:

注意!该套双网卡配置的默认网卡是网卡1,且网卡1的NAT地址转换模式是无法访问其他虚拟机的,而 k8s 有很多网络配置将默认使用网卡1。就会导致很多问题,详情如下:

目的明确了接下来就是动手了,首先因为 VirtualBox 默认的就是 NAT网络地址转换 模式。且绑定在 网卡1 上。所以这个就不用我们 *** 作了,可以通过下面步骤确认一下:

因为宿主机访问虚拟机可以用 网卡2 的 host-only 模式完成,所以这里的端口转发就不用配置了。

然后我们给虚拟机配置第二个网卡,使用 host-only 模式。首先需先新建一个 host-only 网络,点击菜单栏中 管理 >主机网络管理器 ,再点击新建创建,就可以创建一个可用的网络。

这个网卡就是虚拟机局域网的网关。可以看到默认生生成的网卡地址为 192.168.56.1 ,也就是说我们将要把虚拟机加入到 192.168.56.XXX 网段上。因为我们要把虚拟机地址设为静态地址,所以后面的 DHCP 服务器不用去关心。

然后就可以给每个虚拟机设置网卡了。如下,点击 虚拟机设置 >网络 >网卡2 >连接方式选择仅主机 >界面名称选择上一步新建的网络 。设置完成后点击确认就可以完成绑定了。

网卡挂载完成后,就可以启动虚拟机进行配置了,登录上虚拟机之后 ifconfig 看一下:

从图里可以看到, enp0s3 网卡的 ip 为 10.0.2.15 ,这是网络地址转换模式配置的1号网卡。诶惊了,我第二个网卡呢?其实这里已经挂载上了,只不过还没用启用,用 ifconfig -a 就可以看到第二个网卡了。

图里可以看到网卡2的名字叫 enp0s8 ,你的有可能不一样,这个记住,一会要用的。

启用网卡2

接下来就启用网卡2,首先编辑网卡配置文件。

然后新增如下内容,记得把里边的 enp0s8 改成自己的网卡名,我把这台虚拟机的 ip 设置成了 192.168.56.21 ,这个可以自己随便改,只要是 192.168.56.XXX 网段就行:

编辑完成后 :wq 保存,然后启用该网卡 下面这个网卡名也要改成自己的 :

什么你说报错了,找不到 ifup ?那安上就行了呗:

启用完了之后再 ifconfig 就可以看到新的网卡了,如果没看到的话就 reboot 重启一下。

然后照葫芦画瓢配置好另一台虚拟机就可以测试啦,我配置的信息如下:

测试的话相互 ping 就好了,互联网访问直接 ping www.baidu.com 就行,这里就不展示了。

到此虚拟机就算组网成功了,添加新的虚拟机也只需要将其 ip 添加到 192.168..56.XXX 网段上即可。

如果我们想要在一台虚拟机上访问另一台虚拟机,就要用 ssh xxx.xxx.xxx.xxx 来连接,那么怎么通过别名而不是直接输入 ip 地址进行连接呢,很简单,使用下述命令编辑文件 ~/.ssh/config ,没有直接新建即可:

然后追加下述内容:

完成后 :wq 保存后测试一下,发现可以直接用 master1 进行访问了:

如果在登录输入密码后提示 Permission denied, please try again ,那就修改 ssh 的配置文件,启用 root 登录。使用 sudo vi /etc/ssh/sshd_config 来打开配合文件,并将 PermitRootLogin 和 PasswordAuthentication 字段的值设置为 yes 。然后使用 service sshd restart 重启服务即可。

上一步中使用 ssh master1 访问其他虚拟机时,仍然需要输入密码,所以最后再来配置一下免秘钥登录,配置过程很简单,想让机器 A 访问机器 B,就把机器 A 的公钥放到机器 B 的 ~/.ssh/authorized_keys 文件里就行了。

首先我们在 worker1 上生成一个密钥,输入下述命令后一路回车即可:

然后登录 master1 ,并依次输入下述两条命令将其复制并写入到 master1 的 authorized_keys 中,注意我下面的 scp 命令中使用了 worker1 别名,要提前进行配置:

然后再次使用 ssh master1 登录就可以发现直接连接上而不需要密码了。

VirtualBox中有4种网络连接方式:

VMWare中有三种,其实他跟VMWare 的网络连接方式都是一样概念,只是比VMWare多了Internal方式。

下图说明了这四种方式的区别:

NAT:Network Address Translation,网络地址转换

NAT模式是最简单的实现虚拟机上网的方式,可以这样理解:

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

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

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

特点

1、如果主机可以上网,虚拟机可以上网

2、虚拟机之间不能ping通

3、虚拟机可以ping通主机(此时ping虚拟机的网关,即是ping主机)

4、主机不能ping通虚拟机

应用场景

虚拟机只要求可以上网,无其它特殊要求,满足最一般需求。

ip样式

ip 10.0.2.15

网关 10.0.2.2

注意此处的网关在不同虚拟机中可能是同一个值,但是这归属于不同的NAT Engine,因此实际上各个虚拟机用的不是同一个网关。

原理

虚拟机的请求传递给NAT Engine,由它来利用主机进行对外的网络访问,返回的数据包再由NAT Engine给虚拟机。

网桥模式,可以这样理解:

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

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

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

特点

1、如果主机可以上网,虚拟机可以上网

2、虚拟机之间可以ping通

3、虚拟机可以ping通主机

4、主机可以ping通虚拟机

以上各点基于一个前提:主机可以上网

5、如果主机不可以上网,所有1-4特点均无

应用场景

虚拟机要求可以上网,且虚拟机完全模拟一台实体机。

ip样式

ip 与本机ip在同一网段内

网关 与本机网关相同

原理

通过主机网卡,架设一条桥,直接连入到网络中。它使得虚拟机能被分配到一个网络中独立的IP,所有网络功能完全和在网络中的真实机器一样。

(虚拟机是通过主机所在网络中的DHCP服务得到ip地址的,所以按理来说,两者是完全独立的,但事实却是虚拟机是没有独立硬件的,它还是要依靠主机的网卡,因此,主机要断开网络,虚拟机也就没法拿到ip了,所以所有特点就全消失了)

内网模式,顾名思义就是内部网络模式:

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

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

特点

1、虚拟机不可以上网

2、虚拟机之间可以ping通

3、虚拟机不能ping通主机

4、主机不能ping通虚拟机

应用场景

让各台虚拟机处于隔离的局域网内,只让它们相互通信,与外界(包括主机)隔绝。

虚拟机ip配置要点

对于XP自动获取ip即可,但对于linux,必须 手动配置ip和子网掩码 ,手动配置时需保证各个虚拟机ip在同一网段。

ip样式

ip 169.254.147.9

子网掩码 255.255.0.0

默认网关

原理

各个虚拟机利用VirtualBox 内置的DHCP服务器 得到ip,数据包传递不经过主机所在网络,因此安全性高,防止外部抓包。

主机模式,这是一种比较复杂的模式,需要有比较扎实的网络基础知识才能玩转。可以说前面几种模式所实现的功能,在这种模式下,通过虚拟机及网卡的设置都可以被实现。

我们可以理解为Guest在主机中 模拟出一张专供虚拟机使用的网卡 ,所有虚拟机都是连接到该网卡上的,我们可以通过设置这张网卡来实现上网及其他很多功能,比如(网卡共享、网卡桥接等)。

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

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

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

特点

1、虚拟机不可以上网。

2、虚拟机之间可以ping通。

3、虚拟机可以ping通主机。(注意这里虚拟机与主机ping通是指通过主机的名为VirtualBox Host-Only Network的网卡,因此ip是该网卡ip 192.168.56.1,而不是你现在正在上网所用的ip。)

4、主机可以ping通虚拟机。(注意这里是指主机通过VirtualBox Host-Only Network的网卡ping通虚拟机,使用你现在正在上网所用的网卡是ping不通的。)

应用场景

在主机无法上网的情况下(主机可以上网的情况下可以用host-only,也可以用桥接),需要搭建一个模拟局域网,所有机器可以互访。

ip样式

ip 与本机VirtualBox Host-Only Network的网卡ip在同一网段内(默认192.168.56.*)

网关 本机VirtualBox Host-Only Network的网卡ip(默认192.168.56.1)

原理

通过VirtualBox Host-Only Network网卡进行通信,虚拟机以此ip作为网关,因此模拟了一个本机与各个虚拟机的局域网,如名称所指。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/bake/11440271.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-16
下一篇 2023-05-16

发表评论

登录后才能评论

评论列表(0条)

保存