Ok, j'ai donc cherché sur le Web des solutions à ce problème sans qu'aucune réponse ne semble fonctionner pour moi. J'espère que quelqu'un pourra m'aider. J'essaie seulement de configurer le client OpenVPN.
Je cours CrunchBang Linux 3.2.0-4-amd64 Debian 3.2.60-1+deb7u1 x86_64 GNU/Linux
et je viens de passer à l'utilisation systemd
. Le basculement s'est assez bien passé mais maintenant je n'arrive pas à faire venir mon client OpenVPN en utilisant systemd J'ai essayé de suivre ces tutoriels de configuration, mais rien ne fonctionne.
- http://fedoraproject.org/wiki/Openvpn
- http://d.stavrovski.net/blog/how-to-install-and-set-up-openvpn-in-debian-7-wheezy
- Et regardé un tas d'autres guides différents.
Je peux afficher le tunnel depuis la ligne de commande avec openvpn /etc/openvpn/vpn.conf
. Je sais donc que le fichier de configuration est bon, il fonctionnait très bien avec sysvinit, donc je ne suis pas surpris. J'essaye alors de faire juste un statut avec pour systemctl status openvpn@vpn.service
résultat:
$ sudo systemctl status openvpn@vpn.service
openvpn@vpn.service
Loaded: error (Reason: No such file or directory)
Active: inactive (dead)
J'ai réalisé que je dois faire une configuration pour les services. Je veux être invité à entrer un mot de passe, j'ai donc suivi ce guide pour créer un openvpn@.service
in /etc/systemd/system/
. Mais le redémarrage du service OpenVPN ne demande toujours pas de mot de passe.
$ sudo service openvpn restart
[ ok ] Restarting openvpn (via systemctl): openvpn.service.
Les didacticiels Fedora passent par les étapes de création de liens symboliques, mais ne créent aucun des fichiers .service dans les procédures pas à pas.
Quelle pièce me manque? Dois-je créer un openvpn@vpn.service? Si oui, où dois-je le placer exactement? J'ai l'impression que ça ne devrait pas être aussi difficile, mais je n'arrive pas à trouver de solution qui fonctionne pour moi. Je suis heureux de fournir plus d'informations nécessaires.
Solution
-rw-r--r-- 1 root root 319 Aug 7 10:42 openvpn@.service
[Unit]
Description=OpenVPN connection to %i
After=network.target
[Service]
Type=forking
ExecStart=/usr/sbin/openvpn --daemon ovpn-%i --status /run/openvpn/%i.status 10 --cd /etc/openvpn --config /etc/openvpn/%i.conf
ExecReload=/bin/kill -HUP $MAINPID
WorkingDirectory=/etc/openvpn
[Install]
WantedBy=multi-user.target
openvpn@.service (END)
Lien symbolique:
lrwxrwxrwx 1 root root 36 Aug 7 10:47 openvpn@vpn.service -> /lib/systemd/system/openvpn@.service
Demander un mot de passe
Tout fonctionne maintenant, sauf qu'on vous demande un mot de passe pour vous connecter. J'ai essayé cette solution . J'ai légèrement modifié le fichier ci-dessus et ajouté un script Expect comme dans l'exemple. Travailler comme un charme! Mes fichiers sont ci-dessous.
Lignes modifiées de ce qui précède /lib/systemd/system/openvpn@.service
ExecStart=/usr/sbin/openvpn --daemon ovpn-%i --status /run/openvpn/%i.status 10 --cd /etc/openvpn --management localhost 5559 --management-query-passwords --management-forget-disconnect --config /etc/openvpn/%i.conf
ExecStartPost=/usr/bin/expect /lib/systemd/system/openvpn_pw.exp
Attendez-vous à un script /lib/systemd/system/openvpn_pw.exp
. Assurez-vous de procéder comme suit:
chmod +x
sur le script.- Avoir
telnet
installé
Code du script attendu:
#!/usr/bin/expect
set pass [exec /bin/systemd-ask-password "Please insert Private Key password: "]
spawn telnet 127.0.0.1 5559
expect "Enter Private Key Password:"
send "password 'Private Key' $pass\r"
expect "SUCCESS: 'Private Key' password entered, but not yet verified"
send "exit\r"
expect eof
Il convient de noter que la solution ci-dessus enregistre votre mot de passe saisi en texte brut dans les connexions suivantes /var/log/syslog
et/var/log/daemon.log
journalctl -b -m
découvrez pourquoi OpenVPN s'est fermé. Un de ces endroits devrait contenir les vrais messages d'erreur. (Ou même journalctl -b -m _EXE=/usr/sbin/openvpn
ne devrait donner que des messages OpenVPN).
openvpn@.service
fichier?