
This is a short step-by-step howto that shows how I’ve installed OpenVPN on OpenSolaris 2008.11.
Step 1: Install GCC
# rolemod -K type=normal root
# pkg install SUNWgcc
Step 2: Install the TUN/TAP Driver
Grab the TUN/TAP driver for Solaris, unpack it in /usr/local/src and configure it:
# mkdir -p /usr/local/src
# cd /usr/local/src
# wget http://www.whiteboard.ne.jp/~admin2/tuntap/source/tuntap/tuntap.tar.gz
# tar xvfz tuntap.tar.gz
# chown -R root:root tuntap
# cd tuntap
# ./configure
On 64bit you must modify the generated Makefile to call ld with the correct options. Add a LDFLAGS variable and replace $(LD) by $(LD) $(LDFLAGS):
LDFLAGS = -melf_x86_64
...
modules: tun.o tap.o
$(LD) $(LDFLAGS) -r -o tun tun.o
$(LD) $(LDFLAGS) -r -o tap tap.o
Run make and make install. The errors from /usr/sbin/rem_drv can be ignored as the module usually wasn’t installed before so it obviously can’t be removed.
Step 3: Install OpenVPN
Grab the latest RC of OpenVPN 2.1 (currently 2.1rc15) and unpack it in /usr/local/src:
# cd /usr/local/src
# wget http://www.openvpn.net/release/openvpn-2.1_rc15.tar.gz
# tar xvfz openvpn-2.1_rc15.tar.gz
# chown -R root:root openvpn-2.1_rc15
# cd openvpn-2.1_rc15
You must replace tun.c from OpenVPN with the corresponding patched file:
# wget -O tun.c http://www.whiteboard.ne.jp/~admin2/tuntap/source/openvpn/2.1/tun.c
# ./configure --disable-lzo
# make
# make install
If you do not disable LZO compression you must install the LZO library and headers before. We don’t use it so we don’t bother.
The OpenVPN binary is now available in /usr/local/sbin/openvpn.
Step 4: Configure OpenVPN
Configuration of OpenVPN is not different on Solaris than on any other supported platform. You can find the detailed documentation in the OpenVPN Howto.
If you get a Can't set PPA 1: File exists (errno=17) error and OpenVPN exits the tun interface may still be plumbed. Remove it with
# ifconfig tun0 unplumb