Linux – How to map a VPN (tun0) network adapter on host Ubuntu to a VirtualBox guest Windows

linuxvirtualboxvpnwindows

I have a Ubuntu 10.04 running Oracle VirtualBox 3.2.6 with a Windows XP guest. I use a VPN that I would like to be accessed by the guest VM, on a ifconfig it shows as:

tun0      Link encap:UNSPEC  HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00  
          inet addr:5.192.10.99  P-t-P:5.192.10.99  Mask:255.255.255.255
          UP POINTOPOINT RUNNING NOARP MULTICAST  MTU:1362  Metric:1
          RX packets:14151 errors:0 dropped:0 overruns:0 frame:0
          TX packets:19860 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:500 
          RX bytes:4415271 (4.4 MB)  TX bytes:17949982 (17.9 MB)

Using NAT or Bridge adapters on the VM only gives me the non-vpn adapter. How can I map the tun0 adapter to VirtualBox?

Best Answer

You can probably do it, but I would recommend against it.

The way to go about this is to have the VM establish it's own VPN connection to the target server/network.

Now, if you really want to do this, you would need to create another bridge on the host, then create the tunnel interface as a static interface (i.e. not created by the VPN when it starts up) and add it to the bridge. Only then does this tunnel become available to the virtual machine. VirtualBox can then be instructed to virtualize this interface, which makes it available to the VM.
The part I am unsure of is whether or not a tunnel can be created outside of the VPN client and then be made available to the client for usage. You might have to look to tap devices instead of tun devices.
This can get rather complicated and will result in a situation where your VM client may not have any networking if the VPN isn't up (unless you also virtualize the other bridge). As said, I would recommend against it.