目次
Clash を終了しても、Windows が古いポートへリクエストを送り続ける場合がある
典型的な症状は、Clash の実行中はウェブページが正常なのに、アプリを終了するとブラウザへすぐ ERR_PROXY_CONNECTION_FAILED と表示され、Clash を再度開くと復旧することです。
多くの場合、問題はブロードバンド回線ではなく、プロキシ設定が 127.0.0.1 と古いポートを参照したままになっていることです。プロセスはもう待ち受けていないのに Windows が転送を続けるため、connection refused になります。
まずスマートフォンを同じ Wi-Fi へ接続するか、コンピューターからルーターの管理アドレスへ ping を送ります。他のデバイスがインターネットを使え、コンピューターからルーターへ到達できるなら、ネットワークアダプターを先にリセットしないでください。Windows のユーザープロキシ、自動設定スクリプト、WinHTTP、環境変数、アプリ個別のプロキシは独立しているため、設定が残った層を特定します。
各エラー症状が通常示す箇所
| 症状 | 優先して確認すること | よくあるメッセージ |
|---|---|---|
| Chrome、Edge、システムアプリがすべて接続できない | Windows の手動プロキシまたは設定スクリプト | ERR_PROXY_CONNECTION_FAILED |
| ブラウザは正常だが、インストーラーまたはシステムサービスが失敗する | WinHTTP | 接続を拒否される、またはダウンロードできない |
| ターミナル内の Git、npm が失敗する | 環境変数とツール独自のプロキシ | Failed to connect to 127.0.0.1 |
| 一つのブラウザだけに問題がある | 拡張機能、ブラウザポリシー、セキュア DNS | 他のアプリからは引き続きアクセスできる |
| TUN を一度でも使うと、終了後にすべて切断される | 仮想ネットワークアダプター、サービス、ルート | 明確なプロキシエラーがない |
まず Windows の「プロキシ」ページで直接接続へ戻す
Windows 11 で確認する場所
プロキシ設定を開く
「設定 → ネットワークと Internet → プロキシ」を開き、まず「プロキシサーバーを使う」が有効なままか確認します。
古い手動アドレスを無効にする
アドレスが 127.0.0.1 で、ポートが Clash の mixed-port と一致する場合は、「プロキシサーバーを使う」を無効にして保存します。
設定スクリプトを確認する
「セットアップスクリプトを使う」に古い PAC アドレスが入っている場合も無効にし、「設定を自動的に検出する」はいったん残します。
ブラウザを完全に終了してから再テストする
すべてのブラウザウィンドウを閉じ、バックグラウンドプロセスが終了したことを確認してから、シークレットウィンドウを一つ開き、通常の HTTP サイトと HTTPS サイトへアクセスします。
Windows のページですでに無効に見える場合は、Win + R から inetcpl.cpl を実行し、「接続 → LAN の設定」でもう一度確認します。古いプログラムの中には、この Internet オプションからユーザープロキシを読み込むものがあります。有効スイッチを残してアドレスだけを変更しないでください。
この手順で復旧したら、まず Clash を終了した状態のままにします。ルーター管理画面と普段使うサイトを直接開ければ、残っていたユーザープロキシを特定できています。この段階で winsock reset を実行したり、ネットワークアダプターを削除したりする必要はありません。
ブラウザは復旧したのにシステムのダウンロードが失敗する場合は、WinHTTP を確認する
WinHTTP は主にシステムサービス、インストーラー、一部の企業向けプログラムで使われ、Windows の「プロキシ」ページとは別のスイッチです。ブラウザでは直接接続できるのに、winget、特定のインストーラー、サービスが古いプロキシへ接続しようとする場合に限り、ここを確認します。
netsh winhttp show proxy
# 只有输出仍显示旧代理时才执行
netsh winhttp reset proxyターミナルだけ接続できない場合は、多くの場合、Clash の終了後も変数またはツールの設定が残っている
多くの開発チュートリアルでは HTTP_PROXY、HTTPS_PROXY、ALL_PROXY を一時的に設定し、Git や npm の設定へプロキシを保存する場合もあります。これらは Clash のウィンドウを閉じても自動では消えません。新しく開いた PowerShell で現在のプロセスレベルとユーザーレベルの変数を確認し、その後、失敗するツール独自の設定元を調べます。
Get-ChildItem Env: | Where-Object Name -match '^(HTTP|HTTPS|ALL|NO)_PROXY$'
[Environment]::GetEnvironmentVariable('HTTP_PROXY', 'User')
[Environment]::GetEnvironmentVariable('HTTPS_PROXY', 'User')
git config --show-origin --get-regexp "http.*proxy"
npm config get proxy
npm config get https-proxyGit に Failed to connect to 127.0.0.1 port 7890 と表示される
主な原因:Git の設定または環境変数が古いポートを参照している
対処方法:--show-origin が返したファイルにある該当 proxy 項目だけを削除し、他の Git 設定まで無差別に消去しません。
npm は失敗するが curl は正常
主な原因:npm のユーザー設定に proxy/https-proxy が残っている
対処方法:取得元を確認してから npm config delete proxy と npm config delete https-proxy を実行します。
新しいターミナルは正常だが、古いターミナルでは失敗する
主な原因:古いウィンドウが起動時のプロキシ変数を引き継いでいる
対処方法:古いターミナルを閉じて開き直します。システムのネットワーク設定を変更する必要はありません。
ブラウザだけに問題がある場合は、ブラウザ独自の設定を外す
まずシークレットウィンドウを開き、すべてのプロキシ拡張機能を無効にします。拡張機能が独自の PAC へ切り替えたり、システムプロキシの無効化後もリクエストを取り込んだりする場合があります。企業向けブラウザではポリシーからプロキシが設定されることもあり、chrome://policy または edge://policy で取得元を確認できます。管理ポリシーがある場合は、レジストリの変更で強制的に上書きしないでください。
ERR_NAME_NOT_RESOLVED は名前解決失敗を示す可能性が高く、ERR_PROXY_CONNECTION_FAILED は明確にプロキシ接続を示します。前者では、比較のためブラウザの「セキュア DNS を使う」を一時的に無効にできます。403 または 404 を受信できれば、ネットワークリクエストはサーバーへ到達しているため、キャッシュ消去やネットワークアダプターのリセットを続けないでください。
プロキシエラーがないのにコンピューター全体がオフラインなら、TUN サービスとデフォルトルートを確認する
TUN モードは仮想ネットワークアダプターを作ってルートを変更するため、システムプロキシとは異なる方法で調査します。まず Clash を開き直し、TUN とサービスモードを無効にして、トレイメニューから正常に終了します。次に route print を使い、デフォルトルートが実際の Wi-Fi または有線ゲートウェイへ戻ったか確認します。仮想ネットワークアダプターが見えるという理由だけでドライバーを削除しないでください。他の VPN も使用している可能性があります。
Get-NetAdapter | Sort-Object Status, Name
route print- デフォルトルートが停止済みの仮想インターフェースを参照したまま
- まず該当する VPN/TUN サービスを通常の手順で無効にしてコンピューターを再起動します。インターフェース名を記録した後で、クライアントコンポーネントをアンインストールするか判断してください。
- 物理ネットワークアダプターにゲートウェイがない、または 169.254 アドレスになっている
- これはすでに DHCP またはローカルネットワークの問題です。プロキシ設定を変更し続けず、Wi-Fi へ再接続するかアドレスを更新してください。
- ルートとアドレスは正常だが、DNS だけが失敗する
- ネットワークアダプターの DNS とブラウザのセキュア DNS を確認します。コンピューター全体のネットワークリセットは、バックアップ後の最後の手段にしてください。
「Clash を終了した後も直接接続できる」ことを修正完了の基準にする
Clash 終了後に一項目ずつ確認する
- Windows の「プロキシサーバーを使う」と古い PAC がどちらも無効
- 直接接続が必要なコンピューターで netsh winhttp show proxy に Direct access と表示される
- 新しいターミナルに古いポートを指すプロキシ変数がない
- ブラウザ、システム更新の確認、少なくとも一つのターミナルツールからアクセスできる
- コンピューターを再起動しても結果が元へ戻らない
Clash を再び有効にするときは、一度に一つの取り込み方式だけを使います。まずシステムプロキシを試し、有効化時と終了時のどちらも正しく元へ戻ることを確認してください。システムプロキシを使用しないアプリが本当にある場合に限り、TUN を個別にテストします。クライアント、ブラウザ拡張機能、スクリプトから同時にシステムプロキシを変更すると、次に設定が残った際、どれが書き込んだか判断できません。
