VirtualBox在NAT下的端口映射

本文介绍在Windows 7系统中使用VirtualBox搭建的Ubuntu虚拟机环境下,如何通过端口映射实现局域网内访问Tomcat服务的方法。首先需要找到虚拟机的设备标识符,然后利用VBoxManage命令进行SSH和Tomcat服务端口的映射。

在win7下装的virualbox,虚拟系统为ubuntu下,网络设置为NAT,在ubuntu先安装tomcat,但是web应用程序由于框架的限制对firefox有点不兼容,只能用ie。但是在NAT下无法在局域网中访问ubuntu,只好采取端口映射。

 

1查看设备名称

  在VirtualBox菜单栏,单开“控制”--》“日志菜单”,点击查找写入关键字“NAT”查找类似以下内容

 

 00:00:00.688 [/Devices/e1000/0/LUN#0/] (level 4)
 00:00:00.688   Driver <string>  = "NAT" (cb=4)

 

       /Devices/e1000/0/LUN#0/设备标识。

2 在cmd下执行以下命令,可以放在bat下执行

 

VBoxManage.exe  setextradata "ubuntu" "VBoxInternal/Devices/e1000/0/LUN#0/Config/http/Protocol" TCP

VBoxManage.exe  setextradata "ubuntu" "VBoxInternal/Devices/e1000/0/LUN#0/Config/http/GuestPort" 8080

VBoxManage.exe  setextradata "ubuntu" "VBoxInternal/Devices/e1000/0/LUN#0/Config/http/HostPort" 8080


VBoxManage.exe  setextradata "ubuntu" "VBoxInternal/Devices/e1000/0/LUN#0/Config/shell/Protocol" TCP

VBoxManage.exe  setextradata "ubuntu" "VBoxInternal/Devices/e1000/0/LUN#0/Config/shell/GuestPort" 22

VBoxManage.exe  setextradata "ubuntu" "VBoxInternal/Devices/e1000/0/LUN#0/Config/shell/HostPort" 22

 上面对ssh端口和tomcat的端口(这里用的是8080)进行了映射,其中 VBoxManage.exe 安装在virtualBox目录下,

后面“ubuntu”是虚拟系统的名字,后面是设备标识,对照步骤1应该可以明白,config后面一个名字例如http和shell

可以任意取,GuestPort是虚拟机中所启动服务的端口,HostPost是主机上的映射端口。执行完毕之后,重新启动

虚拟机,就可以了。注意是启动虚拟机不是重启虚拟的ubuntu系统。

 

 

 

### VirtualBox 中配置桥接网络与端口映射 #### 配置桥接网络 为了使虚拟机能够像物理机器一样在网络中工作,可以采用桥接适配器模式。在这种模式下,虚拟机会被赋予一个独立于宿主机的 IP 地址,并且可以直接与其他设备通信。 对于 Linux 主机作为网桥来桥接两个网络的情况,在 VirtualBox 设置中的网络选项里选择“桥接适配器”,并将之绑定到实际存在的物理网卡上[^1]。这使得虚拟机能获取与宿主机相同网段内的 IP 地址,从而实现两者之间的直接通讯以及访问外部资源的能力。 具体操作步骤如下: - 打开 VirtualBox 并选中要修改网络设置的目标虚拟机; - 进入 **设置** -> **网络** 页面; - 将第一个网络接口(Adapter 1)启用,并将其附加方式设为 “桥接适配器” (Bridged Adapter)[^2]; - 在名称列表框中挑选合适的物理网卡用于桥接; 完成上述配置后,启动虚拟机并按照常规流程为其分配静态或动态 IP 地址即可正常使用互联网和其他局域网服务。 #### 实现端口转发 当需要让外界可以通过特定端口号访问运行在 NAT 模式的虚拟机上的应用时,则需要用到端口转发功能。虽然已经启用了桥接模式,但在某些情况下仍然可能需要额外设定端口转发规则以便更好地管理流量或者绕过防火墙限制。 以下是基于命令行工具 `VBoxManage` 来创建端口转发规则的例子: ```bash VBoxManage modifyvm "VM name" --natpf1 "rule_name,tcp,,host_port,guest_ip,guest_port" ``` 其中 `"VM name"` 是指定了目标 VM 的名字,“rule_name” 可以为任意字符串用来标识这条规则。“tcp” 表明协议类型为 TCP 协议;后面四个参数分别代表监听地址为空表示所有可用接口、宿主机开放给外网连接的端口、目标虚拟机 IP 和其内部应用程序所占用的服务端口[^4]。 例如,如果希望把来自任何地方针对本地电脑8080端口HTTP请求转交给位于192.168.56.101:80处Web服务器的话,那么完整的指令应该是这样的: ```bash VBoxManage modifyvm "My Ubuntu Server" --natpf1 "webserver,tcp,,8080,192.168.56.101,80" ``` 这样就可以通过浏览器输入 http://localhost:8080 访问该 Web 应用程序了。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值