ChatGPTがClashで使えない?接続タイムアウトの解決策

ClashでChatGPTだけ接続できないときは、モードやノードではなくルールやDNSが原因かもしれません。画面上で確認する場所と、TUNを使う場合の対処をまとめます。

ChatGPTだけ接続タイムアウトになるときの見分け方

Clashを有効にしているのにChatGPTだけが開かず、「接続がタイムアウトしました」「ネットワークエラーが発生しました」と表示される場合、ノードそのものが停止しているとは限りません。一般的なウェブサイトは表示できるのに、ChatGPTのログイン画面、会話画面、または送信処理だけが止まるなら、まずルール分岐、DNS解析、IPv6、TUNの取り込み範囲を確認します。

ChatGPT関連の通信は1つのドメインだけで完結しません。画面の読み込み、認証、APIリクエスト、静的ファイル、ストリーミング応答などで複数のホスト名へ接続します。そのため、メインページをプロキシへ送っていても、認証用やAPI用のドメインが DIRECT に振り分けられていると、ログイン後の画面だけが読み込めないことがあります。

最初からノードを何度も変更するのは効率的ではありません。別の海外サイトも同時に開けないならノードやサブスクリプションを疑い、ChatGPT以外は正常なら、ClashのログでChatGPT関連の接続がどのポリシーへ入っているかを確認するのが先です。

症状優先して確認する箇所考えられる原因
ChatGPTのページ自体が開かないルールログ、DNSログ対象ドメインがDIRECT、または名前解決に失敗
ログイン画面は開くが認証で止まる認証関連ドメインのポリシー認証通信の一部だけが直接接続になっている
会話は表示されるが送信がタイムアウトする接続ログ、TUN状態APIまたはストリーミング接続の分岐漏れ、UDP/TCP取り込み不足
ブラウザは使えるがデスクトップアプリは使えないシステムプロキシ、TUN、プロセスアプリがシステムプロキシを使わず、TUNも無効

画面上で確認する場所:ログとルールの判定結果

まずClash Verge、Clash Verge Rev、Clash for Windows、ClashXなどの画面で、プロキシが有効になっていることを確認します。クライアントによってメニュー名は異なりますが、見るべき場所は「Proxies」「Rules」「Logs」「Profiles」に相当する画面です。グローバルモードへ切り替えてChatGPTを再読み込みし、グローバルでは動くがルールモードでは動かない場合、ノードではなくルール側に問題があると判断できます。

  1. ブラウザでChatGPTのページを開き、Clashの接続ログを表示します。ページを完全に再読み込みし、ログを新しい接続だけに絞ります。
  2. ログに表示されたホスト名と、右側に表示されるポリシー名を確認します。ChatGPT関連のホストが DIRECT や意図しない国内用グループに入っていないかを見ます。
  3. 同じホスト名について、ルールのどの行にマッチしたかを確認します。ルールプロバイダーを利用している場合は、実際に読み込まれた内容と更新日時も確認します。
  4. 一時的にグローバルモードへ切り替え、同じページを開きます。グローバルでも失敗する場合は、ノード、時刻、TLS、ネットワーク制限などを追加で調べます。
  5. ブラウザのキャッシュだけでなく、ChatGPTのサイトデータを削除して再試行します。古い接続情報や失敗した認証セッションが残っている場合があります。

ルールは上から順番に評価され、最初に一致した時点で処理が終了します。下部に正しいプロキシルールを追加しても、上部に広すぎる DOMAIN-KEYWORDGEOIP、または MATCH,DIRECT があれば、その行には到達しません。特定ドメインをプロキシへ送るルールは、広い地域判定や最終フォールバックより前に配置します。

ノード名ではなく実際の判定結果を見る

「ノードを選択したからChatGPTもプロキシになる」とは限りません。ルールモードでは、選択中のノードグループと、各リクエストに適用されたポリシーは別々に決まります。ログに表示されたホスト名、マッチしたルール、最終ポリシーの3項目をセットで確認してください。

ルールとDNSを修正する基本手順

原因がルール分岐だと分かったら、ChatGPT関連のドメインをプロキシ用の策略グループへ送ります。グループ名は設定ごとに異なるため、例では PROXY としています。実際の設定では、存在するグループ名に置き換えてください。特定のホスト名をすべて断定的に追加するのではなく、ログに現れた宛先を基準にして必要な範囲だけを追加するのが安全です。

rules:
  - DOMAIN-SUFFIX,openai.com,PROXY
  - DOMAIN-SUFFIX,chatgpt.com,PROXY
  - DOMAIN-SUFFIX,oaistatic.com,PROXY
  - DOMAIN-SUFFIX,oaiusercontent.com,PROXY
  - MATCH,PROXY

上の例は構造を示すための最小例です。既存のルールプロバイダーを使っている場合、同じドメインを複数の場所へ重複して追加する必要はありません。設定を編集した後は、プロファイルを保存し、設定を再読み込みしてからルールログで反映を確認します。自動更新されるプロファイルでは、次回更新時に手動編集が上書きされることがあるため、管理画面のカスタムルール機能やオーバーライド機能を使える場合はそちらを優先します。

DNSの失敗もタイムアウトの原因になります。ChatGPT関連ドメインが誤ったIPアドレスへ解決されている、DNS問い合わせがローカルへ漏れている、またはDNSの結果とプロキシ経路の組み合わせが不整合になっている場合、ルールが正しくても接続できません。mihomoでは、DNSモジュールを有効にして fake-ip または環境に合った redir-host を選択し、TUN利用時はDNSハイジャックも確認します。

dns:
  enable: true
  enhanced-mode: fake-ip
  fake-ip-range: 198.18.0.1/16
  nameserver:
    - https://example.invalid/dns-query
  fallback:
    - tls://1.1.1.1:853
  fallback-filter:
    geoip: true
    geoip-code: CN

上記のDNSアドレスは記述形式を示すための例であり、実際には利用環境から到達でき、信頼できるアップストリームを設定します。DoHやDoTのサーバーをドメイン名で指定する場合は、default-nameserver に直接到達できるIPアドレスを用意し、起動時の名前解決が循環しないようにします。設定変更後はDNSキャッシュをクリアし、Clashを再起動してから再テストします。

TUNを使っている場合の確認ポイント

ブラウザではなくデスクトップアプリ、Electronアプリ、独自のネットワーク処理を使うアプリでChatGPTを利用している場合、システムプロキシだけでは通信を取り込めないことがあります。システムプロキシはHTTPやHTTPSの設定を参照するアプリに有効ですが、アプリが独自の接続方式を使う場合や、UDP・DNSを直接送る場合は対象外です。端末全体を扱う必要があるときは、mihomoのTUNモードを検討します。

TUNを有効にするには、クライアントの設定画面で「TUN Mode」「Service Mode」「VPN」などの項目を探します。Windowsでは管理者権限やサービスモードのインストール、macOSではネットワーク拡張やヘルパーの許可、AndroidではVPN接続の許可が必要になることがあります。スイッチをオンにしただけで完了とは限らず、OS側に仮想インターフェースが作成され、ClashのログにDNSハイジャックやルート設定が表示されることまで確認します。

tun:
  enable: true
  stack: mixed
  auto-route: true
  auto-detect-interface: true
  dns-hijack:
    - any:53
    - tcp://any:53

auto-route は端末のルートをTUNへ向ける設定、auto-detect-interface は実際の出口インターフェースを自動選択する設定です。dns-hijack は端末が送信するDNS要求をClashへ引き受けさせるための項目です。すでに別のVPN、仮想ネットワーク、広告ブロッカー、セキュリティソフトがDNSやルートを管理している場合は競合しやすいため、テスト時は他のトンネルを一時停止します。

TUNを有効にしても全通信が自動的に正常になるわけではない

TUNは通信をClashへ取り込む仕組みであり、取り込んだ後のルール判定やDNS設定を置き換えるものではありません。TUNをオンにした後も、ログで対象ドメインが正しい策略グループへ入り、DNS問い合わせがClashのDNSモジュールに記録されていることを確認してください。

ルール以外に確認する接続環境とノード

ルールとDNSを修正してもタイムアウトが続く場合は、ノードとネットワーク環境を切り分けます。まず同じノードで別の海外サイトを開き、複数のサイトが失敗するかを確認します。ChatGPTだけが失敗するなら対象サービスとの経路や認証通信に絞り、複数サイトが失敗するならノードの混雑、期限切れ、サーバー側の停止を疑います。

  • ノードを1つだけで判断しない。同じ地域の別ノード、別グループのノードを試し、特定ノードだけで失敗するかを比較します。
  • システム時刻を確認する。時刻が大きくずれていると、TLS証明書の検証や認証セッションで失敗することがあります。OSの自動時刻設定を有効にします。
  • IPv6を切り分ける。IPv6だけがClashの経路を通らない環境では、ブラウザがAAAAレコードを優先して接続に失敗することがあります。TUNのIPv6設定とルールを確認し、検証目的で一時的にIPv6を無効化して結果を比較します。
  • ブラウザ拡張を停止する。別のVPN、プロキシ切り替え拡張、広告ブロッカー、セキュアDNS拡張が接続を変更していないか確認します。
  • サブスクリプションを更新する。ノード情報やルールプロバイダーが古い場合、接続先の変更に追従できません。更新後はプロファイルを再読み込みします。

ブラウザのセキュアDNSが有効な場合、ブラウザ自身がClashのDNS設定とは別のDoH経路を使うことがあります。TUNで全通信を管理する構成では、ブラウザのセキュアDNSを一時的に無効にして挙動を比較すると、DNS経路の競合を判定しやすくなります。検証が終わったら、使用するDNS経路を1つに決め、Clashとブラウザの設定が矛盾しないように戻します。

設定を見直して再テストする

ChatGPTのタイムアウトは、ノードを交換するだけでは解決しないことがあります。ルールログで実際の判定先を確認し、DNSの経路を整理し、必要な場合だけTUNで端末全体を取り込みます。クライアントの機能やmihomoカーネルの対応状況を確認してから設定を変更すると、原因を再現しやすくなります。

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

通信振り分けを行うには、まずクライアントが通信を引き継ぐ必要があります。ダウンロードセンターでお使いのプラットフォームのクライアントを選び、チュートリアルに戻ってシステムプロキシまたは TUN の引き継ぎを完了させてください。

Clash をダウンロード