31

我正在尝试使用 VirtualBox 进行简单的端口转发,看起来 VirtualBox.exe 正在主机上侦听端口,但实际上并未将连接转发给来宾。我已经尝试了多个端口,并且我已经多次重新启动了 VirtualBox。另一方面,来宾到主机的连接很好。这是信息:

Host: Win7 x64
Guest: Win7 x64
VirtualBox version: VirtualBox 4.2.10
Firewalls: All firewalls on host and guest disabled.

Virtual Box > Machine Settings > Network
 Adapter 1: 
  Attached to: NAT
  Cable Connected : True
  Port Forwarding:
   Rule 1: TCP, HostIP=127.0.0.1, HostPort=8081, GuestIP=127.0.0.1, GuestPort=8081

On Host:
[VirtualBox.exe]  TCP    127.0.0.1:8081         IBM-6KT5OPCF76P:0      LISTENING

On Guest:
I never get the connection request on port 8081 or any others I've tried.

有任何想法吗?出于多种原因,我想避免使用 VirtualBox 的桥接适配器。我的印象是,使用 VirtualBox 进行 NAT 端口转发相对简单。

谢谢!

4

9 回答 9

39

准虚拟化网络*(virtio-net)是关键

  1. 选择要进行端口转发的虚拟机。

    • 注意:确保 vm 处于停止模式。
  2. 选择“设置”

  3. 选择“网络”
  4. 选择任何免费的适配器。让我们说“适配器 2”
  5. 启用“启用网络适配器”
  6. 在附加到下拉列表中,选择“NAT”
  7. 选择“高级”
  8. 在适配器类型中:选择“<em>Paravirtualized Network (virtio-net)” [这很重要]
  9. 选择“端口转发”
  10. 在“端口转发”对话框的右侧,选择“+”
  11. 提供

    • 名称:任何你想要的。例如 ssh,说“ssh”
    • 协议:协议类型[对于 ssh:TCP]
    • 主机 IP:提供您要连接的主机的主机名 [在这里:127.0.0.1]
    • 主机端口:您要在该主机的哪个端口上连接到远程端口[例如:60022]
    • 访客 IP:留空
    • 访客端口:您要从上述主机连接的端口。[对于 ssh,默认 22 ]
于 2015-02-12T21:25:06.260 回答
20

您以错误的方式指出了访客 ip,它应该是访客的 ip(如果您将 ip 地址静态分配给访客)或将其留空。请注意,您将主机 ip 指定为 127.0.0.1,这意味着您要转发的端口只能从端口访问(如果它不是您想要的,它也应该是空的)。

VBoxManage modifyvm "win" --natpf1 ",tcp,,8081,,8081"

也许这是你想做的事情。(请看这里了解更多详情

于 2013-03-23T09:28:25.617 回答
7

目前尚不清楚您使用的是哪个客户操作系统。

我遇到了同样的问题。

我的主机是 MAC PC,来宾是 VirtualBox 上的 CentOS 7。
我在 VirtualBox 级别为 ssh 端口 22 和 http 端口 80 启用了从访客到主机的 NAT 端口转发。

但是,我发现我无法通过 http 连接从我的 MAC PC 主机连接到 Centos 7 来宾上的 Apache HTTP 服务器。

要修复它,我必须将 firewalld 服务设置为允许端口 80 连接。

于 2015-10-05T03:57:54.533 回答
4

在 Mac 主机、Fedora 来宾设置上遇到类似问题。试图从主机访问在来宾机器的端口 8000 上运行的 http Web 服务器。在客户机上使用 firewall-cmd 打开端口 8000/tcp 解决了问题。

sudo firewall-cmd --zone=public --add-port=8000/tcp
于 2018-11-23T14:03:57.040 回答
2

我遇到了类似的问题,结果证明是由一些名为 proxycap 的公司代理拦截软件安装的网络堆栈中未签名的驱动程序导致 virtualbox 在设置端口转发时出错。在设置端口转发并列出未签名的驱动程序并卸载相应的应用程序时,检查您的 VM 机器日志中的错误消息。

于 2017-05-22T09:40:42.317 回答
1

如果有人遇到同样的问题,请尝试卸载 ProxyCap、proxifier 等重定向器。VirtualBox NAT 不适用于它们。如果您尝试跟踪 VirtualBox 网络,您不会在日志中找到任何错误消息,并且不会在 pcap 文件中看到任何内容。禁用 ProxyCap 是不够的,必须将其卸载,或者您需要使用“netsh winsock reset”重置您的网络配置,但 ProxyCap 将不再为您工作。

于 2020-11-10T18:46:38.353 回答
1

万一其他人遇到了同样的问题,我在这里写下我的错误:

我使用 CentOS 7 作为主机和 Windows 作为来宾。

阻止我的唯一问题是:我忘记在来宾计算机中禁用Windows 防火墙设置。一旦禁用它,一切正常。

于 2020-05-25T03:52:32.000 回答
0

我像这样连接到我的 Centos7:

Virtual Box > Machine Settings > Network
Adapter 1: 
Attached to: NAT
Cable Connected : True
Port Forwarding:
  Rule 1: TCP, HostIP=127.0.0.1, HostPort=8081, GuestIP=10.0.2.15, GuestPort=8081

$> ssh -p8081 [更改]@127.0.0.1

于 2020-02-27T04:53:45.163 回答
0

对于 GNU/Linux 用户,不要忘记前 1024 个端口仅限于 root 用户……</p>

如果您尝试转发低于 1024 的端口,它甚至不会显示为 LISTENING with netstat

于 2021-12-13T22:48:08.240 回答