[Galaxy S I9000 Q&A, Help & Troubleshooting] GrNick:
Here is what I did:

First, it was frustrating always searching for a tun module that matches with my kernel. Therefore, I flashed the excellent semaphore kernel. which aside many other beautiful things, it also gives a nice working tun.ko module in /lib/module/tun.ko

So, starting from stock JVR/JVS/JVT

1) Flash Semaphore kernel and make sure that you have only one version of busybox (which busybox)

2) Download OpenVPN Installer and OpenVPN Settings from market (Friedrich Schauffelhut)

3) Execute OpenVPN Installer and

a) when asked select to install binaries (target) to /system/xbin/ and

b) when asked select path to ifconfig & route to /system/xbin/bb.

When done, I usually delete the OpenVPN Installer application as it it not needed anymore.

4) Use a terminal (e.g. Terminal Emulator) and do the following:

$ su

# mkdir /system/xbin/bb

# ln -s /system/bin/route /system/xbin/bb/route

# ln -s /system/bin/ifconfig /system/xbin/bb/ifconfig

then close the terminal session

5) Execute OpenVPN settings and go to "Advanced". Select "TUN module settings" and:

a) select insmod as the preferred module loading command

b) enter the path for the tun module: /lib/modules/tun.ko

Go one step back and make sure that "load tun kernel module" is ticked. Also the path to configurations should be /sdcard/openvpn and the path to openvpn binary should be /system/xbin/openvpn.

As you see, you don't have to load the tun.ko through the semaphore scripts and thus have it loaded all the time. OpenVPN can load/unload the module just fine. I prefer this setup as I run the vpn channel only a couple of times daily but it can also work if you load the tun module through the semaphore scripts (see the appropriate thread) and have OpenVPN's "load kernel module" unchecked.

6) Put you working opevpn config file along with any certificates to /sdcard/openvpn and everything should work.

My sample openvpn config looks like this

client

remote fqdn port

nobind

resolv-retry infinite

proto tcp

dev tun

ca my-certificate

auth-user-pass

cipher AES-128-CBC

persist-key

persist-tun

inactive 120

keepalive 20 120

Hope this helps...

-------------

UPDATE: Jan 12, 2012

OpenVPN Installer has been updated and now there is a way to have a working openvpn with less efford:

Here's what I did in my fresh JVU:

1) flashed Semaphore kernel, because I get the tun.ko module installed in /lib/modules

2) through Semaphore app, activate netfilter

3) check with a terminal emulator that busybox is only in /sbin/busybox and that ifconfig and route are indeed at /system/bin (e.g. write "which busybox ifconfig route" and see the output)

3) download from market the latest OpenVPN Installer (Friedrich Schauffelhut's ver 0.2.4) and run it

4) when asked choose target directory /system/bin

5) when asked how openvpn will call ifconfig/route, choose the /system/bin/ifconfig option (...and not the recommended /system/xbin/busybox ifconfig).

6) the OpenVPN installer app is not needed any more and can be deleted. Just to make sure, close it and re-run it once: it should state that the openvpn binery is installed at /system/bin/openvpn

7) download from market Friedrich Schauffelhut's OpenVPN settings, open it and go menu-advanced

8) check load tun kernel module, then enter the menu "tun module settings". change the load module command from modprobe to insmod and enter the correct path for the tun.ko module (/lib/modules/tun.ko).

9) Go back and check that the path to configurations is /sdcard/openvpn and the path to openvpn binary is /system/bin/openvpn.

10) If you have a working openvpn config, then everything should work!!