VPN を切断したのに、三十秒後にメニューバーのアイコンが戻ってくる。怪奇現象ではない:macOS のオンデマンドルールは、ネットワークが変わったとき、あるいはルールが対象とする名前を何かが問い合わせたときに接続を開始し、しかもそのルールは自分が書いた覚えのないプロファイルに住んでいることがある。以下の確認を順番にたどるほうが、クライアントを再インストールするより速い。ルールはポリシーなので、戦う前にポリシーを読むこと。

ルールが実際に見ているもの

オンデマンドのルールには判断点が二つあり、Mac が接続しているネットワークと、何かが解決しようとしているドメインだ。どちらでもトンネルは立ち上がるので、内部名を引くだけで誰も開いていない VPN が始まる。配備には、人がいなくても動く認証も要るので、管理された端末群では証明書ベースの仕組みが主流になる。

システムポリシーとは別に、アプリごとの再接続オプションが存在することもあるので、最初の問いはどの仕組みがトンネルを再接続したのかだ。まずシステムポリシー、次にクライアント、そして最後に切断を押した人を見る。責任ありげに見えるクライアント設定の多くは、実際にはそうではない。この順序が重要なのは、システムポリシーが既定で勝つからであり、クライアント側の設定はポリシーが覆わない場合しか説明できない。

ポリシーの持ち主と、削除の代償

どちらを変えるにしても、まずインストール済みのプロファイルと対応しているクライアント制御を読む。Mac が管理下にあるなら条件はどこかに文書化されているので、その文書を求めるほうが外から SSID とドメインを逆算するより良い。

Mac 上の信頼の材料は、それを使う他のすべてのサービスと共有されるので、失効は最初の手段ではなく最後の手段だ。ルールを持つプロファイルを外し、証明書に触る前にルールが発火しなくなったことを確認する。中途半端に外したプロファイルこそ、挙動がランダムだと人が結論づける理由だ。何が入っているかを見る二つのコマンドは手元に残す価値がある:

profiles show -type configuration
scutil --nc list

再接続が証明しないこと

オンデマンドの再接続は隙間について何も語らず、トンネルが立ち上がる間も、別のポリシーが押さえていない限り通信は物理インターフェースから出ていける。トンネルが存在する前に遮断するのは、トンネルを開始するのとは別の設定だ。すぐ再接続するマシンでも、最初の数秒は漏れることがある。

経路の範囲は三つ目の問いであり、トンネルを開始するルールはどのプレフィックスを運ぶかを何も言わない。再接続は完全な被覆を意味すると決めつけず、接続が何を経路に載せているかを確かめる。意図的に試すなら、クライアントを終了し、サービスが止まったことを確認してから、ルールが守るはずの資源を要求する。

記録するのはアイコンではなく引き金

ネットワークへの参加、アプリの起動、非公開名の解決、スリープからの復帰など、何がトンネルを立ち上げたのかを書き留める。順序こそが証拠なので、起きたという事実だけでなく、いつ起きたかに注目する。具体的な引き金は、アイコンのスクリーンショットより価値がある。

次に、接続が上がったあとで資源を確認する。メニューバーが示すのはサービスが動いていることであり、必要な宛先にそこを通って届くことではない。この二つはごく普通の理由でずれ、別の場所を指す経路もその一つだ。

ルールが誤った接続を始めるとき

始まるべきでないときに始まる接続は、たいてい古いプロファイル、意図より広いドメイン条件、あるいは同じネットワークを奪い合う二つの構成から来る。三つともインストール済みの構成に見えており、どれもサービスを切り替えても明らかにならない。

引き金、プロファイルの持ち主、意図した挙動を持って、ポリシーを管理する人に会いに行く。Apple のオンデマンドに関する文書がその会話の共通語彙であり、議論より短い。削除ではなくポリシーの変更を求めれば、双方が動く構成を保てる。

関連記事