二つ目のクライアントを比較のためにインストールすると、最初のクライアントが動かなくなります。何も削除されておらず、両方のアプリはまだインストールされています。変わったのはその下にあります:システム拡張、DNS設定、または既定のルートであり、二つのクライアントは今どちらがそれを所有するかで一致していません。インストールは危険な部分ではなく、危険な部分は、戻るべきベースラインを記録せずに両方を動かすことです。

症状:二回目のインストール後に、動いていた構成が止まる

現代のmacOS VPNクライアントは、古い方式のインターフェースではなくネットワーク拡張を提供することがよくあります。インストールすると承認を求められたり、構成プロファイルが追加されたり、接続が確立される前にトラフィックへ影響するシステム拡張が登録されたりします。拡張はアプリのウィンドウが表示される前に読み込まれるため、新しいクライアントが待機している間に元のクライアントが失敗することがあります。

その後に元のクライアントが接続できない、または接続しても何も解決しない場合、新しい拡張が最初の容疑者です。それは競合の証拠ではありませんが、調査はそこから始まります。次に拡張の一覧とインストール済みの構成プロファイルを確認してください、アプリケーションフォルダだけでは不十分です。

何かをインストールする前にベースラインを記録する

現在動いているものを書き留めます:アプリの結果、クライアントのバージョン、接続先のエンドポイント、アプリごとまたは分割トンネルの除外設定です。元のプロファイルは、アプリケーションバンドルからファイルをコピーするのではなく、クライアントが対応する保護された手順で保存します。

scutil --dns | head -40
netstat -rn | head -30
ifconfig | grep -E "^(utun|ipsec)"

動いているクライアントが接続されている間に、その三つの出力を取得します。これらはリゾルバの状態、ルートテーブル、そして動く構成が生み出すインターフェース一覧を与えてくれ、後の比較に必要なのはまさにそれです。Macが雇用者に管理されている場合は、テスト中に自動の業務接続が再び有効になって結果がどちらのクライアント単独のものでもなくなるため、始める前に比較が許可されていることを確認してください。三つの出力をプロファイルのメモのそばに保存し、後の比較に参照があるようにします。

一度に一つの有効な経路を変える

元の接続を通常の操作で停止し、それから代替を開始します。二つのクライアントが同時に接続されていると、どちらかの製品ではなく組み合わせを表す結果になります。サービスが許すならエンドポイントと作業を揃えてください、別のサーバー経由のより速いダウンロードは二つのアプリではなく二つの接続方法を比べているからです。

新しいクライアントが失敗したら、他の何かを変える前に最初のエラーを保存します。最初のエラーは通常どの段階かを示し、設定変更後の二回目の試行は役に立たない情報を報告することがよくあります。

速度だけでなく、DNS、ルート、アプリを比較する

新しいクライアントを接続した状態で同じ三つのコマンドを実行し、行ごとに比較します。別の場所を指すリゾルバや、プライベートサブネットを欠くルートテーブルは、スループットを見る前に動作の違いのほとんどを説明します。すぐ接続しても内部名を解決できないクライアントは状態ウィンドウが良く見えても比較に勝ってはいないため、次に同じ作業で実際のアプリを試します。

トラフィックがどのインターフェースを使ったかに注目します。macOSではトンネルインターフェースの名前はどのクライアントがルートを持つかの信頼できる指標ではないため、どちらか一方だけを読むのではなく、インターフェース一覧とルートテーブルを組み合わせてください。utunインターフェースが二つある場合、あなたのトラフィックを運ぶのは一致するルートとリゾルバの項目を持つほうです。存在するインターフェースが常にトラフィックを運ぶとは限らないため、名前から推測すると誤ったインターフェースを責めることになります。

三つの出力をざっと見るのではなく、読み込んでください。リゾルバのダンプでは、utunインターフェースに紐づくネームサーバーがどのクライアントにインストールされたかを示し、ルートテーブルでは既定のルートがトラフィックを運ぶインターフェースを示し、インターフェース一覧では二つ目のutunデバイスが二つ目のトンネルの作成を意味します。その三行をベースラインと比べることで、復旧した構成と、両方のクライアントがまだ競合している構成を区別できます。

復元してから、きれいに削除する

元のクライアント自身のワークフローで戻り、ベースラインの出力が記録と一致することを確認します。リゾルバやルートテーブルが復旧しない場合は、他を削除する前に止めて直してください。使っていない構成は、それを所有するコンポーネントから削除します:クライアントのアンインストーラー、プロファイル、またはシステム拡張の設定です。

最後に、試したバージョン、使ったエンドポイント、それぞれの結果をメモに追記します。半年後、その記録が決定と噂の違いになります。

関連記事