Je ne sais pas ce qui démarre ce file unité systemd

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:

  • Il existe plusieurs autres directorys non documentés où systemd conserve les files unitaires.
  • Debian et Ubuntu fournissent un générateur dans /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 .

Plus de lecture