快捷搜索:   nginx

VirtualBox应用入门(如何利用nat虚拟网络)

VirtualBox为类似于VMWare的化软件,经评测性能比VMWare好不少,只不过稳定性稍差(主要是涉及某些系统加密功能不支持)。最近 几天玩了一下,感觉挺不错。一些基本的用法记录如下。这些用法都在我的机器上经过实验。我的Host是Ubuntu 7.04,Guest安装过Ubuntu 7.04和Windows XP。

一、安装与创建虚拟机
在Debian/Ubuntu下安装只需用以下命令:

sudo apt-get install virtualbox

其它系统可到VirtualBox下载安装包安装。



创建虚拟机启动"应用程序->系统工具->InnoTek VirtualBox",选择"New",根据提示一步步操作即可。与VMWare不同的是VirtualBox只能使用虚拟硬盘,不能直接使用物理硬盘。



在"CD/DVD-ROM"中选择光驱并插入安装盘或安装盘ISO文件,启动虚拟机即可安装Guest操作系统。鼠标和键盘被虚拟机截获时可用右CTRL退出。



1.1、安装Guest Additions

Guest Additions为安装在Guest操作系统中的软件,有消除鼠标键盘被截获问题、改善Guest显示效果和性能、在Host/Guest间共享文件等功能。



为 安装Guest Additions,先选择"Devices->Mount CD/DVD-ROM/CD/DVD-ROM Image...",选择VBoxGuestAdditions.iso,或选择"Devices->Install Guest Additions..."。若Guest为Windows,会自动运行安装程序或进入到光盘安装,若Guest为Linux,进入到Guest的 CDROM所在目录(/media/cdrom),运行:


sudo sh ./VBoxLinuxAdditions.run

即可安装。安装成功后重启Guest。



由于Linux Guest Additions安装时会创建一些Linux内核模块,因此每台Guest的内核升级后都需要按照上面的步骤重新安装Guest Additions或运行以下命令:


sudo /etc/init.d/vboxdrv setup二、配置
2.1、
NAT模式

默认使用NAT模式上网,安装后立即可用。NAT模式只允许从Guest向外发出连接请求,因此一般在Guest中上网没有问题,但无法在Guest中开网络服务,因此也不能从外部(包括Host)通过SSH连接到Guest。



可配置端口映射,使得在NAT模式下能够从外部主动连接到Guest。配置一个TCP端口映射通常需要运行以下三条命令:


VBoxManage setextradata 虚拟机名 "VBoxInternal/Devices/pcnet/0/LUN#0/Config/端口映射规则名称/UDP" 0
VBoxManage setextradata 虚拟机名 "VBoxInternal/Devices/pcnet/0/LUN#0/Config/端口映射规则名称/GuestPort" GUEST端口
VBoxManage setextradata 虚拟机名 "VBoxInternal/Devices/pcnet/0/LUN#0/Config/端口映射规则名称/HostPort" HOST端口

这 样即可为指定的虚拟机建立一个指定名称的端口映射规则,建立此规则后连接到Host的"HOST端口"时即相当于连接到Guest的"GUEST 端口"。如为名为Ubuntu的虚拟机建立一个名为ssh的端口映射规则,使得能从名部用ssh登陆到虚拟机中,可用如下命令:


VBoxManage setextradata Ubuntu "VBoxInternal/Devices/pcnet/0/LUN#0/Config/ssh/UDP" 0
VBoxManage setextradata Ubuntu "VBoxInternal/Devices/pcnet/0/LUN#0/Config/ssh/GuestPort" 22
VBoxManage setextradata Ubuntu "VBoxInternal/Devices/pcnet/0/LUN#0/Config/ssh/HostPort" 2222

这样即在在Host中使用"ssh -p 2222 user@localhost"登陆到Guest。



Host Interface模式: Route/TAP

使用Host Interface模式并使用Linux的IP转发功能和TAP,可为Host和Guest建立一个子网实现二者之间的方便互访。



首先要打开Linux内核转发功能


sudo su
echo 1 > /proc/sys/net/ipv4/ip_forward

iptables完成NAT功能


iptables -t nat -A POSTROUTING -j MASQUERADE

建立TAP虚拟网络设备


chmod 0666 /dev/net/tun
tunctl -t tap0 -u <你的用户名>
ifconfig tap0 up
ifconfig tap0 10.10.10.1 netmask 255.255.255.0

即新建一个名为tap0的虚拟网卡,设置Host的IP为10.10.10.1(也可以用其它地址)。如果没有用过TAP需要先安装Linux用户态工具包


sudo apt-get install uml-utilities

修改VirtualBox虚拟机配置,在"Network"中将其中一个Adapter设置为"Host Interface","Interface Name"输入tap0。然后启动Guest,将对应的网卡设置为静态获取IP地址如下:


IP: 10.10.10.xxx
Netmask: 255.255.255.0
Gateway: 10.10.10.1

这样配置好后在Guest中可访问Host于10.10.10.1,在Host中访问Guest于10.10.10.xxx。



由 于使用上述设置后Guest与Host将属于10.10.10.这同一子网,相互访问非常方便,但Guest不会自动检测到DNS服务器。因此在 Guest中通过上述虚拟网卡上互联网不太方便。为方便可保留原NAT网络,即新加一个Adapter设置为上述TAP虚拟网卡。



2.2、声音

在虚拟机Settings里选择"Audio->Enable Audio",Host Audio Driver一般选"ALSA Audio Driver"



2.3、软盘

点击虚拟机窗口状态栏上的软盘图标,选择连接到软驱或软盘镜像文件即可。



2.4、USB

一定要先以root用户启动VirtualBox。可以在命令行里运行


sudo VirtualBox

在 虚拟机Settings中选择"USB->Enable USB Controller",启动Guest后点击状态栏上的USB图标加载对应的USB硬盘(一般是名为"USB TO IDE"的那个)。需要注意的是如果Host正在用这个USB盘则VirtualBox会立马将该盘从Host中umount,不会等数据完全写出。



2.5、共享文件

共享文件主要有两种方法,一是使用VirtualBox提供的文件共享功能,二是使用通用的samba。



使用VirtualBox提供的文件共享功能

要先安装Guest Additions软件才可用此功能。首先使用VBoxManage工具增加要共享的目录。使用命令格式如下:


VBoxManage sharedfolder add 虚拟机名 -name 共享名 -hostpath 要共享的目录

在Windows中访问共享目录类似于访问远程共享文件,地址输入"\\vboxsvr\共享名"即可。



在Linux中访问共享目录使用如下命令:


mount -t vboxsf 共享名 目录

使用samba
首先要设置好网络,默认的NAT模块一般不行,可使用前文所说的TAP模式。设置好网络后即可按标准的samba方式共享和访问文件。

===================================================

让GUEST识别USB设备
%}6W$\ B S;[0H01、最简单的办法如下:LUPA开源社区 N f9?&q X

$ sudo gedit /etc/fstab

LUPA开源社区!I X Z h ^&X I
在末尾加上LUPA开源社区 j C E ] E2Y
# the USB groupLUPA开源社区%n z e,Y*Z F%H

# 对所有用户开放USB设备的读写权限LUPA开源社区 S7u/T |6Y _.Y,O9L)J
none /proc/bus/usb usbfs devmode=666 0 0

,? K _ u(L M E/D/?2d0然后就可以在VirtualBox的USB filter中加入需要在guest中使用的USB设备了。LUPA开源社区 Z!W ?;e:? w'j _ L

n m5X U-| r v02、但是把USB设备的读写权限开放给所有用户的方式在一些情况下不太安全,更为稳妥的做法是:LUPA开源社区-k W"@.v-p p9q q

~'G2~ D o3G0G01. 增加用户组usbfs
*j,w p:S i"y.p$Z0$ sudo groupadd usbfsLUPA开源社区;Y f S Y o F Q3I
LUPA开源社区 Z1S G b B
2. 查看usbfs用户组的gidLUPA开源社区3w,} H1^ H e
$ cat /etc/group | grep usbfs
P*I5R$F } l7~%I0

         usbfs:x:1002:

\ s#^,J S03. 把当前用户增加到usbfs组LUPA开源社区,o+g F g B
$ sudo gedit /etc/groupLUPA开源社区 Y;o V%F j([1J*b D ]!H

         把LUPA开源社区 g \ z ^3~9d p%s
         usbfs:x:1002:
L1E f P3T*D*j.{ I B:Y0          修改为LUPA开源社区2E9e:a5y d1f C&`
         usbfs:x:1002:joson

LUPA开源社区0T+O `2c ~)v f |8N p
4. 为USB设备重新设置权限编辑/etc/fstab文件,添加下面两行,注意你的gid可能不是1002LUPA开源社区%S1O ]2A%p Z
$ sudo gedit /etc/fstabLUPA开源社区 c"U5r1@+Y `

         在末尾加上LUPA开源社区 \"R p7]+T0[ j4} Y
         # 1002 is the USB group IDLUPA开源社区$o/k9} @ L:S V I
         none /proc/bus/usb usbfs devgid=1002,devmode=664 0 0

g-r {!N&D(z05. 重新启动后,应该就可以在客户机中使用USB设备了。

LUPA开源社区 p i6S M,O rR m方法:插入一个USB设备后,如U盘,右键点击虚拟机里右下脚的USB图标,选择已经识别的U盘,就可以正常使用了。
  注意:(1)在客户机里使用USB设备前要先在主机里卸载。 (2)完成后重启系统

=====================================

VirtualBox 推出 1.5.0 版,增加无缝窗口功能

开源虚拟机软件 VirtualBox 已经推出了 1.5.0 版。此次更新不仅为用户增加了一些不错的新功能,而且也包含许多细节上的改进。另外,对先前版本中的 bug 更是进行了一次大清扫。

VirtualBox 1.5.0 中新增的无缝窗口(Seamless windows)功能

本版本增加的新功能主要包括:

无缝窗口(Seamless windows)功能。这恐怕是本次发布版本为用户带来的最大惊喜。在这种模式下,你不会看到虚拟机的桌面背景,其应用程序的窗口将与主机融为一体。不 过,目前仅限于客户机为 Windows 系统,且必须安装 Guest Additions。 支持虚拟串口。 支持 64 位 Windows 主机。 支持 Intel PXE 2.1 网络引导。 为 IBM OS/2 Warp 提供了 Guest Additions 软件。

你可以从这里下载到适用于 Debian、Ubuntu、Fedora、openSUSE、Mandriva、Red Hat Enterprise Linux、Xandros Desktop 等 Linux 发行版的 VirtualBox 1.5.0 二进制包。当然,我们原来介绍的源依然有效。

顶(0)
踩(0)

您可能还会对下面的文章感兴趣:

最新评论