Debian Guest下安装VirtualBox的Additions
十月 1st, 2008
在VBox窗口的Devices, mount CD, CD image然后选中VBoxGuestAdditions.iso确定。
Debian控制台下:
mkdir /mnt/cd
mount /dev/cdrom /mnt/cd -t iso9660
cd /dev/cdrom
sh VBoxLinuxAdditions-x86.run help
sh VBoxLinuxAdditions-x86.run
之前要安装build-essential和Linux-header文件
aptitude install build-essential
uname -r查看内核版本。
aptitude search linux-header。
安装对应的头文件。
GuestAdditions的一些功能:
- 鼠标指针无缝连接,无需按右Ctrl切换。
- 更好的显示支持,在用户缩放Vbox窗口的时候自动调整Guest的分辨率来配合缩放。
- 共享文件夹。
- 共享剪切板。
- 以及非常酷的无缝窗口。
共享文件夹访问
net use x: file:///P|/vboxsvr/sharename
mount -t vboxsf sharename /mnt/vb
无缝窗口把程序窗口从虚拟机里分离出来,这样可以把两个系统中的程序窗口统一起来,貌似Wine的完美替换,右Ctrl+L呼出。
另外装上GuestAdditions以后,就不能以Framebuffer方式启动Linux,否则会僵死掉,至少在我的机器上是这样。
VirtualBox,VMware,VirtualPC的比较
九月 12th, 2008
VMware是商业软件,跨平台,性能稳定,用户群广,但在Windows下会开很多服务,没事也来占用资源,这一点不太喜欢。
VirtualPC作为Windows的附加产品免费,当然只有Windows版,开发者也只考虑将其用来虚拟Windows,安装其他系统要颇费周折,而且不支持USB设备。
VirtualBox免费,有开源版本,基于SDL和Qt开发,小巧灵活,功能丰富。
VirtualBox网络设置
九月 12th, 2008
VirtualBox中有三种网络连接方式(不包括Not attached:):NAT,Host Interface以及Internal networking。
- NAT
最简单的方法是通过NAT,设置guest系统用DHCP获得ip地址,VBox会自动配置成一个NAT服务器提供guest的外网连接,guest中不同程序发起的网络连接都被转化成Host中virtualbox进程发起的网络连接。
NAT的缺陷是连接的端口号会被转换不能由程序自由决定,想在虚拟机上对真实网络提供服务还需要设置端口转发。 - Host Interface
在Host中创建一个虚拟网卡,然后桥接虚拟网卡和物理网卡,Guest使用这块虚拟网卡来实现与外网的通信。
桥接可以把几个网卡连起来,发给其中一个网卡的信息会被发给所有的网卡,有点像Hub。用这种方法连接起来的虚拟机,对网络上其他用户来讲,和真实的机器没有区别(它有自己的MAC地址和IP地址),虽然我们只有一块物理网卡,但是桥接后它会把自己置于混杂模式,同时发收两个MAC地址的数据包,不过有些网络设备会阻止一个网卡有多个MAC地址的行为,而且大部分无线网卡也不支持桥接。
在Windows下通过GUI或VBoxManage createhostif “VM1 external”命令增加一块虚拟网卡后,打开网络连接目录,同时选中新增的网络连接和原来的本地连接,右键会出现创建网络桥接的选项。然后以原来网卡的配置设置网络桥就可以了(Linux的话有一个brctl工具)。然后在Guest中以实际网络的配置配置网卡。 - Internal networking
没有试过,据说这种方法可以建立了一个外部不可见的内部网络,因此更安全,并且此时guest和host之间的数据交换不像之前的方法一样通过模拟的网络,而是有直接的内部连接,因此速度更快。
比较而言:
NAT最方便而且绿色不用装额外的东西,但有一些限制。
Host Interface 模拟的最彻底,可以用来做蜜罐实验,但需要在Host中装虚拟网卡驱动,而且不能被共用。
Internal netwoking适合用来做网络实验。
在虚拟机上用VirtualBox的NAT联网方式加端口转发建立ftp服务
九月 12th, 2008
Host:Windows 2003+VirtualBox 2.0.0 for Windows
Guest:Debian etchnhalf
Guest用NAT的方式联网,DHCP自动获取IP地址,ifconfig一下可以发现是一个10.0.2.0的网络,IP地址为10.0.2.15。
而Host的IP地址是172.21.0.15,我们的目的是让Guest上开的ftp服务(10.0.2.15:21),转发为(172.21.0.15:2121)这样的Host网络上其他机器可以访问的地址。
进入虚拟机,在Debian中开一个最简单的ftp
apt-get install ftpd
man in.ftpd
in.ftpd -D
netstat -an |grep 21 确认ftp服务已经开启
apt-get install lftp
lftp 10.0.2.15
user username 系统非root帐号
然后输入密码登录。
ls 查看文件。发现是用户的主目录。
在Host上,用VBoxManage 工具进行端口转发配置。
VBoxManage setextradata “Debox” “VBoxInternal/Devices/pcnet/0/LUN#0/Config/ftpd/Protocol” TCP
VBoxManage setextradata “Debox” “VBoxInternal/Devices/pcnet/0/LUN#0/Config/ftpd/GuestPort” 21
VBoxManage setextradata “Debox” “VBoxInternal/Devices/pcnet/0/LUN#0/Config/ftpd/HostPort” 2121
其实就是编辑了用户主目录下.VirtualBox目录下对应虚拟机的xml文件。注意配置里的pcnet对应于网络设置里的虚拟网卡名,如果不匹配开机时会出现Failed to get the “MAC” value错误。并确认要转发的端口(2121)没有被使用。
重启虚拟机。
在Host下开一个CMD。
netstat -an|findstr 2121,果然2121端口处于LISTENING状态。用一个ftp客户端连本机IP的2121端口,并使用Guest的Linux帐号登录成功。