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 [email protected]
résultat:
$ sudo systemctl status [email protected]
[email protected]
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 [email protected]
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 [email protected]? 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 [email protected]
[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
[email protected] (END)
Lien symbolique:
lrwxrwxrwx 1 root root 36 Aug 7 10:47 [email protected] -> /lib/systemd/system/[email protected]
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/[email protected]
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
[email protected]
fichier?journalctl -b -m
découvrez pourquoi OpenVPN s'est fermé. Un de ces endroits devrait contenir les vrais messages d'erreur. (Ou mêmejournalctl -b -m _EXE=/usr/sbin/openvpn
ne devrait donner que des messages OpenVPN).Réponses:
Je pense que la configuration de Debian OpenVPN avec systemd est actuellement un peu cassée. Pour que cela fonctionne sur mes machines, j'ai dû:
Créez
J'ai appelé mon dossier/etc/systemd/system/[email protected]
(le répertoire), et placez-y un nouveau fichier avec ceci:local-after-ifup.conf
. Cela doit se terminer avec.conf
. (C'est le bit qui est actuellement un peu cassé.)Créez un fichier
Il s'agit du bogue Debian 741938 (corrigé dans 2.3.3-1)./etc/tmpfiles.d
(j'ai appelé le mienlocal-openvpn.conf
) avec le contenu:Créez un lien symbolique dans
multi-user.target.wants
(la manière la plus simple estsystemctl enable openvpn@CONF_NAME.service
) Par exemple, si vous l'avez/etc/openvpn/foo.conf
, vous l'utiliseriez[email protected]
.Si le script d'initialisation SysV apparaît également dans systemd, désactivez-le. Il s'agit du bogue Debian 700888 (corrigé dans 2.3.3-1).
REMARQUE: 2.3.3-1 ou version ultérieure n'est pas encore en cours de test , bien qu'il soit instable.
la source
/etc/init.d/openvpn
; systemd exécute par défaut ceux comme le ferait sysv init. C'est ce queopenvpn.service
vous avez; vous devez le désactiver (systemctl disable
). Le fichier/lib/systemd/system/[email protected]
existe- t- il sur votre système?ln -s /lib/systemd/system/[email protected] /etc/systemd/system/multi-user.target.wants/[email protected]
/etc/init.d/openvpn script.
/etc/openvpn/
.Modifier
/etc/default/openvpn
. Décommentez ceci:Courez
systemctl daemon-reload
.service openvpn start
.la source
client.conf
, maintenant avec ça ma configuration simple fonctionne. Merci!Ce type de fichier d'unité est un service instancié - plus de détails sont disponibles ici
Voici le fichier d'unité de
openvpn
CentOS 7:et il réside comme
/usr/lib/systemd/system/openvpn@service
. Le%i
dans le fichier est remplacé par la chaîne après le@
dans le nom de l'unité.Comme le fichier de configuration est à,
/etc/openvpn/myopenvpn.conf
le service démarre avec:la source
/usr/lib/systemd/user/
rien d'autre au/usr/lib/systemd
niveau./lib/systemd/system/
? Il me semble avoir les deux sur mon système, avec un contenu identique (et ce ne sont pas des liens symboliques!).Vous devez créer le fichier de service en l'activant
openvpn@<configuration>.service
.Par exemple, si le fichier de configuration est
/etc/openvpn/client.conf
, le nom du service est[email protected]
.Depuis l'Arch Wiki
la source
/etc/openvpn/vpn.conf
systemctl start [email protected]
ne marche pas non plus? Cela devrait fonctionner ...L'openvpn @ .service a beaucoup évolué entre Debians 8 et 9. Le paquet original pour Jessie, par exemple, échoue
systemctl reload openvpn@
. Pour corriger cela, la version Stretch introduit 10 nouvelles directives dans le fichier systemd, y comprisPIDFile=
pour faire fonctionner à nouveau le rechargement.Pour les utilisateurs extensibles, je suggère d' aller pour le backport, et si pas possible de le faire, au moins obtenir le fichier systemd-de https://packages.debian.org/jessie-backports/openvpn et l' extrait
debian/[email protected]
dans/etc/systemd/system/[email protected]
et bénéficier d'une meilleure fonctionnalité et sécurité.la source
La solution appropriée consisterait à utiliser les
systemd-ask-password
« agents de mot de passe » de systemd , qui fournissent un moyen intégré à systemd de canaliser les mots de passe / phrases de passe vers les services.Vous aurez besoin d' OpenVPN 2.3.0 ou d'une version plus récente pour ce faire.
la source
Sur une nouvelle installation de Jessie_8.0.0, j'ai fait:
/etc/openvpn/cluster.conf
(plus*.key
et*.crt
) de WheezyAUTOSTART="all"
en/etc/default/openvpn
- je pense que cela n'a eu aucun effet/lib/systemd/system-generators/openvpn-generator cluster
systemctl restart [email protected]
Maintenant, le tunnel est en place - je verrai ce qui se passera après un redémarrage, mais je ne peux pas redémarrer en ce moment
la source