macOS で VPN を削除するのは一つの操作に見えますが、実際には少なくとも四つあります。システム設定のボタンは、システム構成ストアからネットワークサービスを一つ削除します。クライアントアプリ、そのアプリがインストールしたネットワーク拡張、キーチェーンにある認証情報、デバイス管理から配信されたプロファイルは削除しません。どの症状がどのオブジェクトに属するかを知ることが、削除した VPN が静かに戻ってくるのを防ぎます。

「構成を削除」ボタンが実際に削除するもの

追加した VPN はすべてネットワークサービスになり、Wi-Fi や Thunderbolt Bridge と同じ種類のオブジェクトです。macOS はそれらをすべてここに保持します: /Library/Preferences/SystemConfiguration/preferences.plist に、それぞれサービス ID、表示名、トンネルの種類、サーバーアドレス、トンネルの起動方法を記述した構成ディクショナリとともに。

システム設定で VPN を開き、サービスの横の情報ボタンを押し、「構成を削除」を選んで確認すると、macOS はトンネルを停止し、そのサービスオブジェクトを削除してストアを書き直します。システムが所有する部分については解体は完全で、サービスは一覧から消え、ログイン時に何も起動しません。

ボタンが届かないのは、別のサブシステムが所有するすべてです。アプリバンドルはここにあります: /Applications。NetworkExtension クライアントは、構成とは別に登録されたシステム拡張として動作します。認証情報はキーチェーン項目で、それを保持するキーチェーンのアクセス制御に従います。構成プロファイルはプロファイルシステムが所有します。サービスを削除しても、四つはすべて元の場所にそのまま残ります。

Mac がまだインストール済みと考えるものを一覧にする

何かを削除する前に棚卸しをします。三つのコマンドが、同じ目に見える障害を生む三つの層をカバーします:

scutil --nc list
networksetup -listallnetworkservices
profiles -P

scutil --nc list は VPN 構成の正式なビューで、接続状態、サービス名、サービス ID を示します。設定の一覧には決して現れない項目、つまり数か月前にアンインストールしたクライアントの残存サービスや静かに起動するオンデマンド構成を表示することがよくあります。 networksetup -listallnetworkservices はコマンドラインツールが期待する名前でネットワークサービスを表示し、名前で削除するにはこれが必要です。 profiles -P はインストール済みの構成プロファイルを一覧し、管理された Mac では VPN は自分で追加したサービスではなく、そうしたプロファイルの一つのペイロードかもしれません。

最初の一覧を信じるのではなく、一覧を一緒に読みます。 scutil にあって設定にないサービスは、通常、サードパーティのクライアントがトンネルを所有し、独自のウィンドウで表示していることを意味します。両方のビューにあり設定で灰色のサービスはポリシーを意味します。削除後に再び現れる名前は、何かがそれを再作成していることを意味し、その何かが本当の標的です。

所有者を通じてサービスを削除する

自分で追加したサービスについては、文書化された経路、つまりシステム設定、VPN、情報ボタン、「構成を削除」にとどまります。Apple はその経路を文書化しており、構成ストアの一貫性を保ちます。ネットワークスタックの実行中に preferences.plist を手で編集することは、どのインターフェースでも削除できない重複サービスやゾンビサービスを生む道です。

ターミナルから、名前でサービスを削除します: networksetup -removenetworkservice "Service Name"、次にこれで確認します: scutil --nc list。このコマンドはインターフェースと同じサービス一覧に作用するので、 networksetup -listallnetworkservices に現れない名前はどちらの経路でも削除されません。クライアントが次回起動時にサービスを再構築するため、トンネルを所有しているクライアントがある場合は、そのクライアントの削除またはアンインストール経路を先に使います。

VPN がデバイス管理から来た場合、あなたは所有者ではありません。MDM がインストールしたプロファイルは削除不可としてマークでき、削除可能なものでも次のチェックインで再配信されることがあります。これで確認してください: profiles -P、次に組織のオフボーディング手順を使います。ペイロードをローカルで削除すると失敗するか、再インストールを引き起こします。

サービスなしで再接続する残存物

よくある「戻ってきた」という報告は、サービスが戻ったのではなく、それを所有する拡張が戻ったものです。登録済みのシステム拡張と、ネットワーク拡張タイプのアプリ拡張を一覧にします:

systemextensionsctl list
pluginkit -m -p com.apple.networkextension.packet-tunnel

NetworkExtension クライアントはトンネルプロバイダを独自の識別子の下にインストールしたままにし、構成とは切り離しています。構成が消えた後も拡張は有効なままでいられ、クライアントのメニューバーエージェントは次回起動時に新しい構成を作成し、ときには削除したばかりの名前を再利用します。ログイン項目とベンダーのヘルパーをここで確認してください: /Library/LaunchDaemons 削除が失敗したと結論づける前に。

認証情報が二つ目の残存物です。ログインキーチェーンに保存されたパスワードやクライアント証明書はサービスとともに削除されず、IPSec の共有シークレットは歴史的にシステムキーチェーンに存在するため、削除して再追加するとパスワードの入力を求められないことがあります。Mac があなたの管理を離れるなら、Keychain Access でサービス名から項目を特定し、保存された認証情報が表すアカウント、証明書、ピアキーを取り消してください。 A copied configuration file is a live credential even after local removal。

削除を確認し、戻ってくるプロファイルを正しく読む

サービスが両方のビューから消え、再起動後も消えたままであれば削除は完了です。 scutil --nc list でサービス ID を、 scutil --dns で名前解決が期待するリゾルバを使っていることを確認し、オンデマンドのルールとログインエージェントはきれいな起動でしか姿を見せない二つなので、その後一度再起動します。

まだ残っているなら、それ以上オブジェクトを削除しないでください。MDM プロファイルがサービスを再配信するのか、クライアントエージェントが再構築するのか、それとも名前が一致しなかったためサービスが削除されていなかったのか、どの層がそれを再作成したのかを突き止めます。その答えが、ベンダーのアンインストーラ、IT チーム、同じ削除ダイアログの再実行のどれが必要かを決めます。Apple の削除ガイドは自分で追加したサービスのサポート経路を扱っていますが、残存物は自分で確認すべき部分です: remove a VPN configuration。

関連記事