[virtualbox]windows宿主机访问linux客户机

  今天felix建议,可以虚拟机里跑个ubuntu server,就没必要跑ubuntu下开发,再回到windows下写论文了。之前有考虑过,但是1G的内存,跑了个win7还开了Aero,担心内存不够。回来把Aero给关了,装了试试,有点卡,不过将就着能用,早该加内存了。

  客户机跑ubuntu 10.04 server,NAT连接的网络。NAT engine将宿主机当作了路由器,所有流出和流进虚拟机的数据包都由这个engine转发,但是这样,客户机隐藏在幕后,包括宿主机在内的其他主机都访问不到客户机了。VirtualBox的帮助文件中提到,如果想在客户机上跑一些服务,就需要用NAT端口映射。使用VBoxManage.exe可以满足需求。如果要想开启ssh server,好使宿主机可以用putty或者SecureCRT等等连上去开发,可以用下面的命令(cmd下并切换到virtualbox的安装目录即VBoxManage所在的目录下):

(1)  VBoxManage setextradata [GuestHostName] “VBoxInternal/Devices/[vcard]/0/LUN#0/Config/[servicename]/Protocol” TCP
(2)  VBoxManage setextradata [GuestHostName] “VBoxInternal/Devices/[vcard]/0/LUN#0/Config/[servicename]/GuestPort” 22
(3)  VBoxManage setextradata [GuestHostName] “VBoxInternal/Devices/[vcard]/0/LUN#0/Config/[servicename]/HostPort” [specifiededport]

其中:
[GuestHostName]为客户机的名称,比如ubuntuserver,如果有空格的话用”"括起来
[vcard]需要根据客户机的网卡芯片改变。PCNet -> pcnet;Intel PRO/1000 -> e1000;
[servicename]就是为这个转发设置起个名字,随便就可以~别跟其他转发设置起冲突
[specifiededport]是将客户机22端口映射到主机的哪个端口,这个端口号最好>1024.

注意设置的时候关闭虚拟机或者是保存状态.

如果要开启其他服务的话,就按照这种格式。比如换成http,mysql时,Protocol不变,只需设置GuestPort为对应的端口号.(ssh -> 22,mysql -> 3306,etc)

在windows宿主机中打开localhost,客户机的Http服务器就会响应了。在SecureCRT用ssh连接localhost时,别忘了将端口号设置为你定义的端口号^/^

不过每次系统启动的时候就需要重新设置下,可以扔到一个bat文件中,开机启动或者virtualbox启动时执行。

由于安装的是ubuntu server ,VBoxGuestAdditions安装不上,从宿主机到客户机传送文件可用rz/sz。

用ubuntu server硬盘很吃紧,考虑用puppy linux with lamp。如果跑ubuntu server的话,分配64M内存就够用了。

有个问题没解决,宿主机怎么ping通客户机?有没有种方式将ICMP包也转发到客户机上?虽然这样并没有实际的用处。

另可参考felix的解决方案:

用VirtualBox在Windows上搭建一个Ubuntu工作站

3 Comments are ready?

  1. felix021 said on: 2010年05月6日 09:56

    icmp没有端口号 是有点纠结。

    顺便提一下,你让虚拟机后台跑的时候开着X Window么?如果开着就关了吧 省资源。

    [回复]

    boluor 回复  于   

    没有跑 ,装的是server,装了几个服务就没管它了。

    [回复]

  2. chinahacker said on: 2010年05月16日 19:47

    如果是用NAT的话,主机和客户机是可以相互ping通的。前提是你需要打开虚拟网卡。
    如果要Internet外网机器能够访问客户机,则使用桥接(Bridge)吧。

    [回复]

    boluor 回复  于   

    打开虚拟网卡是什么意思?我没有很懂^/^

    [回复]

    chinahacker 回复  于   

    你装了虚拟机之后,除了本地连接之外,会在系统里新增虚拟两个网卡吧。WIN7下路径是Control Panel\Network and Internet\Network Connections,把虚拟的网卡都启用。

    [回复]

    boluor 回复  于   

    VirtualBox的版本号:3.1.6。
    两个网卡分别是VirtualBox Host-Only Network和Virtual WiFi Miniport Adapter。NAT方式下,客户机的IP是10.0.2.15,宿主机IP是192.168.0.100。宿主机ping不通客户机,客户机是可以ping通宿主机的。
    NAT方式下,客户机是被隐藏了的,包的接受和发送都是通过nat engine 转发的,主机是ping不通客户机的吧。

    [回复]

    chinahacker 回复  于   

    宿主机有多个网卡,应该有多个IP。其中有一个IP应该和客户机是同一网段的。(10.0.2.*)
    算了吧,还是桥接方便。sudo dhclient后客户机内会获取和宿主机同一网段的IP。(192.168..0.*)

    [回复]

  3. 草依山 said on: 2010年05月18日 01:10

    搜文章时搜到这里,是运维的同事吗?

    [回复]

    boluor 回复  于   

    是的。

    [回复]

Post a Comment

Your email is never published nor shared. Required fields are marked *

*

*

click to changeSecurity Code