术语 | 描述 |
---|---|
主机操作系统(主机OS) | 安装了Oracle VM VirtualBox的物理计算机的操作系统 |
来宾操作系统(来宾OS) | 虚拟机内运行的操作系统 |
虚拟机(VM) | Oracle VM VirtualBox在运行时为你的来宾OS创建的特殊环境.换句话说,在VM中运行来宾OS。 |
来宾附加(Guest Additions) | 用来提高来宾OS运行速度或者添加其他功能的附加包, |
1 联网模式简介
未附加(Not attached):这种模式下虚拟机会向来宾报告存在网卡。但是没有连接。就像没有以太网网线插入卡中一样。使用此模式,可以拉出虚拟以太网电缆并中断连接,这对于通知来宾操作系统没有可用的网络连接并强制进行重新配置很有用。
网络地址翻译(NAT):NAT网络是允许出站连接的一种内部网络。参见请参见 6.4. Network Address Translation Service。
桥接网络(Bridged networking):这是为了满足更高级的网络需求,例如网络模拟和来宾中运行的服务器。启用后,Oracle VM VirtualBox会连接到已安装的网卡之一并直接交换网络数据包,从而规避了主机操作系统的网络堆栈。
内部网络(Internal networking):这可用于创建不同种类的基于软件的网络,该网络对选定的虚拟机可见,但对主机上或外部网络上运行的应用程序不可见。
仅主机网络(Host-only networking):这可用于创建包含主机和一组虚拟机的网络,而无需主机的物理网络接口。而是在主机上创建类似于环回接口的虚拟网络接口,以提供虚拟机和主机之间的连接。
-
通用网络(Generic networking):通过允许用户选择可以包含在Oracle VM VirtualBox中或可以在扩展包中分发的驱动程序,可以使用共享相同通用网络接口的罕见模式。
以下子模式可用:- UDP隧道(UDP Tunnel):用于通过现有网络基础结构直接,轻松,透明地互连在不同主机上运行的虚拟机。
- 虚拟分布式以太网网络(VDE networking):用于连接到Linux或FreeBSD主机上的虚拟分布式以太网交换机。目前,此选项需要从源代码编译Oracle VM VirtualBox,因为Oracle软件包不包括它。
下表概述了最重要的联网模式。
表6.1。联网模式概述
Mode | VM→Host | VM←Host | VM1↔VM2 | VM→Net/LAN | VM←Net/LAN |
---|---|---|---|---|---|
Host-only | + | + | + | – | – |
Internal | – | – | + | – | – |
Bridged | + | + | + | + | + |
NAT | + | 端口转发 | – | + | 端口转发 |
NATservice | + | 端口转发 | + | + | 端口转发 |
1 网络地址转换(NAT)
网络地址转换(NAT)是从虚拟机访问外部网络的最简单方法。通常,在主机网络和来宾系统上不需要任何配置。因此,它是Oracle VM VirtualBox中的默认联网模式。
启用了NAT的虚拟机的行为就像是一台通过路由器连接到Internet的真实计算机。在这种情况下,路由器是Oracle VM VirtualBox网络引擎,该引擎透明地映射来往虚拟机的流量。在Oracle VM VirtualBox中,此路由器放置在每个虚拟机和主机之间。由于默认情况下虚拟机无法相互通信,因此这种隔离可最大程度地提高安全性。
NAT模式的缺点是,就像路由器后面的专用网络一样,虚拟机是不可见的,并且无法从外部Internet访问。除非设置端口转发,否则无法以这种方式运行服务器。请参见 使用NAT配置端口转发。
即使NAT引擎将VM与主机分开,VM也可以访问主机的环回接口和在其上运行的网络服务。主机的环回接口可通过IP地址10.0.2.2访问。在某些情况下,例如,当在主机上的环回接口上的VM和数据库服务器中运行正在开发中的Web应用程序时,对主机的环回接口的这种访问可能非常有用。
虚拟机从集成到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侦听主机上的某些端口,并在相同或不同端口上将到达主机的所有数据包重新发送给来宾。
对于主机上的应用程序或网络上的其他物理或虚拟机,看起来好像代理的服务实际上在主机上运行。这也意味着您不能在主机的相同端口上运行相同的服务。但是,您仍然可以获得在虚拟机中运行服务的优势。例如,主机或其他虚拟机上的服务不会因服务中的漏洞或错误而受损或崩溃,并且该服务可以在与主机系统不同的操作系统中运行。
1.1 使用NAT配置端口转发
要配置端口转发,可以使用图形化的 端口转发编辑器,该编辑器可在网络设置对话框中找到,用于配置为使用NAT的网络适配器。在这里,您可以将主机端口映射到来宾端口,以将网络流量路由到来宾中的特定端口。
或者,可以使用命令行工具 VBoxManage
您将需要知道服务使用的来宾端口,并决定要使用主机上的端口。您可能要在来宾和主机上使用相同的端口。您可以使用主机上服务尚未使用的任何端口。例如,要在来宾中建立到ssh服务器的入站NAT连接 ,请使用以下命令:
1 创建nat全局网络
VBoxManage natnetwork add --netname natnet --network "192.168.137.0/26" --enable
VBoxManage natnetwork add --netname natnet --network "192.168.137.0/26" --enable --dhcp on
VBoxManage natnetwork modify --netname natnet --dhcp on
VBoxManage natnetwork modify --netname natnet --dhcp off
VBoxManage natnetwork start --netname natnet
VBoxManage natnetwork stop --netname natnet
VBoxManage natnetwork remove --netname natnet
VBoxManage dhcpserver remove --netname natnet
VBoxManage natnetwork modify \
--netname natnet --port-forward-4 "ssh:tcp:[]:1022:[192.168.137.4]:22"
VBoxManage natnetwork modify --netname natnet --port-forward-4 delete ssh
VBoxManage setextradata global "NAT/win-nat-test-0/SourceIp4" 192.168.1.185
VBoxManage list natnetworks
vboxmanage export guest_os_2 -o ubuntu_server_new.ova
VBoxManage import WindowsXp.ovf --dry-run
https://www.virtualbox.org/manual/ch08.html#vboxmanage-import-ovf
vi /etc/default/virtualbox
service vboxweb-service start
2 nat
VBoxManage modifyvm "VM name" --natpf1 "guestssh,tcp,,2222,,22"
VBoxManage modifyvm "VM name" --natpf1 delete "guestssh"
VBoxManage modifyvm "VM name" --natpf1 "guestssh,tcp,,2222,10.0.2.19,22"
VBoxManage modifyvm "VM name" --natpf1 "guestssh,tcp,127.0.0.1,2222,,22"
3 start
VBoxManage startvm "guest_os_1" --type headless
VBoxManage controlvm uuid|vmname poweroff