VirtualBox NAT网络下的端口转发:从主机访问客户机 在VirtualBox中,NAT网络模式是最简单、最省心的选择——无需配置网络桥接或路由,虚拟机即可通过主机连接外网。但代价也很明显:NAT模式下的虚拟机对主机和外部网络完全“隐身”,因此当需要从主机直接访问虚拟机内的服务(如SSH登录
VirtualBox宿主机访问NAT客户机方法
时间:2026-07-26
浏览:240
文章目录
VirtualBox NAT网络下的端口转发:从主机访问客户机
在VirtualBox中,NAT网络模式是最简单、最省心的选择——无需配置网络桥接或路由,虚拟机即可通过主机连接外网。但代价也很明显:NAT模式下的虚拟机对主机和外部网络完全“隐身”,因此当需要从主机直接访问虚拟机内的服务(如SSH登录、运行Web应用)时,便会遇到障碍。
解决方法并不复杂:启用VirtualBox NAT的端口转发功能。将主机上的某个端口映射到虚拟机的对应端口后,所有发往该主机端口的流量都会被自动“翻译”给虚拟机。下面介绍具体操作——既可通过图形界面(GUI)完成,也可直接使用命令行,按需选择即可。
通过GUI配置端口转发
在VirtualBox主界面中,选中要配置的虚拟机,点击“设置”。进入“网络”菜单,展开当前网络适配器下的“高级”选项——端口转发的入口即在此处。

点击“端口转发”按钮,弹出规则配置窗口。点击右上角的“添加”图标,即可开始填写参数。

一条完整的转发规则需填写以下六项:
- 名称:随意起一个唯一的名字,例如“SSH”
- 协议:TCP(SSH使用TCP协议)
- 主机IP:127.0.0.1(仅允许本地主机访问)
- 主机端口:2222(大于1024且未被占用即可)
- 客户机IP:虚拟机的实际IP地址(可在虚拟机内通过
ip addr查看) - 客户机端口:22(SSH默认端口)

保存规则后,启动虚拟机,端口转发即自动生效。可使用以下命令确认主机2222端口是否已被VirtualBox监听:
$ sudo netstat -nap | grep 2222

一切就绪后,在主机终端中执行以下命令,即可像登录本地服务一样SSH到虚拟机:
$ ssh -p 2222 @127.0.0.1
发送到 127.0.0.1:2222 的请求,会被VirtualBox自动翻译为 10.0.2.15:22——这正是NAT模式下虚拟机的默认网关地址,端口转发正是依靠该机制实现穿透。
通过命令行配置端口转发
若更习惯使用命令行,或需要在脚本中自动化配置,VirtualBox自带的 VBoxManage 工具可轻松完成。以下命令为名为 centos7 的虚拟机添加一条SSH端口转发规则:
$ VBoxManage modifyvm "centos7" --natpf1 "SSH,tcp,127.0.0.1,2222,10.0.2.15,22"
注意规则名称(本例中为“SSH”)必须唯一。创建完成后,可用以下命令验证网络适配器的配置是否生效:
$ VBoxManage showvminfo "centos7" | grep NIC

效果与GUI配置完全一致。如需转发HTTP服务(如Web服务器),只需将客户机端口改为80,主机端口换为8080等空闲端口即可。端口转发本质上是从NAT的“黑盒”中为虚拟机拉出一条通道,既保留了NAT的简洁性,又不牺牲本地的可访问性——是一种实用的折中方案。
实用工具推荐
绿化、压缩、噪点和虚拟水印,自由调节做旧程度。
选择画质和输出格式,预览压缩前后的大小。