誰かがMacの接続を「オフィスVPN」と名付け、そのラベルは二回のサーバ移行を生き延び、プロトコルが変わったずっと後でも皆がオフィスVPNと呼び続けています。名前は構成の隣に保存されたあだ名であり、Macが何を交渉するかの証拠ではありません。宣言された種類を読むにはフィールドが一つ、その保存された種類を生きたセッションから切り分けるにはもう一歩かかります。推測を避ける順序は次のとおりです。

ラベルはあだ名、種類を宣言するのはペイロード

macOSのVPNサービスは、表示名、所有クライアント、型付き設定の集合を持つシステム構成エントリです。表示名は自由なテキストで、エントリを作成した誰でも編集でき、ユーザーがメニューバーで見るのはこの部分です。設定は、どの接続種別か、どのゲートウェイか、どの認証方式かという事実を運びます。両者を同期させるものは何もなく、だからこそ「L2TPオフィス」というプロファイルがIKEv2サービスであり得ます。

個人で作成した接続では、所有アプリまたはシステム自身のVPNパネルがその設定を表示します。管理されたMacではプロファイルは管理者のものであり、正しい行動は管理されたペイロードを編集するのではなく、秘密でない概要を要求することです。両者はメニューバーでは同じに見えますが、その下ではまったく違う振る舞いをします。一方はあなたが検査して変更できるもので、もう一方は配備済みで次のチェックイン時に復元されます。

この区別が重要になるのは、管理された構成と個人の構成が別々に統治されるからです。管理側がインストールしたプロファイルは置き換えられるか再適用されるため、ローカル編集は失敗するか黙って元に戻ります。自分が制御していないファイルをリバースエンジニアリングする代わりに、所有者に種類、ゲートウェイの身元、認証方式を尋ねてください。

ペイロードの何よりも先にVPNTypeを読む

Appleの管理されたVPNペイロードスキーマは、接続種別をVPNTypeキーで宣言し、それはPayloadTypeがcom.apple.vpn.managedである辞書の中にあります。値はIKEv2、IPsec、L2TP、VPNのような短いトークンで、ペイロードの他のすべてはそのトークンに従って解釈されます。

<key>PayloadType</key>
<string>com.apple.vpn.managed</string>
<key>VPNType</key>
<string>IKEv2</string>
<key>IKEv2</key>
<dict>
  <key>RemoteAddress</key>
  <string>vpn.head-office.example</string>
  <key>RemoteIdentifier</key>
  <string>ikev2.head-office.example</string>
</dict>

この断片は実例であり、インストール可能ではなく、実際の配備に必要なプロファイルのメタデータと資格情報を除いたペイロード配列の一つのエントリです。内容ではなく形のために読んでください。また、RemoteAddressとRemoteIdentifierは、配備が同じ文字列を与える場合でも、役割の異なる別のフィールドです。

旧来の値、たとえばPPTPは、現在のmacOSが新しい構成に提供する選択肢ではなくても、古いファイルに現れることがあります。保存されたプロファイルでトークンを見つけることは、何が書かれたかを証明しますが、OSがまだ何を受け入れるかは証明しません。

カスタム種別にはVPNSubTypeと所有アプリが必要

もしVPNTypeがVPNのとき、ペイロードはVPNSubTypeも持つ必要があり、これが接続を実装するプラグインまたはNetwork Extensionプロバイダを識別します。この識別子が接続を特定のクライアントへ振り向けるため、誤ったサブタイプはインストールはできるが起動を拒否するプロファイルを生みます。

アプリ拡張ベースのプロバイダでは、識別子は推測した拡張名ではなく格納しているアプリに属し、これがプロファイルを手で編集するときに人がよく間違える点です。正しいサブタイプでもクライアントを記述するのであって、通信路上のプロトコル、認証方式、そのクライアントが使う遠隔アクセス方針を記述するのではありません。

したがってカスタムペイロードが分かるのは、どのソフトウェアが接続を所有しているか、そしてほとんどそれだけです。何を交渉するかを知るには、そのプロバイダ自身の文書と設定済みのパラメータを読んでください。他組織のプロファイルからサブタイプをコピーすることは構成手法ではなく、たまたま解析が通る推測です。

Macが実際に構成しているものを一覧する

どのファイルを読む前にも、どんなサービスが存在し、どの状態にあるかをシステムに尋ねてください。コマンドライン表示はパネルをクリックするより速く、各エントリの隣に種類を出力します。

scutil --nc list
scutil --nc show "Office VPN"

最初のコマンドは構成済みのVPNサービスとその現在の状態を一覧し、二番目は選択したサービスの設定を、種類と接続先となるサーバアドレスを含めて出力します。退役したホストを指す古いエントリがよくある継承の問題なので、そのアドレスを期待するよう言われたゲートウェイと比べてください。

これらのコマンドは構成と状態を示すもので、トンネルが通信を運んでいることを証明しません。サービスが切断されていれば、出力は意図を述べるもので、動作中のセッションではありません。通信のない接続済みサービスはまた別の問題で、通常はプロトコル種別ではなくルーティングかDNSです。これら三つの観察を分けておかないと、診断は推測に逆戻りします。

保存された設定を生きたセッションから切り離す

保存されたプロファイルは意図の表明です。ゲートウェイが今もそのサービスを提供していること、このプロファイルが有効なものであること、セッションが正常に交渉されたことは示しません。それらは三つの別々の問いで、それぞれに独自の証拠があります。

所有者の状態表示や診断ツールを使って、有効な接続とゲートウェイが提示した身元を特定してください。ポートスキャンや無関係なサイトで見た証明書はどちらの問いにも答えず、証明書のコモンネームは期待される遠隔識別子と同じものではありません。

保存された種類がゲートウェイの対応と合わなくなったら、その所有者から代替プロファイルを入手してください。種類の文字列を変えても資格情報がプロトコル間で翻訳されるわけではなく、ある認証方式が別の方式になるわけでもありません。承認されたサポート経路でも概要を共有してください、エクスポートされた構成は、サポート依頼が決して必要としなかった資格情報や秘密鍵を運ぶことがあるからです。

関連記事