PAC ファイルが誤ったネットワーク アダプターを選ぶ理由
ノート PC には複数のローカル アドレスがある場合があります。myIpAddress() に基づく PAC ルールは、想定したものとは別のインターフェイスを識別することがあります。
ノート PC はオフィスの Wi-Fi に接続され、Ethernet ケーブルも接続され、VPN アダプターもまだ存在しています。PAC ファイルは myIpAddress() にどのネットワークにいるかを尋ねます。これは、誤ったアダプターに属するアドレスを取得するまでは合理的に思えます。
欠けている詳細は、この関数が 1 つのアドレスだけを返すことです。すべてのインターフェイスの一覧ではなく、公開 IP を調べるために Web サイトへ問い合わせることもありません。プライベート アドレスや、ループバックへのフォールバックでさえ、プロキシ経由の要求がどの出口アドレスを使うかは教えてくれません。
複数のアドレスを持つマシンへの 1 つの答え
ネットワーク インターフェイスの選択は PAC の実装に属します。Windows のアダプターを並べ替えるという古い助言は、特定のブラウザーと OS のバージョンを説明しているかもしれませんが、汎用的な修正としては不十分です。Chromium は独自の選択アルゴリズムとマルチホームの制限を文書化しています。別のクライアントが同じ選択をする必要はありません。
影響を受けているブラウザーが実際に提供した値を特定することから始め、それをスクリプト内のサブネット検査と比較してください。これを Wi-Fi、Ethernet、承認済みの VPN 接続で個別に行います。意外に見えるアドレスでも、実装のルールを満たしている場合があります。
判断を推測に依存しにくくする
可能であれば、想定したクライアント インターフェイスではなく、宛先ホスト名に基づいてプロキシを選択してください。ネットワーク検出が必要な場合は、組織が管理する意図的で文書化されたシグナルを使用します。DNS ベースの検出にも失敗モードがあるため、そのシグナルが利用できない場合の動作を定義してください。
一部の実装では myIpAddressEx() が提供されています。採用する前に、そのサポートと戻り値の形式を確認してください。単一の IPv4 文字列の直接の代替ではありません。最後に、結果として生じる要求ルートを独立して検証してください。オフィスのサブネットを正しく認識することと、意図したプロキシに到達することは、2 つの別個の結果です。