VirtualBox port forwarding not working with NAT adapter

Roberto Olivares picture Roberto Olivares · Mar 22, 2013 · Viewed 71.4k times · Source

I'm trying simple port forwarding with VirtualBox and it appears VirtualBox.exe is listening on the host to the port, but not actually forwarding the connection to the guest. I've tried on multiple ports, and I've restarted VirtualBox several times. Guest to host connectivity, on the other hand, is fine. Here's the info:

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.

Any ideas? I'd like to avoid using VirtualBox's bridged adapter for multiple reasons. I was under the impression that NAT port forwarding was relatively straightforward with VirtualBox.

Thanks!

Answer

Amit picture Amit · Feb 12, 2015

Paravirtualized Network* (virtio-net) is the key

  1. select your vm that you want for port forwarding.

    • NOTE: Make sure the vm is in stop mode.
  2. Select “Settings"

  3. Select “Network"
  4. Select any free Adapter. Lets say "Adapter 2"
  5. Enable "Enable Network Adapter"
  6. In Attached to dropdown, select "NAT"
  7. Select "Advanced"
  8. In Adapter Type: Select “Paravirtualized Network (virtio-net)” [ This is important ]
  9. Select “Port Forwarding"
  10. In Right hand part of the “port forwarding” dialog box, select “+"
  11. Provide the

    • Name: Anything you want. example for ssh, say “ssh"
    • Protocol: Type of protocol [ for ssh: TCP ]
    • Host IP: provide hostname from which host you want to connect to [ over here: 127.0.0.1 ]
    • Host Port: On what port of that Host you want to connect to remote port [ example: 60022 ]
    • Guest IP: Leave it Blank
    • Guest Port: To what port you want to connect from the above host. [ for ssh, the default 22 ]