J'ai donc regardé la configuration openvpn sur mon server Debian 9 et trouvé quelque chose que je ne peux pas expliquer dans les files d'unité systemd pour le démon openvpn. Le démon lui-même commence et fonctionne sans problème, mais je n'arrive pas à comprendre pourquoi … Laissez-moi vous expliquer 🙂
J'ai installé openvpn et j'ai une configuration correcte dans le file /etc/openvpn/server.conf . Rien de mal jusqu'à présent.
Cependant, apparemment deux unités systemd fonctionnent pour openvpn, à savoir openvpn.service et [email protected] . Ce dernier semble être celui qui accepte réellement les connections vpn incomming et ainsi, l'ancien ne semble pas faire grand-chose du tout. Il semble juste courir pour commencer ce dernier, je suppose …
La vérification du directory /etc/systemd/system/multi-user.target.wants/ pour les files liés à openvpn montre uniquement le file openvpn.service, lequel source est un lien symbolique vers un file nommé similaire dans / lib / systemd / system. Le contenu de ce file est:
# This service is actually a systemd target, # but we are using a service since targets cannot be reloaded. [Unit] Description=OpenVPN service After=network.target [Service] Type=oneshot RemainAfterExit=yes ExecStart=/bin/true ExecReload=/bin/true WorkingDirectory=/etc/openvpn [Install] WantedBy=multi-user.target
OK cool. Donc, cela ne fonctionne que / bin / true. Alors, qu'est-ce qui démarre exactement le démon openvpn @ server ? Je sais que le file d'unité pour ceci est /lib/systemd/[email protected] mais je ne peux find aucun indice sur mon système à ce qui exécute exactement ce dossier d'unité. (Je m'attendais à find un lien symbolique sous / etc / systemd / system somwhere, mais il n'y en a pas.) Le contenu de ce file est:
[Unit] Description=OpenVPN connection to %i PartOf=openvpn.service ReloadPropagatedFrom=openvpn.service Before=systemd-user-sessions.service Documentation=man:openvpn(8) Documentation=https://community.openvpn.net/openvpn/wiki/Openvpn23ManPage Documentation=https://community.openvpn.net/openvpn/wiki/HOWTO [Service] PrivateTmp=true KillMode=mixed Type=forking ExecStart=/usr/sbin/openvpn --daemon ovpn-%i --status /run/openvpn/%i.status 10 --cd /etc/openvpn --config /etc/openvpn/%i.conf --writepid /run/openvpn/%i.pid PIDFile=/run/openvpn/%i.pid ExecReload=/bin/kill -HUP $MAINPID WorkingDirectory=/etc/openvpn ProtectSystem=yes CapabilityBoundingSet=CAP_IPC_LOCK CAP_NET_ADMIN CAP_NET_BIND_SERVICE CAP_NET_RAW CAP_SETGID CAP_SETUID CAP_SYS_CHROOT CAP_DAC_READ_SEARCH CAP_AUDIT_WRITE LimitNPROC=10 DeviceAllow=/dev/null rw DeviceAllow=/dev/net/tun rw [Install] WantedBy=multi-user.target
Donc, ce file d'unité a beaucoup plus de substance que le file openvpn.service. Mais qu'est-ce que ça veut dire? J'ai remarqué la partie PartOf = openvpn.service dans le file ci-dessus, mais la search de la signification dans les pages de manuel ne m'a pas beaucoup plus sage.
Je continuerai à chercher parce que je veux juste savoir ce qui fait que cette chose coche!
Si quelqu'un a la moindre idée de la façon dont ce file spécifique est exécuté, ou de ce qui le lance, s'il vous plaît faites le moi savoir 🙂
Vous devez savoir deux choses:
/lib/systemd/system-generators/openvpn-generator
qui place les liens symboliques « /lib/systemd/system-generators/openvpn-generator
» dans un de ces directorys non documentés, un pour chaque file *.conf
dans /etc/openvpn
. Les liens symboliques font que openvpn.service
se comporte comme une cible et "veut" toutes vos instanciations de templates différents; comme l'explique le commentaire au début de l'unité de service.
Notez que Debian et Ubuntu ne sont pas alignés sur ce que les gens OpenVPN eux-mêmes fournissent pour systemd, qui est ce qui est utilisé sur Arch, CentOS, Fedora, etc. Debian et Ubuntu supplantent complètement ce qui est fourni dans OpenVPN lui-même pour tout cela, avec leurs propres trucs pour systemd. Donc, au less méfiez-vous en lisant doco quel operating system que doco suppose que vous avez.
Les personnes OpenVPN fournissaient une unité de template [email protected]
mais pas de générateur ni openvpn.service
target-as-a-service. Il fallait explicitement activer et désactiver openvpn@ name
onesself avec les mécanismes systemd ordinaires pour le faire, et ils étaient "voulus" directement par multi-user.target
, plutôt que par une cible-as-a-service intermédiaire.
De nos jours, les OpenVPN fournissent des [email protected]
distincts [email protected]
et [email protected]
, ne continuent pas à fournir un générateur ou une cible-comme-service openvpn.service
et s'attendent à ce que vous openvpn-service@ name
et désactiviez explicitement openvpn-service@ name
et openvpn-client@ name
vous avec les mécanismes systemd ordinaires pour le faire. Les files *.conf
ont été retirés de /etc/openvpn
et aussi dans /etc/openvpn/client
et /etc/openvpn/server
.
systemd.unit
access au système manquant à partir de la page de manuel systemd.unit
". Errata pour systemd
systèmed . Réponses fréquentes.