まず「タイムアウト」が発生した層を切り分ける
ChatGPTの画面が読み込まれない、応答生成の途中で止まる、または「接続がタイムアウトしました」と表示される場合、原因は1つとは限りません。Clashでは、ブラウザーからローカルポートへ接続する段階、ルールで使用経路を決める段階、DNSで接続先を解決する段階、選択したノードから外部サービスへ接続する段階が順番に実行されます。どこで止まったかによって、確認する画面と変更すべき設定が変わります。
| 症状 | 疑わしい層 | 最初に確認する場所 |
|---|---|---|
| すべてのサイトが開かない | Clashカーネル、ローカルポート、システムプロキシ | 接続状態、ログ、プロキシ設定 |
| ChatGPTだけタイムアウトする | ルール、ノード、DNS、WebSocketまたは長時間接続 | ルール判定と現在のプロキシグループ |
| トップページは開くが応答中に止まる | ノードのパケットロス、接続維持、ストリーミング通信 | 別ノードの遅延とカーネルログ |
| ブラウザーは開くがデスクトップアプリは失敗する | アプリごとのプロキシ方式、TUN、証明書やDNS | システムプロキシとTUNの状態 |
| 数分ごとに接続が切れる | ノードの安定性、UDP経路、DNSキャッシュ | 接続履歴、プロキシの切り替え履歴 |
最初にClashクライアントを開き、カーネルが起動しているか確認してください。FlClash、Clash Verge Rev、Clash for Windowsなどでは、画面が表示されていてもカーネルが停止していることがあります。システムプロキシが有効なのに、実際の混合ポートが停止していると、ブラウザーはすべての通信で接続エラーになります。一般的な混合ポートは127.0.0.1:7890ですが、必ず現在の設定画面に表示されたポートを使ってください。
プロキシグループとノードの状態を確認する
ChatGPTだけが接続できない場合、最初に確認したいのは現在選択されているプロキシグループです。設定ファイルには「Proxy」「节点选择」「自動選択」などのグループが定義されていることが多く、ルールはこのグループ名を参照します。グループの中に停止したノード、期限切れのノード、ChatGPTとの相性が悪い経路しか残っていなければ、ブラウザーを再起動しても改善しません。
遅延テストの数字だけで判断しない
クライアントのプロキシ画面で、現在のグループに含まれるノードを2つ以上テストします。遅延が80 msと表示されるノードでも、HTTPS接続の確立や長時間のレスポンス転送が安定しているとは限りません。ChatGPTの利用では、ページの表示だけでなく、ログイン、会話履歴の読み込み、応答のストリーミング、ファイル送信など複数の通信が発生します。短いURLへの遅延測定が成功しても、実際の応答中に切断されることがあります。
- 現在のノードを別の同一グループ内ノードへ手動で切り替える。
- 切り替え後、ChatGPTをハードリロードして新しい接続を作る。
- トップページ、既存会話の表示、新規メッセージ送信を個別に確認する。
- 1つのノードだけで失敗するなら、そのノードを一時的に使用対象から外す。
- 複数ノードで同じ時間帯に失敗するなら、ルールまたはDNSを調べる。
url-testやfallbackのグループを使用している場合も、測定URLの成功だけで自動選択が正しいとは限りません。測定先が正常でも、ChatGPTへの経路でパケットロスや接続リセットが発生する場合があります。トラブル中は自動選択を一時的に停止し、安定しているノードを手動で固定すると、原因を切り分けやすくなります。
カーネルログで拒否とタイムアウトを区別する
ログ画面では、ChatGPTを再読み込みした時刻の前後を確認します。dial tcp ... i/o timeoutは接続先への接続または転送が時間内に完了しなかったことを示します。connection reset by peerは相手側または経路上で接続が切断された可能性があります。一方、no rule matched、unsupported、dns errorなどは、ノード停止とは異なる問題です。
ChatGPT向けルールと動作モードを見直す
ルールモードでは、設定ファイルのrulesが上から順に評価され、最初に一致したルールのポリシーが使われます。ChatGPT関連のドメインをプロキシへ送るルールがあっても、その前に広すぎるDOMAIN-SUFFIX、GEOSITE、GEOIP、またはMATCH,DIRECTに近いルールがあると、意図したグループへ到達しません。
mode: rule
mixed-port: 7890
rules:
- DOMAIN-SUFFIX,openai.com,ChatGPT
- DOMAIN-SUFFIX,chatgpt.com,ChatGPT
- DOMAIN-SUFFIX,oaistatic.com,ChatGPT
- DOMAIN-SUFFIX,oaiusercontent.com,ChatGPT
- MATCH,PROXY
上の例はルールの考え方を示す最小例です。実際に必要なドメインはサービスの構成や時期によって変わるため、特定の一覧を永久に固定しないでください。ChatGPTの画面が開いても、静的ファイル、認証、会話API、ファイル配信などが異なるホスト名を使うことがあります。ブラウザーの開発者ツールを無理に使う前に、Clashの接続一覧で失敗しているホスト名と適用ルールを確認するほうが安全です。
動かして確認する手順
- Clashクライアントで現在の設定を複製し、バックアップとして保存します。
- プロキシグループ画面で、ChatGPT用グループを安定したノードに固定します。
- 接続ログを消去し、ブラウザーでChatGPTを一度だけ再読み込みします。
- 接続一覧から、該当ドメインの通信が
DIRECTではなく想定したグループへ送られているか確認します。 - 必要に応じてChatGPT用のルールを広いルールより上へ移動し、設定を再読み込みします。
- ページ表示だけでなく、短いメッセージを送信し、応答が最後まで届くか確認します。
ルールを追加しても接続一覧に表示されない場合は、ブラウザーが古い接続を再利用している可能性があります。タブを閉じて新しいウィンドウで開く、ブラウザーを完全終了する、またはクライアントの接続を閉じてから再試行してください。ルール設定を編集する場合、YAMLのインデントにはタブを使わず、スペースを使用します。グループ名に日本語や記号を使っている場合は、ルール側の名前と完全に一致しているかも確認してください。
一時的な確認としてmode: globalを使う方法もあります。グローバルモードでプロキシグループを手動選択し、ChatGPTが動作するなら、ノードそのものよりルール判定に問題がある可能性が高いでしょう。ただし、グローバルモードはすべての通信を同じ経路へ送るため、常用設定として固定するのではなく、切り分け後にruleへ戻してください。
DNSとTUNが原因の場合の確認ポイント
DNSの問題では、ノードは正常でもChatGPT関連ドメインを誤ったアドレスへ解決したり、応答が遅すぎたりします。特にシステムDNS、ブラウザーのSecure DNS、ClashのDNS、TUNのDNSハイジャックが同時に動作すると、どのDNS応答を使っているか分かりにくくなります。DNSを変更する前に、システムプロキシだけで再現するか、TUNを一時的に無効にして差を比較してください。
dns:
enable: true
ipv6: false
enhanced-mode: fake-ip
nameserver:
- https://1.1.1.1/dns-query
- https://8.8.8.8/dns-query
fallback:
- https://dns.google/dns-query
この設定は構成例であり、すべてのネットワークで最適とは限りません。使用中のカーネルが対応していないフィールドを追加すると、設定の読み込み自体に失敗します。既存の購読設定にDNSが定義されている場合は、まずその内容をバックアップし、nameserver、fallback、nameserver-policyの優先関係を確認してください。IPv6経路だけで失敗する環境では、ipv6: falseが改善に役立つ場合がありますが、IPv6を必要とするネットワークでは逆効果になることもあります。
TUNを使うときの注意
TUNモードは、システムプロキシを参照しないアプリケーションやコマンドラインの通信も取り込める一方、ルーティングとDNSを広い範囲で変更します。TUNとシステムプロキシを同時に有効にした状態で、ブラウザーに独自のプロキシ設定を加えると、通信が二重に転送されることがあります。ChatGPTの確認では、まずシステムプロキシのみ、次にTUNのみという順番で試すと、経路の重複を避けられます。
- TUNの自動ルートが有効か、仮想インターフェースが正常に作成されているか確認する。
- 管理者権限、VPN権限、ネットワーク拡張の許可が取り消されていないか確認する。
- ブラウザー独自のプロキシ設定を解除し、Clash側の経路に統一する。
- DNSハイジャックを有効にした直後だけ失敗するなら、DNS設定と除外リストを調べる。
再発を防ぐための安定設定と最終確認
原因を解消した後は、設定を必要以上に複雑にしないことが重要です。ChatGPT用のルールを1つのプロキシグループへ集約し、常用ノードを手動選択できる状態にしておくと、障害時に確認しやすくなります。自動選択を使う場合も、異常なノードを自動的に除外できるヘルスチェックの間隔を確認し、短時間に何度もノードが切り替わらないようにしてください。
| 確認項目 | 正常と判断する目安 | 異常時の対応 |
|---|---|---|
| カーネル | 起動済みで混合ポートが待ち受け中 | カーネルを再起動し、ポート競合を確認する |
| システムプロキシ | Clashの実ポートと一致している | 古いポートや別クライアントの設定を解除する |
| プロキシグループ | 選択ノードの接続テストと実通信が成功する | 別ノードへ切り替え、停止ノードを避ける |
| ルール | 接続一覧で想定したグループが表示される | 広いルールよりChatGPT関連ルールを上へ移動する |
| DNS | 名前解決が安定し、再読み込みで同じエラーにならない | DNS方式、IPv6、TUNのDNS処理を1項目ずつ確認する |
最終テストでは、ChatGPTのトップページ、ログイン状態、既存会話の読み込み、新規メッセージの送信、長めの応答の完了を順番に確認します。トップページだけ開いても、応答ストリーミングが途中で切れるなら、ノードの安定性や経路上の接続維持に問題が残っています。反対に、すべての通信がClashの接続一覧で成功し、ブラウザーだけが表示に失敗する場合は、拡張機能、サイトデータ、ブラウザー内蔵DNSを確認してください。
それでも改善しない場合は、失敗時刻、使用したノード、接続一覧のホスト名、カーネルログのエラー、システムプロキシかTUNかという情報をまとめます。サブスクリプションURLや認証トークンは共有せず、必要な部分だけを伏せて保存してください。Clashの基本画面と設定項目を確認したい場合は、クイックスタートも参照できます。