Forwarding a Range of Ports in VirtualBox


virtualbox_logo
Doesn't allow forwarding a range of ports through the UI

I recently had to forward a range of ports to a VirtualBox instance. The VirtualBox GUI doesn’t provide a method for forwarding a range of ports. The VirtualBox Manual describes a way for adding the rule via the command-line:

VBoxManage modifyvm "VM name" --natpf1 "guestssh,tcp,,2222,,22"

This forwards any traffic arriving on port 2222 to port 22 on the virtual instance. We can use this to create a short bash loop. In the example below, we’re forwarding ports 2300-2400 to ports 2300-2400 on the virtual instance (both TCP and UDP):

for i in {2300..2400}; do
VBoxManage modifyvm "windows" --natpf1 "tcp-port$i,tcp,,$i,,$i";
VBoxManage modifyvm "windows" --natpf1 "udp-port$i,udp,,$i,,$i";
done

You can verify this by going back into the VirtualBox port forwarding page and seeing the newly configured ports. It’s just as easy to delete them:

for i in {2300..2400}; do
VBoxManage modifyvm "windows" --natpf1 delete "tcp-port$i"; 
VBoxManage modifyvm "windows" --natpf1 delete "udp-port$i"; 
done

This should suffice until the capability is added to the VirtualBox UI.


5 responses to “Forwarding a Range of Ports in VirtualBox”

  1. Great post!…I am trying to do the same but my host has a Win7 and the guest is CentOs (with Asterisk VoIP server). I want to redirect all the UDP and TCP ports necessary for the VoIP server but there are a lot. Do you know if there is a way to do it faster from Win7? I will highly appreciate any help.

  2. I was looking for a way to forward exactly those ports in order to play Heroes of Might and Magic III over direct tcp/ip 🙂 Thank you.

Leave a Reply

Your email address will not be published.