VirtualBox端口转发不使用NAT适配器

时间:2013-03-22 21:59:07

标签: networking port virtualbox forwarding nat

我正在尝试使用VirtualBox进行简单的端口转发,看起来VirtualBox.exe正在侦听端口的主机,但实际上并没有将连接转发给guest虚拟机。我尝试过多个端口,并且我已经多次重启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端口转发相对简单。

谢谢!

8 个答案:

答案 0 :(得分:29)

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

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

    • 注意:确保虚拟机处于停止模式。
  2. 选择“设置"

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

    • 姓名:你想要的任何东西。 ssh的例子,说“ssh"
    • 协议:协议类型[用于ssh:TCP]
    • 主机IP:提供您要连接到哪个主机的主机名[在这里:127.0.0.1]
    • 主机端口:您要连接到远程端口的主机端口[示例:60022]
    • 访客IP:保持空白
    • 访客端口:您要从上述主机连接到哪个端口。 [对于ssh,默认为22]

答案 1 :(得分:15)

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

VBoxManage modifyvm "win" --natpf1 ",tcp,,8081,,8081"
或许这是你想要做的事情。 (请look here for more details

答案 2 :(得分:5)

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

我遇到了同样的问题。

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

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

要解决此问题,我必须将firewalld服务设置为允许端口80连接。

答案 3 :(得分:1)

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

答案 4 :(得分:0)

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

sudo firewall-cmd --zone=public --add-port=8000/tcp

答案 5 :(得分: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 [change] @ 127.0.0.1

答案 6 :(得分:0)

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

我将CentOS 7用作主机,将Windows作为来宾。

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

答案 7 :(得分:0)

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