OpenVPN is an awesome Open Source VPN package, the 2.0 versions are solid, reliable and secure. Edoceo has been providing VPN services and commerical support for this product since late 2003. It is fully functional and stable on Apple, Linux and Windows platforms, ready for the enterprise.

OpenVPN Server

Here's a complete OpenVPN Server configuration file. It creates a VPN Gateway device that allows clients on the VPN to access machines on the internal side subnet. For an explanation of all the options please see the OpenVPN Howto Guide.

Configuring OpenVPN Server

If this is the first OpenVPN server, or a fresh install the necessary Certificates must be created. The example below creates a certificate for the server, two clients as well as the tls-auth and diffe-hellman files.

cd /usr/share/openvpn/easy-rsa
. vars
./build-key-server vpnhost
./build-key clientA
./build-key clientB

Copy the necessary files to the OpenVPN configuration directory.

cp keys/ca.crt /etc/openvpn/
cp keys/dh1024.pem /etc/openvpn/
cp keys/server.crt /etc/openvpn/
cp keys/server.key /etc/openvpn/

And make the tls-auth key.

openvpn --genkey --secret /etc/openvpn/ta.key

The local network devices as the Internal or Office network and as the VPN subnet.

# OpenVPN Server Gateway
# Gives Access to the Internal Network

# Base Options
dev tun
port 1194
# These two don't apply on Windows
user nobody
group nobody

# Certificate/Security Options
ca ca.crt
cert server.crt
key server.key
dh dh2048.pem
tls-auth ta.key 0

# Tunnel Options
cipher AES-256-CBC
# Client should match this
keepalive 10 120

# DHCP Options
# DNS Suffix
# push "dhcp-option DOMAIN"
# Sent a DNS Server to the Client (if client does pull)
# push "dhcp-option DNS"
# Sent a WINS Server to the Client (if client does pull)
# push "dhcp-option WINS"
# Route to Internal Network, add more as necessary
# push "route"

# Output/Status Settings
ifconfig-pool-persist ippool.out
status status.out
verb 3

The options above should be changed to match the readers environment. Most notably the DHCP Push options should be set to reasonable values.

OpenVPN Concentrator

Use the above Server configuration but add the following. This will let other clients see each other.


OpenVPN Client Configuration

The current OpenVPN 2.1 clients have worked flawlessly for us since RC3. We're currently running various flavours of the 2.1 RC installs, RC3 through RC13. Here is a client for the above configuration

ca ca.crt
cd /path/to/vpn/config
cert client.crt
dev tun
group nobody
keepalive 15 120
key client.key
ns-cert-type server
tls-auth ta.key 1
user nobody
verb 3

OpenVPN Clients on Apple

Mac OS X clients can use the same configuration as Linux clients. The cd parameter will need to be modified.

OpenVPN Client on Microsoft Windows

Use the same configuration as above but comment out the cd, group and user parameters.

# cd /path/to/vpn/config
# group nobody
# user nobody

See Also