VirtualBox下使用NAT模式实现外部访问guest(端口映射)

虚拟环境: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里面所有的规则全部灭了才连接成功的。
 
 
【图形界面】
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值