Après installation du paquet openvpn (apt-get install openvpn) sur le serveur et le client à connecter, il faut générer une clé statique à partager entre ces deux machines.

openvpn --genkey --secret server_client.key

Il faut poser cette clé sur le serveur et le client, de préférence en utilisant un canal sécurisé, scp(1) est une solution, l'apprendre par coeur en est une autre::).

Ensuite, la configuration du serveur et du client est assez simple. On va considérer que le serveur a le nom de domaine vpn.server.org, que son ip dans le vpn sera 10.42.0.1 et le client aura pour ip 10.42.0.2.
Sur le serveur, dans le fichier /etc/openvpn/static_client.conf :

dev tun0
ifconfig 10.42.0.1 10.42.0.2 # configuration ip point à point
secret server_client.key

Sur le client, dans le fichier /etc/openvpn/static_server.conf :

remote vpn.server.org # l'ip ou le nom de domaine du serveur
dev tun0
ifconfig 10.42.0.2 10.42.0.1
secret server_client.key

Il est temps de lancer le tunnel (et oui déjà), sur le serveur :

server# openvpn /etc/openvpn/static_client.conf 
Tue Oct 13 08:50:50 2009 OpenVPN 2.1_rc11 x86_64-pc-linux-gnu [SSL] [LZO2] [EPOLL] [PKCS11] built on Sep 18 2008
Tue Oct 13 08:50:50 2009 IMPORTANT: OpenVPN's default port number is now 1194, based on an official port number assignment by IANA.  OpenVPN 2.0-beta16 and earlier used 5000 as the default port.
Tue Oct 13 08:50:50 2009 /usr/sbin/openvpn-vulnkey -q server_client.key
Tue Oct 13 08:50:50 2009 TUN/TAP device tun0 opened
Tue Oct 13 08:50:50 2009 /sbin/ifconfig tun0 10.42.0.1 pointopoint 10.42.0.2 mtu 1500
Tue Oct 13 08:50:50 2009 UDPv4 link local (bound): [undef]:1194
Tue Oct 13 08:50:50 2009 UDPv4 link remote: [undef]

Sur le client :

client# openvpn /etc/openvpn/static_server.conf 
Tue Oct 13 14:51:50 2009 OpenVPN 2.1_rc11 i486-pc-linux-gnu [SSL] [LZO2] [EPOLL] [PKCS11] built on Sep 18 2008
Tue Oct 13 14:51:50 2009 IMPORTANT: OpenVPN's default port number is now 1194, based on an official port number assignment by IANA.  OpenVPN 2.0-beta16 and earlier used 5000 as the default port.
Tue Oct 13 14:51:50 2009 /usr/sbin/openvpn-vulnkey -q server_client.key
Tue Oct 13 14:51:50 2009 TUN/TAP device tun0 opened
Tue Oct 13 14:51:50 2009 /sbin/ifconfig tun0 10.42.0.2 pointopoint 10.42.0.1 mtu 1500
Tue Oct 13 14:51:50 2009 UDPv4 link local (bound): [undef]:1194
Tue Oct 13 14:51:50 2009 UDPv4 link remote: vpn.server.org:1194
Tue Oct 13 14:52:01 2009 Peer Connection Initiated with vpn.server.org:1194
Tue Oct 13 14:52:02 2009 Initialization Sequence Completed

Les machines peuvent normalement se contacter, vérifions :

client$ ping -c2 10.42.0.1
PING 10.42.0.1 (10.42.0.1) 56(84) bytes of data.
64 bytes from 10.42.0.1: icmp_seq=1 ttl=64 time=324 ms
64 bytes from 10.42.0.1: icmp_seq=2 ttl=64 time=324 ms

--- 10.42.0.1 ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1005ms
rtt min/avg/max/mdev = 324.583/324.775/324.968/0.601 ms

Des interfaces tunX sont créées :

client# ifconfig
[...]
tun0      Link encap:UNSPEC  HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00  
          inet addr:10.42.0.2  P-t-P:10.42.0.1  Mask:255.255.255.255
          UP POINTOPOINT RUNNING NOARP MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:100 
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)
[...]

Pour démarrer proprement les tunnels comme on le souhaite, il est utile d'aller jeter un oeil à la variable AUTOSTART du fichier /etc/default/openvpn. Sur le client par exemple, si on ne veut démarrer que le tunnel qui vient d'être configuré :

AUTOSTART="static_server"

Pour un démarrage directement par la ligne de commande, le script d'init accepte un nom de configuration :

client# /etc/init.d/openvpn start static_server

Il est important de bien prendre en considération les conflits de sous-réseau dans la topologie du tunnel pour éviter les problèmes de routage.

Prochaine étape, faire en sorte que tout le traffic passe par le tunnel (mode appelé "road-warrior").

Référence : le tutoriel officiel openvpn