Petit pense-bête à propos des connexions clientes aux serveurs VPN... Ce sont des modes de connexion que je n'ai pas l'habitude d'utiliser. Quand je dois changer d'adresse IP j'utilise plutôt le port forwarding à travers un tunnel SSH.

Placer les certificats au bon endroit

Si j'utilise NetworkManager dans ma session utilisateur normale, alors il faut placer les certificats dans le répertoire .cert afin de ne pas se faire bloquer par SELinux. En effet, pour que NM puisse les lire, il leur faut, ainsi qu'au répertoire parent, un contexte SELinux particulier : home_cert_t. Ce contexte est attribué par défaut au répertoire /home/$USER/.cert/ automatiquement.

Si j'utilise le service OpenVPN configuré en mode client, alors il faut placer les certificats dans le répertoire /etc/openvpn/keys/ (pour ne pas mélanger avec les autres fichiers de config). Penser bien à ajouter "keys/" dans le fichier de configuration, pour spécifier les noms de certificat. Sinon OpenVPN ne les trouvera pas. Il utlise d'ailleurs /etc/openvpn/ comme racine pour rechercher les fichiers spécifiés.

Lorsque des routes ne sont pas correctement indiquées par le serveur VPN

Cela peut arriver. En l'occurence, mon serveur VPN ne fournit pas toutes les routes nécessaires pour la connexion. Il est plus facile de les ajouter manuellement dans la conf de OpenVPN que dans la conf de NM.

La commande manuelle :

ip route add 192.168.1.0/24 via <adresse_de_linterface_tun0>

Le fichier /etc/openvpn/MaConnexion.conf :

route 192.168.1.0 255.255.255.0

Notez que pour le prefix /24 on indique l'adresse de broadcast 255.255.255.0, et que pour le prefix /16 on indiquerait l'adresse 255.255.0.0. Enfin, pas besoin de préciser l'interface de cette route dans le fichier de conf, puisqu'au tout début du fichier est indiqué l'interface tun.

Exemple de fichier de configuration pour OpenVPN en mode client

Il existe un squelette presque prêt à l'emploi qu'il suffit de copier dans /etc/openvpn/.

/usr/share/doc/openvpn/sample/sample-config-files/client.conf

Les seules modifications requises sont les noms de certificat et l'ajout éventuel de routes...

Créer un service systemd pour chaque connexion VPN

Contrairement à ce qui est indiqué dans le wiki Fedora, il faut créer le lien dans le répertoire de config /etc/ au lieu de /lib/ :

# ln /lib/systemd/system/openvpn@.service /etc/systemd/system/openvpn@MaConnexion.service

Puis démarrer le service :

# systemctl start openvpn@MaConnexion.service

That's all