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”
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.
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.
You’re welcome!!
Those are the ports to play AoE Gold Right? 😉
YES