何かがOpenVPNユニットを繰り返し起動している:発生源を特定する
ユニットを無効化することは、その有効化を削除することと同じではありません。プロファイルを削除する前に、インスタンス、テンプレートの対応関係、逆依存関係を確認してください。
OpenVPNのインスタンスが、見覚えのない名前で起動時に立ち上がり、停止しても次の再起動までしか効きません。このパターンは、プロセスは削除したが有効化は残っていることを意味します。両者は別のオブジェクトで、状態画面に見えるのは片方だけです。有効化を見つけるには、読み取り専用のコマンド四つと一つの判断が必要です。
まず正確なユニット名を特定する
プロファイルのファイル名ではなく、journalに記録されたユニット名から始めます。インスタンス名はopenvpn@、openvpn-client@、openvpn-server@、あるいはディストリビューション固有のものかもしれませんし、名前を推測すると誤ったテンプレートにたどり着きます。状態出力には実際に動作したユニット名が表示され、ここで重要なのはその名前だけです。接尾辞も含めて正確にコピーしてください。
次のコマンドは、何も変更せずにそのユニットを記述します。systemctl showはフラグメントのパス、ソースのパス、ユニットファイルの状態、drop-inの有無、何が起動したかを報告します。list-dependencies --reverseは、どの読み込み済みユニットがそれを指しているかを示します。どちらも読み取り専用なので、推論を組み立てる前に実行してください。
観測した名前をすべての箇所で置き換えます。コピーしたサンプル名は誤ったサービスを調査する最も一般的な原因で、一度も動いていないユニットについて自信ありげな答えを返します。
テンプレートを読んでファイル名を知る
インスタンスユニットはテンプレートの展開であり、どの設定ファイルを読むかはテンプレートが決めます(どの設定ファイルを読むか)。インスタンス固有のプレースホルダーで終わるコマンドラインは、インスタンス名と接尾辞に解決されます。接尾辞が.confでインスタンス名がoldなら、ファイルはold.confです。インスタンス名をold.confにすると、同じテンプレートはold.conf.confを要求します。
この詳細が重複の一類を説明します。誰かが誤った名前で二つ目のインスタンスを追加し、一つ目は動き続け、ホストには二本のトンネルと一つの紛らわしいログが残ります。
編集した記憶のあるファイルではなく、実際に有効なテンプレートを読みます。drop-inはコマンドラインを置き換えることがあり、起動時に動くのはその置き換えです。
それが起動トランザクションにどう入るかを追う
よくある経路は三つで、ターゲットからのwantsリンク、別ユニットからの要求、パッケージ生成器が作る生成ユニットです。逆依存の一覧は前者二つを読み込み済みグラフの項目として網羅します。タイマー、フック、外部要求は網羅しないため、この一覧は完全な監査ではなく証拠です。
/run/systemd/generator以下の生成物は製品であり、発生源ではありません。編集しても次の生成までしか残らないため、そこに適用した修正は成功したように見えて元に戻ります。
生成器がどこから読むかを推定する前に、パッケージの文書化された入力を確認します。文書化されていないディレクトリ走査が、有効化リンクなしでユニットが現れる通常の原因です。
有効化を削除し、プロセスだけにしない
インスタンスが直接有効化されていて本当に不要なら、systemctl disable --nowが停止と起動リンクの削除を一手順で行います。まず、このトンネルがホストへの唯一の管理経路でないことを確認してください。このコマンドはライフサイクルの例であり、マシン上のすべてのVPNを止める提案ではありません。確認はコマンドの前に実行し、後ではありません。
二つの半分は分離可能で、しばしば混同されます。無効化は稼働中のサービスを止めず、停止は有効化を削除しないため、部分的なコマンドは起動時に再発する問題を説明します。
無効化されたユニットも、別のユニットや明示的な要求で起動できます。生成器が有効化を所有している場合は、その出力を無効化するのではなく入力を修正します。マスクはより多くの経路を塞ぎますが依存関係を壊すことがあるため、理解の代わりにはなりません。
状態画面ではなく再起動で確認する
ユニット定義や生成器の入力が変わった場合はsystemdを再読み込みし、その結果の状態を確認します。デーモンの再読み込みは稼働中のトンネルに新しいプロファイルを押し込まないため、二つの確認は別です。再起動を計画し、意図したトンネルが動いたままインスタンスが存在しないことを確認します。
古いプロファイルは所有関係が分かるまで保持し、その後は所定の手順で廃止します。成功とは存在しないユニットと機能するアクセス経路であり、一つの画面から消えた失敗ユニットではありません。