先说一下虚拟环境:Host是Windows XP,Guest是Fedora Linux,虚拟机是VirtualBox2.06。用过VB都知道,默认网络配置下(NAT),Guest是对Host不可见的,对局域网以及以外都是不可见(指网络上的不可访问)。我希望通过配置,能从Host以及外部网络访问Guest提供的服务,比如ssh。
VB中Guest的网络模式主要有NAT和Bridge(桥接)两种。桥接是可以很好的实现我的想法的,但是一般来说VB下的桥接很难做:我按照手册上的方法做好,桥接建立好了当时导致Host却不能上网了。囧!不知道到底要怎么设置了 =,=。Quark说可以使用NAT方式下VB提供的端口映射功能实现我的要求。参照VB手册:
This means that VirtualBox listens to certain ports on the host and resends all packages which arrive on them to the guest on the ports used by the services being forwarded.
就是说,假设把Host的端口A Forward到Guest的端口B,那么这个机制就是把A发过来的数据送进B,使用Guest的服务处理数据之后返回。那么,如果就可以在Host里SSH到localhost的端口A来访问Guest的SSH服务了(端口22)。VB的手册里举的就是SSH的例子,关闭VB,然后在windows命令行下进入到VB的安装目录。使用以下的命令:
VBoxManage setexTradata "<GusetName>" "VBoxInternal/Devices/pcnet/0/LUN#0/Config/guestssh/Protocol" TCP
VBoxManage setexTradata "<GusetName>" "VBoxInternal/Devices/pcnet/0/LUN#0/Config/guestssh/GuestPort" 22
VBoxManage setexTradata "<GusetName>" "VBoxInternal/Devices/pcnet/0/LUN#0/Config/guestssh/HostPort" 2222
注意:<GuestName>是你虚拟机中Guest的名字。假设你使用的是pcnet的虚拟网卡,如果你选择的是intel PRO/1000网卡,那么用"e1000"替换"pcnet"。2222可以是随便一个Host上没有被使用的端口。另外注意大小写,这些设置都是Case Sensitive的!
启动你的Guest系统,开启ssh服务,在Host里面用ssh客户端(推荐Putty)用ssh协议连接localhost:2222,如果连接成功,那么恭喜!如果连接被拒绝,那么可能是防火墙的阻拦。在ArchLinux下有/etc/hosts.allow、/etc/hosts.deny这些文件,Fedora10使用的是iptables。具体可以参照相关手册,来允许客户端的连接。我就是把iptables里面所有的规则全部灭了才连接成功的。上一张图片:
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。