D'accord, 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 suis entrain de courir CrunchBang Linux 3.2.0-4-AMD64 Debian 3.2.60-1+deb7u1 x86_64 GNU/Linux
et je viens de passer à l'utilisation de 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.
Je peux faire apparaître 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 systemctl status [email protected]
résultant en:
$ Sudo systemctl status [email protected]
[email protected]
Loaded: error (Reason: No such file or directory)
Active: inactive (dead)
J'ai réalisé que je devais 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]
dans /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.
-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]
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
Attendre le script /lib/systemd/system/openvpn_pw.exp
. Assurez-vous de procéder comme suit:
chmod +x
sur le script.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 entré en texte brut dans les journaux suivants dans /var/log/syslog
et /var/log/daemon.log
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éer /etc/systemd/system/[email protected]
(le répertoire), et y placer un nouveau fichier avec ceci:
[Unité] Requiert = networking.service Après = networking.serviceJ'ai appelé mon fichier
local-after-ifup.conf
. Il doit se terminer par .conf
. (C'est le bit qui est actuellement un peu cassé.)Créez un fichier dans /etc/tmpfiles.d
(J'ai appelé le mien local-openvpn.conf
) avec le contenu:
# Type Path Mode UID GID Age Argument D/run/openvpn 0755 root root - -Ceci est bogue Debian 741938 (corrigé dans 2.3.3-1).
Créez un lien symbolique dans multi-user.target.wants
(le moyen le plus simple est systemctl enable openvpn@CONF_NAME.service
) Par exemple, si vous avez /etc/openvpn/foo.conf
, vous utiliseriez [email protected]
.
Si le script d'initialisation SysV apparaît également dans systemd, désactivez-le. C'est bogue Debian 700888 (corrigé dans 2.3.3-1).
REMARQUE: 2.3.3-1 ou version ultérieure est pas encore en test , bien qu'il soit instable.
/etc/openvpn/
.Éditer /etc/default/openvpn
. Décommentez ceci:
AUTOSTART="all"
Courir systemctl daemon-reload
.
service openvpn start
.Ce type de fichier d'unité est un service instancié - plus de détails sont disponibles ici
Voici le fichier d'unité pour openvpn
sur CentOS 7:
[Unit]
Description=OpenVPN Robust And Highly Flexible Tunneling Application On %I
After=syslog.target network.target
[Service]
PrivateTmp=true
Type=forking
PIDFile=/var/run/openvpn/%i.pid
ExecStart=/usr/sbin/openvpn --daemon --writepid /var/run/openvpn/%i.pid --cd /etc/openvpn/ --config %i.conf
[Install]
WantedBy=multi-user.target
et il réside en tant que /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
puis le service démarre avec:
systemctl start [email protected]
Vous devez créer le fichier de service en activant openvpn@<configuration>.service
.
Par exemple, si le fichier de configuration est /etc/openvpn/client.conf
, le nom du service est [email protected]
.
Openvpn @ .service a beaucoup évolué entre Debians 8 et 9. Le paquet original pour Jessie par exemple ne parvient pas à systemctl reload openvpn@
. Pour résoudre ces problèmes, la version Stretch introduit 10 nouvelles directives dans le fichier systemd, notamment PIDFile=
pour que le rechargement fonctionne à nouveau.
Pour les utilisateurs de Stretch, je suggère d'aller pour le backport, et si ce n'est pas possible, au moins obtenir le fichier systemd de https://packages.debian.org/jessie-backports/openvpn = et extraire debian/[email protected]
en /etc/systemd/system/[email protected]
et profitez d'une meilleure fonctionnalité et sécurité.
La bonne solution consisterait à utiliser systemd-ask-password
/" Password Agents " de systemd, qui fournit un moyen intégré à systemd pour canaliser les mots de passe/phrases de passe vers les services.
Vous aurez besoin de OpenVPN 2.3.0 ou plus récent pour ce faire.
Sur une nouvelle installation de Jessie_8.0.0, j'ai fait:
/etc/openvpn/cluster.conf
(plus *.key
et *.crt
) fichiers de WheezyAUTOSTART="all"
dans /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