VPNクライアントを削除したのに、起動時にトンネルがまだ立ち上がる
削除したVPNクライアントは、systemdユニット、保存済みプロファイル、ヘルパー、aptリポジトリを残すことがあります。他を消す前に四つすべてを棚卸ししてください。
ディストリビューションがパッケージを消し、メニューから項目が消えても、次の再起動でトンネルはやはり立ち上がります。市販のVPNクライアントは、パッケージマネージャーが追跡しなかった部品を残すため、きれいな削除はきれいなマシンと同じではありません。その部品のうち四つ、つまりユニット、接続プロファイル、特権ヘルパー、ベンダーのリポジトリが、ほとんどすべての幽霊接続を説明します。何かを消す前に四つすべてを読み、その後それぞれを所有するコンポーネントを通して取り除いてください。
アンインストーラーが決して記録しなかったもの
パッケージマネージャーが消すのは、自分が書き留めたファイルだけで、それ以外は何も消しません。クライアントが実行時に作った接続プロファイル、インストール後に有効化されたユニット、昇格した権限で動きながら自身を登録したヘルパーについての記録はありません。どれも別のサブシステムに属し、どれもパッケージより一回以上の再起動だけ長く生きられます。その隙間こそが、トンネルを生んだソフトウェアが消えているのにトンネルが健全でありうる理由です。
残存物には、systemd、NetworkManager、リポジトリ設定、あるいはユーザーごとの自動起動エントリといった所有者が必ずいます。まず所有者を突き止めることが、掃除を中途半端に設定されたマシンにしないための鍵です。ファイルを直接消すのは所有者が再生成するまでしか効かないため、下のコマンドは問い合わせから始まります。
四つの所有者、まずは読み取りだけ
削除ではなく問い合わせから始め、返ってきた正確な名前を書き留めます。ベンダーはメタパッケージの隣にバージョン付きのペイロードを同梱することが多いため、一つの製品が二つの名前で現れます。両方の一覧に出る名前は、所有者が二つある単一の製品であり、両方を取り除く必要があります。最初の束はパッケージとユニットを扱い、残存物の大半がそこで見えます。
dpkg -l | grep -i acmevpn
systemctl list-unit-files | grep -i acmevpn
systemctl list-units --type=service --state=running | grep -i acmevpn
二番目の束は、掃除のあと最も生き残りやすい二つのコンポーネント、つまり接続プロファイルとベンダーのリポジトリを扱います。重複した名前はよくあり削除コマンドは識別子を期待するため、名前ではなくUUID列を読んでください。リポジトリの行は、死んだベンダーのホストが数か月後に無関係なインストールを壊しうるため、今日削除しなくても読む価値があります。どちらの一覧も何も変えない、だからこそ先に実行します。
nmcli -f NAME,UUID,TYPE connection show
nmcli connection show --active
grep -ril acmevpn /etc/apt/sources.list.d/ /etc/apt/sources.list
掃除のあとも生きているプロセスは、有効なユニットか、別のプログラムの子です。もう存在しないサービスを責める前に、プロセステーブルと親の連鎖を読んでください。ユーザーごとの自動起動エントリも同じ確認が必要で、それらは新しいログインシェルにだけ現れ、rootセッションには現れません。
互換性のない三つの動詞
停止は現在の実行を終わらせ、無効化は起動時のリンクを外し、マスクはユニットを/dev/nullに向けます。三つ目のものだけがソケット、タイマー、依存関係による起動も妨げるため、三つの中で最も強い手段になります。マシンをどうするか決めている間は順序が重要です。その判断の間は、次の起動で静かに立ち上がるのではなく大きな音を立てて失敗するため、マスクが正しい状態です。
再インストールの前にマスクを外さないと、新しいパッケージは誰も書き留めていない理由で壊れて見えます。同じ注意はパッケージングの違いにも当てはまり、あるビルドは停止できるユニットを同梱する一方、別のビルドはサービスを一切残しません。掃除の道筋が両者で異なるため、動詞を選ぶ前にどちらのパッケージングかを確かめてください。
ワイルドカードは間違ったプロファイルを消す方法
書き留めたUUIDでプロファイルを削除し、決してワイルドカードでは消さないでください。keyfileディレクトリにはマシン上のすべてのWi-FiとEthernetプロファイルも入っているため、広い一致はまだ必要なものまで消します。手で消したkeyfileは、それを所有するポリシーによって再生成されることがあり、削除が効かないように見えます。
nmcli connection delete uuid <uuid>
そのプロファイルが手元に残る唯一のコピーなら、ローカルでの削除はサーバー上の何も取り消さないため、先にゲートウェイとIDを書き出してください。リポジトリも同じ規則で、ベンダーの単一ファイルとそのキーリングを外し、パッケージ一覧を更新して、本当に欲しかったインストールをやり直します。古い第三者の項目を残すと、古い依存を固定したり、まったく応答しなくなったりします。どちらの削除も小さく、どちらも手元のコピーから元に戻せます。
再起動のあとも動き続けるもの
勝利を宣言する前に再起動し、アプリケーションではなく痕跡を探します。古いクライアントが残したトンネルインターフェース、古い分割ルート、リンクごとのDNSは、それぞれ自分のコマンドを必要とします。三つとも、すべてのパッケージを正しく消した掃除のあとにも生き残れます。
ip link
ip route
resolvectl status
自動起動エントリは新しいログインシェルでしか発火しないため、そこも開いてください。次に、インターフェースが状態を変えるたびに接続を立ち上げるスクリプトを/etc/NetworkManager/dispatcher.d/で探すのは、背後にサービスがないのにトンネルが戻る理由を突き止めるためです。まだ何かが外へ発信しているなら、症状が止むまでファイルを消すのではなく、プロセスを親までたどってください。マシンをきれいにすることとアカウントを取り消すことは別の作業で、再起動が静かに見えるときに終わっているのは片方だけです。