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

Rob*_*res 21 port networking 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.
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?我想避免使用VirtualBox的桥接适配器有多种原因.我认为使用VirtualBox,NAT端口转发相对简单.

谢谢!

小智 29

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

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

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

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

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

  • **8.在适配器类型:选择"半虚拟化网络(virtio-net)"[这很重要]**你是绝对正确的 - 当我从默认的"英特尔PRO/1000 MT桌面"模拟器切换到virtio-net模拟器时,端口转发神奇地开始工作.但我无法在任何地方找到这个记录 - 你怎么知道的? (6认同)
  • 我和约翰一样。主机端口不要设置为22,这样不起作用。当我将其更改为“2222”并点击“保存”时,我可以立即连接到端口 2222。无需重新启动计算机或执行任何操作。 (3认同)
  • 我的问题是我试图在主机上使用端口22。当我将其更改为更高的端口(8080)时,它可以工作。 (2认同)

vvl*_*nko 16

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

VBoxManage modifyvm "win" --natpf1 ",tcp,,8081,,8081"
Run Code Online (Sandbox Code Playgroud)

也许这是你想要做的事情.(请点击此处了解更多详情)

  • 这似乎解决了这个问题.我的目的是将[localhost:8081 on host]转发给[localhost:8081 on guest].正如wlevchenko所说,进入Port Forwarding对话框并简单地删除两个IP列中的"127.0.0.1"(并将其留空)修复它.我确实需要重启虚拟机才能使端口转发工作. (4认同)
  • 实际上,端口转发更改不需要重新启动虚拟机,真正需要的是在 pf 规则更改后来宾显示任何网络活动。 (2认同)

And*_*ndy 5

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

我遇到了同样的问题.

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

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

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

  • 遇到完全相同的问题,运行以下命令来停止防火墙,一切都很好!>systemctl 停止firewalld.service (2认同)