アプリが失敗するとVPNのせいにされますが、リクエストはトンネルに届いてすらいません。macOSがそのアプリにローカルプロキシを使うよう伝えているなら、最初のホップは127.0.0.1で、そこでは何も待ち受けていません。Charlesを閉じても、それが入れたシステムプロキシ設定が必ず消えるわけではないため、健全なVPNが死んだソケットの後ろに隠れてしまいます。確認して、間違っている部分だけを直す順序は次のとおりです。

最初のホップはサーバーではなく、このMacです

アドレスを文字どおりに読んでください。127.0.0.1は、目の前にあるマシンそのもので、ポートはプロキシツールが待ち受けるように設定されていた番号です。その待ち受けが消えると、接続はタイムアウトではなく、すぐに接続拒否で失敗します。これが役に立つ手がかりです。

VPNは独自のプロキシ設定を作らず、システムの設定も削除しません。ふたつの設定は独立しているので、トンネルが完璧でもブラウザは使えないままになります。この独立性のため、VPNの再接続、再起動、新しいプロファイルを経ても不具合が残ります。VPNの経路がプロキシの保存領域に触れることはありません。

ステップ1: 現在のプロキシ状態を読む

まずは読み取り専用の表示から始めます。アプリが解釈する前に、システムが何を信じているかが分かるからです。

scutil --proxy

見るのは HTTPEnable、HTTPProxy、HTTPPort、HTTPSの相当項目、そして ProxyAutoConfigEnable とそのURLです。何も待ち受けていないポートで有効になっているプロキシが、あなたの不具合です。PAC URLはもう一つの形です。要求時にファイルがプロキシを選ぶため、目に見える手動アドレスがなくても有効になります。

次に同じ値を、システム設定、ネットワーク、実際に使っているサービス、詳細、プロキシで確認します。GUIとコマンドは同じ保存領域を読むので、食い違いがあれば別のサービスを見ています。

ステップ2: 設定の持ち主を特定する

この状態を作る持ち主は三つです。ヘルパーを入れて片付けなかったプロキシツール、組織の管理された構成プロファイル、そしてデバッグ中に誰かが足した手動設定です。正しい直し方はそれぞれ違い、気軽に外してよいのは最初のものだけです。

Charlesはブラウザとシステムプロキシの統合、macOSのヘルパーを含めて文書化しているので、まずその独自の制御と終了の手順を使ってください。特権ヘルパーは構成を変えるために存在します。だからといって、無関係なソフトにマシンへの広いアクセスを与える理由にはなりません。

設定が管理プロファイル由来なら、ローカルで無効にしても失敗するか、次のチェックインで戻されます。これはローカルの不具合ではなく、プロファイルの持ち主に対するポリシーの問題として扱ってください。

ステップ3: いちばん狭い範囲だけを変える

特定のサービスについて、意図しない特定の項目だけを無効にします。すべてのサービスを切り替えたり、プロキシのパネル全体を消したりしないでください。VPNサービスと土台のWi-Fiサービスは別々の設定を保っており、片方が正しい可能性があります。

プロキシが意図的に必要な場合は、ポリシーを消すのではなく、承認された待ち受けを起動します。プロキシがインターネットへの唯一の経路で、VPNが二番目の狭い経路という組織では、この区別が重要です。

影響を受けたアプリから新しいリクエストをひとつ試します。起動時に一度だけプロキシを読むアプリもあり、終了して開き直すのは迷信ではなくテストの一部です。

ステップ4: プロキシが消えても失敗する場合

それは別の問題で、新しいエラーこそが有用な証拠です。名前解決、VPNのルーティング、TLSの信頼、アプリの認可は四つの別々の確認であり、それぞれ違う形で失敗します。

証明書の信頼はこの修理の対象外にしてください。信頼されたルートを外したり、サーバー検証を弱めたりしても、死んだプロキシのソケットは直らず、変更が二つと元の不具合が一つ残るだけです。企業プロキシがTLSを検査しているなら、それは独自の信頼要件を持つ意図的な設計で、取り消すべき副作用ではありません。証明書に触る前にプロキシを所有するチームに聞いてください。彼らの答えはポリシーの話で、あなたの答えはひとつの失敗したリクエストの話です。

始める前に戻し方を書いてください。見つけたプロキシの値を正確に記録しておけば、復元は記憶の練習ではなくコピーになります。Charlesのプロキシ設定のドキュメントには、使っているバージョンの統合と終了時の挙動が書かれています。

次にアプリがVPNで失敗したら、トンネルより先に最初のホップを確認してください。コマンドひとつで済み、誤診のカテゴリを丸ごと除外できます。

関連記事