Prérequis
Openvpn n’étant pas un paquet standard de CentOS, je dois ajouter le dépôt que j’aime bien, j’ai nommé Dag Wieers !
Ce dépôt contient une foultitude de paquets compilés pour ma distribution préférée, ce qui m’évite de devoir les compiler moi-même.
– Installation du dépot Dag Wieers – Rpmforge
rpm -Uhv http://apt.sw.be/packages/rpmforge-release/rpmforge-release-0.3.6-1.el5.rf.i386.rpm
Ceux qui utilisent une des autres distributions gérées par ce dépot ( fedora et redhat ) , peuvent se conférer à la documentation de DAG, pour savoir configurer yum dans leur cas.
– Installation d’openvpn
yum -y install openvpn
La bibliothèque de compression lzo sera également installée automatiquement.
Création du certificat
Openvpn utilise des certificats pour authentifier le serveur et les postes clients, donc on doit bien créer les certificats pour nos machine.
Pour ce faire, voici la procédure à suivre :
cd /etc/openvpn
cp -ar /usr/share/doc/openvpn-
cd easy-rsa
vi vars
On édite ce fichier, car c’est lui qui contient un certain nombre de variables qu’il est souhaitable de changer si on ne veut pas les taper manuellement à chaque création de certificat.
Par exemple :
export KEY_SIZE=1024
export KEY_COUNTRY=FR
export KEY_PROVINCE=Tarn
export KEY_CITY=Castres
export KEY_ORG="LINUXTIPS"
export KEY_EMAIL="monemail@monfai.fr"
Je modifie aussi en début de fichier le dossier par défaut.
Le script fais un pwd pour savoir quel est le dossier de base, je préfère le fixer en dur comme ceci:
#export D=`pwd`
export D="/etc/openvpn/easy-rsa"
On charge ces valeurs en mémoire,
. vars
On crée ensuite les dossiers et fichiers nécessaires :
mkdir keys
touch keys/index.txt
echo "01" > keys/serial
On crée enfin les certificats de l’autorité de certification, du serveur et du poste client.
source build-dh
source build-ca
source build-key-server MonServeurVPN
source build-key MonClientVPN
Il faudra transférer de manière sûre les fichiers ca.crt, MonClientVPN.crt et MonClientVPN.key au client openvpn.
Configuration « Many on One server »
Cette configuration donne la possibilité de connecter plusieurs clients à notre serveur OpenVPN.
Dans cet exemple, nous prenons comme parti que le serveur VPN a comme adresse IP publique 10.0.0.1 et est connecté aux réseaux privés 10.0.2.0/24 et 10.0.3.0/24.
Le serveur VPN utilisera localement le réseau 10.0.1.0/24.
Modèle de fichier de configuration du client openvpn.conf
cert MonClientVPN.crt
key MonClientVPN.key
# Wireless networks often produce a lot
# of duplicate packets. Set this flag
# to silence duplicate packet warnings.
;mute-replay-warnings
# These settings are shared by all clients
client
ns-cert-type server
user nobody
group nobody
remote 10.0.0.1 1194
ca cacert.pem
dev tun
proto udp
resolv-retry infinite
nobind
persist-key
persist-tun
comp-lzo
verb 3
Voici le modèle de configuration openvpn.conf du serveur VPN
# If you want to accept connections on just one interface, set "local"
;local a.b.c.d
port 1194
proto udp
dev tun
dh /etc/openvpn/easy-rsa/keys/dh1024.pem
ca /etc/openvpn/easy-rsa/keys/ca.crt
cert /etc/openvpn/easy-rsa/keys/MonServeurVPN.crt
key /etc/openvpn/easy-rsa/keys/MonServeurVPN.key
client-config-dir /etc/openvpn/ccd
server 10.0.1.0 255.255.255.0
ifconfig-pool-persist /etc/openvpn/ipp.txt
push "route 10.0.0.0 255.255.255.0"
push "route 10.0.2.0 255.255.255.0"
push "route 10.0.3.0 255.255.255.0"
push "dhcp-option DNS 10.0.2.2"
push "dhcp-option WINS 10.0.0.2"
push "dhcp-option DOMAIN vpn.mondomaine.local"
;push "dhcp-option NTP 10.0.0.1"
client-to-client
keepalive 10 120
max-clients 100
comp-lzo
user nobody
group nobody
persist-key
persist-tun
verb 4
;mute 20
log /var/log/openvpn/dynamic
status /var/log/openvpn/status
Créez le dossier ccd et le fichier ipp.txt
mkdir /etc/openvpn/ccd
touch /etc/openvpn/ccd/ipp.txt
chown nobody: /etc/openvpn/ccd/ipp.txt
Créez le dossier de log et changez le propriétaire en nobody ( le compte qu’utilise openvpn quand il a démarré )
mkdir /var/log/openvpn
chown nobody: /var/log/openvpn
Démarrage et activation du service OpenVPN
Méthode classique sur CentOS et Redhat,
service openvpn start
pour démarrer le service et chkconfig openvpn on
pour l’activer au boot du serveur.
Si un client connecté possède un sous-réseau derrière lui, nous pouvons ajouter cette route en utilisant un fichier ccd.
Ce fichier doit porter le même nom que le client « Common Name » de son certificat. Consultez le status log pour vérifier comment l’écrire.
Entrer la route à ajouter dans le fichier comme ceci :
iroute 192.168.1.0 255.255.255.0
On peut aussi ajouter la route dans la configuration générale comme ceci :
route 192.168.1.0 255.255.255.0
Maintenant, vous pouvez tester votre connexion VPN.
Démarrez openvpn sur le serveur et le client.