接続トラブルシューティング · Clash 技術ブログ

Clash を終了すると通信できない場合は?Windows のシステムプロキシと WinHTTP のリセット

Clash を終了しても、Windows は停止済みのローカルポートへ通信を送り続ける場合があります。まずシステムプロキシと PAC を復元し、その後 WinHTTP、ターミナルの環境変数、TUN の経路を確認してください。

  • システムプロキシ
  • Windows
  • WinHTTP
目次

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 で確認する場所

  1. プロキシ設定を開く

    「設定 → ネットワークと Internet → プロキシ」を開き、まず「プロキシサーバーを使う」が有効なままか確認します。

  2. 古い手動アドレスを無効にする

    アドレスが 127.0.0.1 で、ポートが Clash の mixed-port と一致する場合は、「プロキシサーバーを使う」を無効にして保存します。

  3. 設定スクリプトを確認する

    「セットアップスクリプトを使う」に古い PAC アドレスが入っている場合も無効にし、「設定を自動的に検出する」はいったん残します。

  4. ブラウザを完全に終了してから再テストする

    すべてのブラウザウィンドウを閉じ、バックグラウンドプロセスが終了したことを確認してから、シークレットウィンドウを一つ開き、通常の 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-proxy

Git に 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 を個別にテストします。クライアント、ブラウザ拡張機能、スクリプトから同時にシステムプロキシを変更すると、次に設定が残った際、どれが書き込んだか判断できません。

参考資料