virtualbox怎么从主机访问虚拟机
1、首先打开virtualbox软件,选择“偏好设置”选项。
2、然后点击“网络”标签,再选择“仅主机(Host -Only)网络,单击旁边的添加”按钮”添加一个网络。
3、选中刚刚添加的按钮,单击下方的”编辑“按钮,在打开的页面中选择”DHCP服务器“,勾选”启用服务器“,设置完成后按下回车确定更改返回。
4、然后右击选择“设置”,在设置中选择“网络”,点击“网卡2”选择“仅主机(Host-Only)适配器”模式,界面名称选择刚才建立的网络,回车确定完成设置。
5、最后设置完成在虚拟机大佬windows命令提示符,输入“ipconfig”就能得到IP地址,再在宿主机里ping该IP地址发现是能ping通的,说明设置没有问题已经可以从宿主电脑通过IP地址访问虚拟机了。
VirtualBox远程显示使得虚拟机的访问更加随意和简单,但是该功能的初始安装就完全是另一种情况。
Oracle VM VirtualBox是免费的开源桌面虚拟化和服务器虚拟化软件。通过VirtualBox,可以支持三种虚拟机访问模式:通过VirtualBox软件自带界面;通过任意支持子虚拟机终端对话模式的界面(如VNC-Virtual Network Computing,RDS-Remote Desktop Service或任何其它协议)进行;通过远程显示系统进行。
远程显示系统是一个内置功能,功能强大但安装复杂。VirtualBox远程显示借助微软的RDP协议连接虚拟机,不仅Windows虚机,还包括所有安装了VirtualBox扩展包的子操作系统。让人沮丧的原因是在VirtualBox远程显示可以正常工作之前,需要经历一个异常繁琐的安装过程。
一旦它开始工作,您几乎可以在任何地方访问VirtualBox子虚拟机,而不受控制界面安装所在位置的限制。下面是关于如何安装Oracle VM VirtualBox远程访问的步骤:
增加VirtualBox远程显示扩展
首先,您需要安装可以启用VirtualBox远程显示系统的扩展包VirtualBox download页面中,可以找到Oracle VM VirtualBox Extension Pack,可以增加一系列的功能支持:USB20设备、因特尔网卡的PXE启动和VirtualBox远程显示系统。如果VirtualBox软件已经安装,所需的就是下载对应版本的扩展包。用于4112和4016版本的扩展包完全不同,所以您需要做出正确选择。
VirtualBox设置中显示的扩展包列表。在右侧位置可看到Add Package标签
在安装扩展包之前,需要关闭--注意不是挂起--所有运行中的虚拟机,并关闭整个VirtualBox系统。在Windows中,您只需双击扩展包或手动在File > Preferences > Extensions中点击Add Package图标找到正确的安装包列表。如果您是通过命令行操作的,通过VBoxManager extpack命令添加VirtualBox远程显示扩展包。
安装完成后,重启宿主机。简单地停止和重启VirtualBox软件是不可行的,但是VirtualBox并不会提示您重启。
设置虚拟机端口
现在您已经开始进入VirtualBox远程访问模式,但是还需要通过RDP单独地配置每台您需要访问的虚拟机端口。这一步需要注意:要为每台将建立RDP连接的子虚拟机分配端口号,但是连接所使用的是宿主机的IP地址,而不是子机。每台子机的端口号要不同以避免冲突。
为每台子虚拟机选择端口号。每台虚拟机必须拥有唯一的RDP访问端口
例如,我在VirtualBox中有两台虚拟机希望通过RDP访问--一台运行Windows而另一台运行测试版Haiku OSWindows
VM分配5001端口,而Haiku分配5002端口。两台机器都通过宿主机IP地址加上子虚拟机的端口访问:输入192168030:5001访问Windows,192168030:5002访问Haiku
要设置指定虚拟机的端口,登录到Settings页面,选择Display > Remote DisplayCheck Enable
Server,选择服务器端口。您可以在虚拟机运行或停止状态时进行操作(暂停时不可以),而且不需要重启虚拟机启用配置。我不建议使用Windows
OS默认分配的3389端口,因为或许会跟已经在宿主机上的某台RDP服务器冲突。
接下来,在Authentication
Method下拉菜单中可以选择三种远程客户端连接VM的认证模式。Null模式如同字面理解:不需要认证,也就是任何知道该端口号的人都可以访问。External模式通过VirtualBox软件内置的证书库进行验证,防止用户使用宿主机或虚拟机XML设置文件中的证书登录。Guest模式是一种全新的模式,通过Guest
Addition可以防止子OS用户,这种模式没有测试过。
如果选择Null模式,您可以在任何时间连接到目标系统--即使它正在启动中。而且您不仅仅连接到运行OS的宿主机,同时连接到某台虚拟机。因此,首先要对连接模式的选择加以小心管理。
管理VirtualBox远程显示连接
最后,通过VirtualBox远程显示系统连接到虚拟机就变得简单了。需要做的就是通过一台支持微软RDP的终端访问,例如Windows的Remote
Desktop Connection终端,或Linux的rdesktop或krdc
通过VirtualBox RDP访问一台Windows
7子机的实例。该显示大小经过了调整
通过远程设备连接所需的详细配置参数可能会差别很大。例如,在Windows Remote Desktop
Connection终端中,需要提前配置的是性能优化,可以在终端Experience页中的Options菜单配置。根据您使用的LAN或WAN环境,对参数进行修改。
如果您用的是VirtualBox Guest
Additions,显示画面会根据指定的RDP连接分辨率自动进行调整。但是如果您希望选择的分辨率跟虚拟机正在运行的不一致,那么VirtualBox远程显示的这个功能可能就无法实现。
最后一点,不是所有通过RDP连接的虚拟机表现都一样。采用了VirtualBox 子系统扩展包的OS可能在鼠标跟踪等方面要比其它终端更精确一些。
VirtualBox远程显示提供了单一的、统一机制的虚拟机远程访问模式。它开启了一种完全不同于本地控制台的管理方法。
您好,很高兴为您解答:
路由器配置的IP也用这个局域网里的空闲IP比如1921682111
然后在路由器界面里配置防火墙,过滤掉19216811,这个地址,最好把服务器的MAC地址也添加进去过滤整个防火墙只过滤服务器的就行了这样不影响其它PC访问外网了。
配置VirtualBox服务器
在无外设服务器端,你需要安装VirtualBox 420或更高版本。
除了VirtualBox外,你还需要在服务器上安装VirtualBox扩展包。远程桌面显示和PXE启动需要用到扩展包。
假设已安装VirtualBox的版本是4216,你可以将相应的VirtualBox扩展包安装到服务器上,如下所示。
$ wget http://downloadvirtualboxorg/virtualbox/4216/
Oracle_VM_VirtualBox_Extension_Pack-4216-86992vbox-extpack
$ sudo VBoxManage extpack install /Oracle_VM_VirtualBox_
Extension_Pack-4212-84980vbox-extpack
最后,你需要在服务器上创建VirtualBox Web服务,那样RemoteBox等VirtualBox客户软件可以与VirtualBox进行远程通信。
在这么做之前,先要确定VirtualBox Web服务将以哪种Linux用户来运行。如果你以某个特定的Linux用户来运行VirtualBox Web服务,那么只能控制由同一个用户运行的虚拟机。
下面我将创建一个新的用户(比如vbox)和一个新的用户组(比如vboxusers),专门用于VirtualBox Web服务。
$ sudo groupadd vboxusers
$ sudo useradd -g vboxusers vbox
想配置服务器上的VirtualBox Web服务,继续按如下操作。
首先,在/etc/default/virtualbox处,为Web服务创建一个配置文件。
$ sudo vi /etc/default/virtualbox VBOXWEB_USER="vbox"
VBOXWEB_TIMEOUT=0
VBOXWEB_LOGFILE="/var/log/vboxwebservicelog"
VBOXWEB_HOST="1000121"
在该配置文件中,VBOXWEB_USER被设置成了Linux用户:你将以该用户来运行VirtualBox Web服务,VBOXWEB_HOST对应于服务器的IP地址。
下一步,初始化并设置日志文件的所有权:
$ sudo touch /var/log/vboxwebservicelog
$ sudo chown vbox:vboxusers /var/log/vboxwebservicelog
创建VirtualBox配置目录:
$ sudo mkdir /home/vbox/VirtualBox
$ sudo chown vbox:vboxusers /home/vbox/VirtualBox
开启VirtualBox Web服务:
$ sudo service vboxweb-service start
核查VirtualBox Web服务的状态:
$ sudo service vboxweb-service status
Checking for VBox Web Service running
另外,核实VirtualBox Web服务在侦听端口18083。
$ sudo netstat -nap | grep vboxwebsrv
tcp 0 0 1000121:18083 0000
: LISTEN 15855/vboxwebsrv
unix 3 [ ] STREAM CONNECTED 1
52848 15855/vboxwebsrv
最近打算搭一套虚拟机来学习一下 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 网络,点击菜单栏中 管理 > 主机网络管理器 ,再点击新建创建,就可以创建一个可用的网络。
这个网卡就是虚拟机局域网的网关。可以看到默认生生成的网卡地址为 192168561 ,也就是说我们将要把虚拟机加入到 19216856XXX 网段上。因为我们要把虚拟机地址设为静态地址,所以后面的 DHCP 服务器不用去关心。
然后就可以给每个虚拟机设置网卡了。如下,点击 虚拟机设置 > 网络 > 网卡2 > 连接方式选择仅主机 > 界面名称选择上一步新建的网络 。设置完成后点击确认就可以完成绑定了。
网卡挂载完成后,就可以启动虚拟机进行配置了,登录上虚拟机之后 ifconfig 看一下:
从图里可以看到, enp0s3 网卡的 ip 为 100215 ,这是网络地址转换模式配置的1号网卡。诶惊了,我第二个网卡呢?其实这里已经挂载上了,只不过还没用启用,用 ifconfig -a 就可以看到第二个网卡了。
图里可以看到网卡2的名字叫 enp0s8 ,你的有可能不一样,这个记住,一会要用的。
启用网卡2
接下来就启用网卡2,首先编辑网卡配置文件。
然后新增如下内容,记得把里边的 enp0s8 改成自己的网卡名,我把这台虚拟机的 ip 设置成了 1921685621 ,这个可以自己随便改,只要是 19216856XXX 网段就行:
编辑完成后 :wq 保存,然后启用该网卡 下面这个网卡名也要改成自己的 :
什么你说报错了,找不到 ifup ?那安上就行了呗:
启用完了之后再 ifconfig 就可以看到新的网卡了,如果没看到的话就 reboot 重启一下。
然后照葫芦画瓢配置好另一台虚拟机就可以测试啦,我配置的信息如下:
测试的话相互 ping 就好了,互联网访问直接 ping wwwbaiducom 就行,这里就不展示了。
到此虚拟机就算组网成功了,添加新的虚拟机也只需要将其 ip 添加到 19216856XXX 网段上即可。
如果我们想要在一台虚拟机上访问另一台虚拟机,就要用 ssh xxxxxxxxxxxx 来连接,那么怎么通过别名而不是直接输入 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 登录就可以发现直接连接上而不需要密码了。
0条评论