· トラブルシューティング · 読了時間 約9分

Windows UWP アプリがプロキシを通らない:ループバック制限の解除方法

システムプロキシを有効にするとブラウザは正常なのに、Microsoft Store、メール、天気などのストアアプリがネットに接続できない、あるいは直接接続になってしまう——これは Clash の設定ミスではなく、Windows が UWP アプリに課すループバック制限が原因です。本記事では制限の仕組みを解説し、GUI でのチェック操作とコマンドラインの2つの免除方法、そして TUN モードで全トラフィックを処理する代替案を紹介します。

症状:ストアアプリだけが正常に動かない

この問題の典型的なシナリオ:Clash でシステムプロキシを有効にし、ブラウザでの海外サイトアクセスは快適なのに、OS 標準のストアアプリが一斉に不調になります。よくある症状は次の通りです。

原因はサブスクリプションでもルールでもありません。通常のデスクトップアプリ(Win32)はシステムプロキシ設定を直接読み取り、トラフィックをローカルポート 127.0.0.1:7890 に送ります。一方、ストアアプリは AppContainer サンドボックス内で動作しており、システムは既定でループバックアドレスへの接続を禁止しているため、リクエストは Clash に届く前にシステムにブロックされます。

仕組み:AppContainer とループバック制限

Windows 8 以降、ストアアプリ(UWP、以前は Metro と呼ばれた)は AppContainer という隔離環境で実行され、ネットワーク面では Network Isolation ポリシーが適用されます。既定ではアプリからローカルのループバックアドレス(127.0.0.1::1)への接続が許可されません。悪意あるストアアプリがローカルで動作するサービスを探査・攻撃するのを防ぐのが設計の趣旨です。

Clash のシステムプロキシの本質は、プログラムのトラフィックをローカルの混合ポート(既定 7890)に渡すことです。Win32 アプリは Network Isolation の制約を受けずそのまま通りますが、UWP アプリは 127.0.0.1 への接続自体をシステムに拒否されます。結果は2通り:アプリがネットワークエラーを出して全く接続できないか、プロキシを迂回して直接接続し、「ネットにはつながるがプロキシを通っていない」状態になるかです。

解決策は LoopbackExempt、つまりループバック免除です。指定したアプリをホワイトリストに追加し、ループバックアドレスへのアクセスを許可します。免除はシステム設定に書き込まれ、再起動後も保持されます。追加と削除には管理者権限が必要です。

免除してもプロキシ経由になるとは限らない

ループバック免除が解決するのは「ローカルに接続できるか」という問題だけです。免除後も、アプリはシステムプロキシ設定を経由する(または TUN に処理される)ことで、初めてトラフィックが Clash に入ります。両者は前後関係であり、代替関係ではありません。

方法1:クライアント付属の免除ツール

GUI 操作が最も手軽で、ほとんどのユーザーにおすすめです。

  1. Clash Verge Rev を開き、設定ページで「UWP ループバック免除」の項目を探します。
  2. クリックするとアプリ一覧が表示されます(Windows 標準の EnableLoopback 画面が呼び出されます)。免除したいアプリにチェックを入れます。
  3. 保存して管理者権限の確認ダイアログを承認すれば、設定は即時有効になります。

旧版の Clash for Windows にはインストールフォルダに EnableLoopback.exe が同梱されており、ダブルクリックで同じチェックリスト画面が開きます。チェックは必要なものだけに:Microsoft Store、メールとカレンダー、Xbox、天気など、実際にプロキシを通したいアプリだけを選び、すべて選択する必要はありません。免除の範囲は小さいほど安全です。

方法2:CheckNetIsolation コマンドライン

GUI ツールで目的のアプリが見つからない場合や、細かく制御したい場合は、システム標準の CheckNetIsolation.exe を使います。まず管理者として PowerShell を開きます。

最初に、アプリのパッケージファミリ名(PackageFamilyName)を調べます:

Get-AppxPackage -Name "*store*"

出力から PackageFamilyName フィールドを探します。例えば Microsoft Store なら Microsoft.WindowsStore_8wekyb3d8bbwe です。あとは必要に応じて実行します:

操作コマンド
免除を追加CheckNetIsolation.exe LoopbackExempt -a -n=Microsoft.WindowsStore_8wekyb3d8bbwe
一覧を表示CheckNetIsolation.exe LoopbackExempt -s
1件を削除CheckNetIsolation.exe LoopbackExempt -d -n=Microsoft.WindowsStore_8wekyb3d8bbwe
すべて削除CheckNetIsolation.exe LoopbackExempt -c

パラメータ補足:-n はパッケージファミリ名または AppContainer 名を受け付け、-p は SID を受け付けます。通常の操作は -n で十分です。-s を実行すると現在免除されているすべてのアプリを一覧でき、確認に便利です。

権限要件

追加・削除・クリアはすべて管理者権限のターミナルで行う必要があります。さもないと「要求された操作には管理者特権が必要です」と表示されます。通常のウィンドウでは一覧表示のみ実行可能です。

方法3:TUN モードで全トラフィックを処理

アプリごとに免除を設定したくない場合は、発想を変えましょう。mihomo コアの TUN モードは仮想ネットワークアダプタを作成し、ネットワーク層でマシン全体のトラフィックを処理します。システムプロキシ設定には依存しません。UWP アプリの接続も通常のアプリと同様に Clash へルーティングされ、ループバック制限は障害にならなくなります。

TUN モードにはサービスモードのインストールと管理者権限の付与が必要で、設定はクライアントの設定ページから行います。PC 上に UWP アプリが多い場合や、新しいアプリがプロキシを通らない問題に頻繁に遭遇する場合に適しています。他のネットワーク問題を切り分ける際は、システムプロキシか TUN のどちらか一方に固定し、2つの処理方式の併用で原因特定が混乱するのを避けましょう。

確認方法とよくある質問

免除が完了したら、Microsoft Store を開いて任意のアプリを検索し、ページが正常に読み込まれれば成功です。より直接的な確認方法は、クライアントの接続(Connections)パネルを開き、対象アプリを操作して、対応するドメインの接続記録が現れるかを見ることです。記録があれば、トラフィックは確実に Clash を通っています。

免除後もアプリが接続できない

順番に確認してください:システムプロキシがまだ有効になっているか。混合ポートが変更されていないか(既定 7890)。対象アプリを完全に終了してから開き直したか。一部のアプリはネットワーク状態をキャッシュします。

コマンド実行時のエラー

「管理者特権が必要です」と表示されたら、ターミナルが管理者として実行されていません。閉じてから右クリックで「管理者として実行」から PowerShell を開き直して実行してください。

アプリ更新後に免除が無効になる

免除はパッケージファミリ名で記録され、通常はバージョンをまたいで保持されます。ごく一部のアプリは大型アップデートでパッケージ名が変わるため、新しい PackageFamilyName で追加し直す必要があります。-s で一覧と照合すれば確認できます。

まとめ

ストアアプリがプロキシを通らない根本原因は Windows のループバック隔離であり、Clash の不具合ではありません。アプリが少なければ GUI ツールか CheckNetIsolation で個別に免除し、多ければ TUN モードで一括解決しましょう。

クライアントをダウンロード