VirtualBox NAT 网络端口转发配置

文章介绍了在管理界面中如何进行全局设定,创建新的NAT网络,然后将主机与目标虚拟机进行端口映射的步骤。通过这种方式,可以使用本机的特定端口直接访问目标虚拟机。同时提到了虚拟机的网络配置应选择新建的NAT网络,以确保连接正确。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

之前忘了从哪看的,设置完好久没用差点忘了,记录一下;

1 管理---> 全局设定--->  添加新NAT网络

 

 

主机就是本机,子系统就是目标虚拟机ip及端口,配置完成后,访问目标虚拟机,直接通过本机ip+端口访问

2 目标虚拟机网络配置

连接方式NAT网络 界面名称就是刚才全局新建的NAT网络

 修改虚拟机网络配置

 

 

<think>我们正在解决用户的问题:如何配置VirtualBoxNAT模式下的端口转发规则,以便访问虚拟机上的特定服务(非80端口)。根据引用内容,特别是引用[1][3][5]提到,VirtualBoxNAT模式下需要手动设置端口转发规则才能让宿主机访问虚拟机上的非80端口服务(如SSH)。步骤分解:1.确认虚拟机网络设置为NAT模式(默认即是)2.打开VirtualBox端口转发配置界面3.添加转发规则:将宿主机的某个端口映射到虚拟机的目标服务端口具体操作步骤:###1.确认虚拟机网络设置-在VirtualBox管理器中,选择目标虚拟机,点击“设置”-进入“网络”选项卡,确认“连接方式”为“网络地址转换(NAT)”###2.打开端口转发配置界面-在“网络”设置中,展开“高级”选项-点击“端口转发”按钮,打开端口转发规则配置窗口###3.添加端口转发规则-点击右上角的“添加”按钮(图标为“+”)-填写规则参数(以SSH服务为例):- **名称**:自定义,如“SSHForwarding”- **协议**:选择TCP(大多数服务使用TCP,如SSH、HTTP等;如果是UDP服务则选UDP)- **主机IP**:留空(表示绑定到宿主机的所有网络接口)或指定宿主机IP(如127.0.0.1则只能本机访问)-**主机端口**:宿主机的端口(如1022,注意避免与宿主机已用端口冲突)- **子系统IP**:留空(表示虚拟机的NAT网络接口)或填写虚拟机的IP(通常留空即可)- **子系统端口**:虚拟机内服务的端口(SSH默认为22,其他服务填写实际端口)>📌示例规则(引用[5]示例):> -主机端口:122>-子系统端口:22>则宿主机通过`localhost:122`即可访问虚拟机的SSH服务[^5]。###4.保存并启动虚拟机-保存设置后启动虚拟机,在宿主机上测试访问:```bash#测试SSH访问(使用主机端口122)ssh-p122 username@localhost```>💡对于其他服务(如Web服务的8080端口),只需将“子系统端口”改为8080,并选择一个宿主机空闲端口(如8088)即可。 ###图形界面替代方案(引用[3]说明)> “VirtualBox现在包含一个简单的图形端口转发窗口”[^3]###命令行配置方法(可选)如果习惯使用命令行,可以使用`VBoxManage`工具(需在宿主机命令行执行):```bash#添加转发规则(虚拟机名称为"YourVMName")VBoxManage modifyvm "YourVMName"--natpf1"规则名,tcp,,主机端口,,子系统端口"```>例如:将宿主机的1022端口转发到虚拟机的22端口>```bash> VBoxManagemodifyvm"UbuntuVM" --natpf1 "ssh,tcp,,1022,,22"> ```###注意事项-**端口冲突**:确保“主机端口”在宿主机上未被占用-**虚拟机服务状态**:确保虚拟机内目标服务已启动并监听对应端口(如`netstat -tuln |grep22`)- **虚拟机防火墙**:如果虚拟机有防火墙(如Linux的firewalld),需放行目标端口(引用[5]提到临时关闭防火墙测试)[^5]通过以上步骤,即可实现宿主机通过指定端口访问虚拟机上的服务。 ###流程图```mermaidgraphTDA[启动VirtualBox管理器] -->B[选择目标虚拟机]B--> C[打开“设置”]C--> D[进入“网络”选项卡]D--> E[展开“高级”选项]E--> F[点击“端口转发”]F -->G[点击“+”添加规则]G--> H[填写名称、协议、主机端口、子系统端口]H -->I[保存设置]I -->J[启动虚拟机]J -->K[宿主机访问localhost:主机端口] ```§§相关问题§§1.VirtualBox桥接模式和NAT模式有什么区别? 2.如何检查Linux虚拟机中某个端口是否被监听? 3.虚拟机内防火墙如何开放特定端口(如CentOS7)?</think>### VirtualBox NAT模式端口转发配置指南 在VirtualBoxNAT模式下配置端口转发,可使宿主机访问虚拟机内的特定服务(如SSH、Web服务等)。以下是详细步骤: #### 📌 图形界面配置(推荐) 1. **打开虚拟机设置** - 在VirtualBox管理器中选择目标虚拟机 - 点击"设置" > "网络" > "网卡1"选项卡 - 确认"连接方式"为**NAT** 2. **配置端口转发规则** - 展开"高级"选项 - 点击"端口转发"按钮 - 在弹出窗口中点击"+"添加新规则 ``` ┌───────────────────────┐ │ 名称: SSH_Forward │ │ 协议: TCP │ │ 主机IP: 留空 │ │ 主机端口: 2222 │ │ 子系统IP: 留空 │ │ 子系统端口: 22 │ └───────────────────────┘ ``` > 📝 规则说明: > - **主机端口**:宿主机访问时使用的端口(如2222) > - **子系统端口**:虚拟机内实际服务端口(如SSH默认为22) > - 其他字段通常留空即可[^3][^5] 3. **保存并测试** - 保存所有设置 - 启动虚拟机 - 在宿主机通过`localhost:主机端口`访问: ```bash ssh -p 2222 username@localhost # 测试SSH连接 ``` #### ⚙️ 命令行配置(适用于脚本/高级用户) ```bash # 添加端口转发规则 VBoxManage modifyvm "虚拟机名称" --natpf1 "规则名,tcp,,主机端口,,子系统端口" # 示例:将宿主机2222端口映射到虚拟机22端口 VBoxManage modifyvm "UbuntuVM" --natpf1 "ssh,tcp,,2222,,22" # 删除规则 VBoxManage modifyvm "UbuntuVM" --natpf1 delete "ssh" ``` > 💡 提示:使用`VBoxManage list vms`查看虚拟机名称[^3] #### 🔍 验证端口转发 1. **在虚拟机内检查服务状态** ```bash # 检查SSH服务是否运行 sudo systemctl status ssh # 确认端口监听状态 sudo netstat -tuln | grep :22 ``` 2. **在宿主机测试连接** ```bash # Windows 命令提示符 telnet localhost 2222 # Linux/macOS nc -zv localhost 2222 ``` #### ⚠️ 常见问题解决 1. **连接失败检查点**: - 虚拟机内防火墙是否放行目标端口(如`sudo ufw allow 22`) - 虚拟机内服务是否绑定到`0.0.0.0`而非`127.0.0.1` - 宿主机防火墙是否放行主机端口(如Windows防火墙) 2. **多服务转发示例**: | 服务类型 | 主机端口 | 子系统端口 | 访问方式 | |----------|----------|------------|-------------------| | SSH | 2222 | 22 | `ssh -p 2222 user@localhost` | | Web | 8080 | 80 | `http://localhost:8080` | | MySQL | 3307 | 3306 | `mysql -h 127.0.0.1 -P 3307` | > 通过端口转发NAT模式可实现宿主机与虚拟机间的服务访问,无需配置复杂网络[^1][^5]。 ```mermaid graph LR A[宿主机] -->|访问 localhost:2222| B[VirtualBox NAT引擎] B -->|转发到 :22| C[虚拟机] C -->|响应| B B -->|返回数据| A ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值