GNU/Linux >> Linux の 問題 >  >> Debian

Debian –このSystemdユニットファイルの始まりがわからない?

そのため、Debian 9ベースのサーバーでopenvpn構成を調べていたところ、openvpnデーモンのsystemdユニットファイルでは説明できないことがわかりました。デーモン自体は問題なく起動して動作していますが、理由がわかりません…説明させてください🙂

そのため、openvpnをインストールし、/etc/openvpn/server.confに適切な構成を設定しました ファイル。これまでのところ何も問題はありません。

ただし、明らかに2つのsystemdユニットがopenvpnで実行されています。つまり、 openvpn.service および[メール保護] 。後者は実際に着信VPN接続などを受け入れるもののようですが、前者はほとんど何もしていないようです。どうやら後者を開始するために実行されているようです、私は推測します…

/etc/systemd/system/multi-user.target.wants/を確認しています openvpn関連ファイルのディレクトリには、openvpn.serviceファイルのみが表示されます。このファイルは、/ lib / systemd/systemにある同様の名前のファイルへのシンボリックリンクです。このファイルの内容は次のとおりです。

# 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

うんいいね。したがって、これは/ bin/trueのみを実行します。次に、[メール保護]を正確に開始するもの デーモン?このためのユニットファイルは/lib / systemd/[メールで保護されています] しかし、このユニットファイルを正確に実行するための手がかりをシステム上で見つけることができません。 (私は / etc / systemd / systemの下にこれのシンボリックリンクを見つけることを期待していました どこかにありますが、ありません。)このファイルの内容は次のとおりです。

[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

したがって、このユニットファイルにはopenvpn.serviceファイルよりもはるかに多くの内容が含まれています。しかし、何がそれを開始しますか? PartOf =openvpn.serviceに気づきました 上記のファイルの一部ですが、manページでこの意味を調べても、それほど賢くはありません。

何が原因なのか知りたいので、検索を続けます!

この特定のユニットファイルがどのように実行されるか、または何がそれを開始するかについて何か手がかりがあれば、私に知らせてください🙂

承認された回答:

2つのことを知っておく必要があります:

  • さらにいくつかの文書化されていない systemdがユニットファイルを保持するディレクトリ。
  • DebianとUbuntuはジェネレーターを提供しています /lib/systemd/system-generators/openvpn-generatorにあります これにより、*.confごとに1つずつ、ドキュメント化されていないディレクトリの1つに「wants」シンボリックリンクが配置されます。 /etc/openvpn内のファイル 。

シンボリックリンクにより、openvpn.serviceが発生します ターゲットのように振る舞い、さまざまなテンプレートのインスタンス化をすべて「望んでいる」。サービスユニットの開始時の解説が説明しているように。

DebianとUbuntuは、OpenVPNの人々が自分たちと一致していないことに注意してください。 Arch、CentOS、Fedoraなどで使用されているsystemdの供給。 DebianとUbuntuは、OpenVPN自体で提供されているものに完全に取って代わり、systemd用のものを備えています。したがって、少なくともdocoを読むときは、そのdocoが想定しているオペレーティングシステムに注意してください。

関連:Linux – ttyセッションとxorgセッションを切り替える方法は?

OpenVPNの人々は以前 [email protected]を提供します テンプレートユニットですが、ジェネレーターもopenvpn.serviceもありません サービスとしてのターゲット。 [email protected]name そうするための通常のsystemdメカニズムを使用していて、直接「求められていた」 multi-user.targetによる 、サービスとしての中間ターゲットではなく。

OpenVPNの人々最近 個別の[email protected]を提供する および[email protected] テンプレート、ジェネレーターまたはopenvpn.serviceを引き続き提供しない target-as-a-serviceであり、[email protected]name および[email protected]name そうするための通常のsystemdメカニズムを使用してください。 *.conf ファイルが/etc/openvpnから移動しました そして/etc/openvpn/clientに および/etc/openvpn/server 、も。

さらに読む

  • ジョナサンデボインポラード(2016)。 「systemd.unitからシステム検索パスがありません マニュアルページ」。 systemdの正誤表 ドコ 。頻繁に与えられる回答。
  • https://unix.stackexchange.com/a/233581/5132
  • https://unix.stackexchange.com/a/206490/5132
  • 「systemdサービス構成」。 OpenVPN 。 Archwiki。
  • 「systemdサービス構成」。 OpenVPN 。放物線ウィキ。
  • クリスティアンヘッセ(2016-12-30)。 OpenVPN2.4.0アップデートには管理者とのやり取りが必要です 。アーチニュース。
  • https://askubuntu.com/a/640026/43344

Debian
  1. Debian – Systemdを使用した「askfirst」Getty(「Enterキーを押してこのコンソールをアクティブ化」)?

  2. Systemd:生成されたユニットファイルを無効にできませんか?

  3. Adobe 11 /Debian10にOpenVPNサーバーをインストールする

  1. 「ユーザー名が sudoers ファイルにない」を修正します。この事件は Debian で報告されています

  2. systemd サービス ログをファイルにリダイレクトする

  3. サービスファイルは存在しますが、systemd によって検出されません

  1. Debianパッケージングを介してSystemdファイルを条件付きで有効にしますか?

  2. Debian – SystemdでOnfailureを使用する適切な方法は?

  3. Systemdユニットファイルを入れますか?