⑴ virtualbox 虚拟机组网
最近打算搭一套虚拟机来学习一下 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..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 登录就可以发现直接连接上而不需要密码了。
⑵ oracle virtualbox 虚拟机网络
下表概述了最重要的联网模式。
表6.1。联网模式概述
网络地址转换(NAT)是从虚拟机访问外部网络的最简单方法。通常,在主机网络和来宾系统上不需要任何配置。因此,它是Oracle VM VirtualBox中的默认联网模式。
启用了NAT的虚拟机的行为就像是一台通过路由器连接到Internet的真实计算机。在这种情况下,路由器是Oracle VM VirtualBox网络引擎,该引擎透明地映射来往虚拟机的流量。在Oracle VM VirtualBox中,此路由器放置在每个虚拟机和主机之间。由于默认情况下虚拟机无法相互通信,因此这种隔离可最大程度地提高安全性。
NAT模式的缺点是,就像路由器后面的专用网络一样,虚拟机是不可见的,并且无法从外部Internet访问。除非设置端口转发,否则无法以这种方式运行服务器。请参见 使用NAT配置端口转发 。
虚拟机从集成到Oracle VM VirtualBox的DHCP服务器接收专用网络上的网络地址和配置。这样分配给虚拟机的IP地址通常与主机位于完全不同的网络上。由于可以将虚拟机的多个卡设置为使用NAT,因此第一张卡连接到专用网络10.0.2.0,第二张卡连接到网络10.0.3.0,依此类推。如果需要更改来宾分配的IP范围,请参见 微调Oracle VM VirtualBox NAT引擎 。
由于虚拟机连接到Oracle VM VirtualBox内部的专用网络并且对主机不可见,因此主机或同一网络上的其他计算机将无法访问客户机上的网络服务。但是,就像物理路由器一样,Oracle VM VirtualBox可以通过端口转发使选定的服务对来宾外部的世界可用。这意味着Oracle VM VirtualBox侦听主机上的某些端口,并在相同或不同端口上将到达主机的所有数据包重新发送给来宾。
对于主机上的应用程序或网络上的其他物理或虚拟机,看起来好像代理的服务实际上在主机上运行。这也意味着您不能在主机的相同端口上运行相同的服务。但是,您仍然可以获得在虚拟机中运行服务的优势。例如,主机或其他虚拟机上的服务不会因服务中的漏洞或错误而受损或崩溃,并且该服务可以在与主机系统不同的操作系统中运行。
要配置端口转发,可以使用图形化的 端口转发编辑器,该编辑器可在网络设置对话框中找到,用于配置为使用NAT的网络适配器。在这里,您可以将主机端口映射到来宾端口,以将网络流量路由到来宾中的特定端口。
或者,可以使用命令行工具 VBoxManage
您将需要知道服务使用的来宾端口,并决定要使用主机上的端口。您可能要在来宾和主机上使用相同的端口。您可以使用主机上服务尚未使用的任何端口。例如,要在来宾中建立到ssh服务器的入站NAT连接 ,请使用以下命令:
⑶ 如何让virtualbox虚拟机上网
可通过以下步骤让virtualbox虚拟机上网:
1、在虚拟机中设置,点击虚拟机中的"设置",选择"网络",选择“连接方式”,选择"NAT";
2、进入虚拟机系统(XP或者Ubuntu),将IP设置成为DHCP自动获取。这样虚拟机就可以上网;
3、点击虚拟机中的"设置",选择"网络",选择“连接方式”,选择"Bridged Adapter"。进入虚拟机系统(XP或者Ubuntu),静态设置IP,将IP设置成和主机在一个网段的IP,网关和DNS设置和主机的一样。这样虚拟机就可以上网了。
⑷ 如何设置virtualbox虚拟机上网设置
可通过以下步骤设置virtualbox虚拟机上网使用:
1、如是NAT网络接入模式,虚拟机可访问主机,虚拟机可访问互联网,在做了端口映射后,主机可以访问虚拟机上的服务(如数据库)。在设置里选择网络,在启用网络连接的连接方式中选择网络地址转换(NAT),点击确定;
2、如是桥接网卡模式,可先启用虚拟机的虚拟网卡,再设置桥接;
3、如是内部网络模式,虚拟机系统访问Internet,在设置里选择网络,在启用网络连接的连接方式中选择内部网络,点击确定。