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, si je dois changer d'adresse IP j'utilise plutôt le port forwarding à travers un tunnel SSH.

Placer les certificats aux bons endroits

Si j'utilise NetworkManager dans ma session utilisateur normale, placer les certificats dans le répertoire .cert/ juste pour 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 dès sa création.

Si j'utilise le service OpenVPN configuré en mode client, placer les certificats dans le répertoire /etc/openvpn/keys/ juste pour pas mélanger avec les fichiers de config. Penser surtout à ajouter "keys/" dans le fichier de configuration pour spécifier les noms des certificats, sinon OpenVPN ne les trouvera pas. Il utlise d'ailleurs /etc/openvpn/ comme racine pour rechercher les fichiers indiqués.

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

Cela peut arriver, en l'occurence mon serveur VPN n'indique pas toutes les routes nécessaires pour la connexion. Il est plus facile de les ajouter manuellement dans la conf de OpenVPN que 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 des certificats et l'ajout éventuel de routes...

Créer un service systemd par connexion VPN

Contrairement à ce qui est indiqué dans le wiki fedoraproject, 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