J’ai voulu connecter mon nas Synology à un Serveur OpenVPN utilisant un certificat et une clé.
Cependant, je n’ai trouvé aucune option dans l’interface de Synology qui me permette de sélectionner ce mode de fonctionnement.
J’ai donc pris mon courage à deux mains, remonté mes manches et j’ai commencer à trifouiller dans les méandres du DSM.
Je suis tombé sur une page de documentation qui citait que les fichiers du client VPN étaient présent sous le chemin suivant:
/usr/syno/etc/synovpnclient/openvpn/
J’ai été voir et effectivement, les fichiers d’OpenVPN sont présents à l’arborescence.
Un petit coup de
openvpn --help (...) --cert file : Local certificate in .pem format -- must be signed by a Certificate Authority in --ca file. --extra-certs file : one or more PEM certs that complete the cert chain. --key file : Local private key in .pem format.
On peut voir que les clés et certificats sont supportées.
J’ai donc importé ma configuration dans le répertoire ci-dessus ainsi que les certificats / clés.
Je pensais le lancer à travers l’interface de Synology (En utilisant le même nom pour le fichier de configuration) mais il semble
que cela fasse planter le client web.
D’autre part, j’ai remarqué que lors d’une coupure de connexion, cette version d’OpenVPN n’arrive pas à remonter la connexion de manière fiable.
Le processus reste bloqué sans que la connexion soit fonctionnelle.
Pour paler à ce soucis, j’ai donc créé un script sh qui, lancé toute les heures via un cron, ping la passerelle.
Dans le cas où le ping échoue, le script tue le processus et le relance.
IP_GATEWAY="10.88.0.1"
if [ $(ping -q -c 10 $IP_GATEWAY > /dev/null; echo $?) -eq 1 ] ; then
if [ $(ps |grep openvpn | grep -v grep | grep -v openvpn.sh | wc -l) -gt 1 ] ; then
echo "[$(date)]Killing proc in error" >> /root/openvpn.log
killall openvpn
fi
echo "[$(date)]Connection lost, restarting VPN" >> /root/openvpn.log
if [ $(lsmod | awk '{print $1}'|grep -E ^tun$ |wc -l) -ne 1 ] ; then
/sbin/insmod /lib/modules/tun.ko
fi
cd /usr/syno/etc/synovpnclient/openvpn
openvpn --config yun.conf --daemon
else
echo "[$(date)]Connection successfull, VPN still functionning." >> /root/openvpn.log
fi