中国でClaude Codeを使う方法|Clash Verge接続設定ガイド
Claude Codeはコマンドラインでコード作成や修正を進められる開発者向けツールです。本記事ではClash Vergeを組み合わせる基本手順と、接続トラブルを切り分けるポイントを初心者向けにまとめます。
Claude CodeとClash Vergeの役割を分けて理解する
Claude Codeは、ターミナルからコードの作成、修正、説明、テスト補助などを進める開発者向けのコマンドラインツールです。ブラウザでチャット画面を開くタイプのサービスとは異なり、実行中のターミナルプロセスがネットワークへ接続し、認証情報を使って必要なAPI通信を行います。そのため、ブラウザだけプロキシに接続できていても、Claude Codeの通信が同じ経路を通るとは限りません。
Clash Vergeは、ノード、ルール、DNS、システムプロキシ、TUNなどを管理するクライアントです。Claude CodeそのものをClash Vergeに「インポート」するのではなく、Claude Codeが利用するターミナルの通信をClashの混合ポート、またはTUN経由で送信する、という関係になります。まずこの役割を分けて考えると、「ブラウザは使えるのにコマンドが失敗する」「Clashを起動しているのに接続できない」といった問題を整理しやすくなります。
中国本土のネットワークから利用する場合は、サービスの提供地域、アカウント、利用規約、組織のセキュリティポリシーを確認したうえで、利用が認められている環境だけで設定してください。Clashの接続設定はネットワーク経路を整えるためのものであり、利用地域やアカウントに関する制限を変更するものではありません。
| 項目 | 担当するもの | 確認する場所 |
|---|---|---|
| Claude Code | コード操作、認証、APIリクエストの生成 | ターミナルの出力、環境変数、設定ファイル |
| Clash Verge | ノード選択、ルール分流、プロキシポートの提供 | Profiles、Proxies、Settings、Logs |
| シェル環境 | ターミナルアプリからプロキシ変数を渡す | HTTP_PROXY、HTTPS_PROXY、ALL_PROXY |
| OSのネットワーク機能 | システム全体の通信やTUNインターフェースを処理 | システムプロキシ、VPN、TUNの状態 |
事前確認:ポート、ノード、接続方式
設定を始める前に、Clash Vergeで有効なプロファイルを読み込み、少なくとも1つのノードが正常に選択できる状態にします。プロファイルを導入しただけでは、必ずしも通信に使用されるとは限りません。Profiles画面で対象プロファイルを有効化し、Proxies画面で実際のプロキシグループにノードを割り当ててください。選択状態が空欄、またはUnavailableになっている場合、Claude Codeの設定以前に出口がありません。
次に、Clash VergeのSettingsで混合ポートの番号を確認します。一般的な例として 127.0.0.1:7897 が使われますが、クライアントや既存ソフトとの競合を避けるため、実際の画面に表示された番号を優先してください。HTTPプロキシとして使う場合は http://127.0.0.1:ポート番号、SOCKSプロキシとして使う場合は socks5://127.0.0.1:ポート番号 の形式になります。
初心者には、最初はターミナルのプロキシ環境変数を使う方法をおすすめします。対象をClaude Codeを起動するシェルに限定でき、他のアプリの挙動を変えずに済むからです。複数のCLIツールを同じ経路にしたい場合や、どのアプリが接続しているか分からない場合は、Clash VergeのTUNモードを検討します。
- 環境変数方式——設定範囲が狭く、切り替えが簡単。ターミナルごとに有効化する必要があります。
- システムプロキシ方式——OSのプロキシ設定に従うアプリをまとめて制御できます。ただし、CLIや独自のネットワーク処理が必ず従うとは限りません。
- TUN方式——仮想ネットワークインターフェースで端末全体を取り込みます。権限が必要で、他のVPNや仮想ネットワークとの競合には注意が必要です。
ポート番号を推測しない
チュートリアルに書かれたポート番号をそのまま使うと、Clash Vergeの設定と一致せず接続できないことがあります。必ずClash Vergeの現在のMixed Port、HTTP Port、またはSOCKS Portを確認し、同じ値をターミナルに設定してください。
実践手順:ターミナルからClaude CodeをClash経由にする
ここでは、Clash Vergeの混合ポートを使い、現在開いているターミナルセッションだけにプロキシを設定します。以下の 7897 は例です。自分のClash Vergeに表示されているポートへ置き換えてください。認証トークンやAPIキーはコマンドに直接書かず、サービスの公式手順に従って安全に登録します。
- Clash Vergeを起動し、使用するプロファイルを有効化します。Proxies画面でノードまたはプロキシグループを選び、ブラウザなどの通常の通信が意図した経路を通ることを確認します。
- Clash Vergeの設定画面でMixed Portを確認します。例として
7897が表示されている場合、HTTPとSOCKSの両方を受け付けるローカルポートとして利用できます。 - ターミナルで、まず一時的な環境変数を設定します。macOS、Linux、または対応するUnix系シェルでは次のように入力します。
export HTTP_PROXY=http://127.0.0.1:7897
export HTTPS_PROXY=http://127.0.0.1:7897
export ALL_PROXY=socks5://127.0.0.1:7897
Claude Codeや関連するCLIがHTTPプロキシ変数だけを参照する場合は、HTTP_PROXYとHTTPS_PROXYが重要です。低レベルの通信ライブラリや別のコマンドがSOCKSを参照する場合に備えて、ALL_PROXYも設定できます。ただし、アプリケーションによって変数名の大文字・小文字の扱いが異なるため、接続できないときは大文字と小文字の両方を試すより、まず使用しているツールの仕様を確認してください。
Windows PowerShellでは、同じセッションに次のように設定します。
$env:HTTP_PROXY="http://127.0.0.1:7897"
$env:HTTPS_PROXY="http://127.0.0.1:7897"
$env:ALL_PROXY="socks5://127.0.0.1:7897"
- 設定後、環境変数が正しく入ったことを確認します。macOSやLinuxでは
env | grep -i proxy、PowerShellではGet-ChildItem Env: | Where-Object Name -match "PROXY"を実行します。 - Claude Codeを起動し、簡単な確認だけを行います。大きなプロジェクト全体をすぐに読み込ませるのではなく、現在の作業ディレクトリ、短いコード説明、軽い修正依頼などで通信経路を検証します。
- Clash VergeのLogsを開き、実行時刻に新しい接続が記録されているか確認します。接続先のホスト名、使用されたポリシー、DIRECTかプロキシかを順に見ます。
毎回手動で設定するのが面倒な場合は、シェルの設定ファイルに関数や別名を追加できます。ただし、全てのターミナル通信を常時プロキシにする必要がないなら、専用スクリプトやプロジェクト単位の起動コマンドに限定した方が安全です。プロキシが停止している状態で変数だけ残ると、通常のCLIまで接続エラーになるため、作業終了時に解除できるようにしておきましょう。
unset HTTP_PROXY HTTPS_PROXY ALL_PROXY
Windows PowerShellで一時設定を解除する場合は、次のコマンドを使います。
Remove-Item Env:HTTP_PROXY, Env:HTTPS_PROXY, Env:ALL_PROXY
TUNモードとルール分流を使う場合の調整
環境変数方式で接続が安定しない場合、Clash VergeのTUNモードを有効にすると、ターミナルプロセスが明示的なプロキシ変数を参照しないケースでも端末側の通信を取り込める可能性があります。TUNは通常のシステムプロキシとは異なり、仮想ネットワークインターフェースを通じてTCPやUDPの接続を処理します。Windowsではサービスモードや管理者権限、macOSではネットワーク拡張の許可が必要になることがあります。
ただし、TUNを有効にしただけで全通信が適切なノードへ送られるわけではありません。Clashのルールは上から順に評価され、最初に一致したルールで処理が決まります。Claude Codeが接続するサービスのホスト名をプロキシへ送りたい場合、そのドメインが誤って DIRECT に分類されていないか、最後の MATCH ルールが意図したプロキシグループを指しているかを確認します。
分流設定では、開発環境の内部サービスやローカルネットワークを無条件にプロキシへ送らないことも大切です。社内Gitサーバー、ローカルのコンテナ、ルーター管理画面などは、組織のネットワーク設計に合わせて DIRECT または専用のルールへ振り分けます。反対に、必要な外部サービスを短いキーワードだけで判定すると、無関係なドメインまで同じポリシーに入ることがあるため、可能な限り正確な DOMAIN や DOMAIN-SUFFIX を使います。
rules:
- DOMAIN-SUFFIX,example.invalid,PROXY
- IP-CIDR,192.168.0.0/16,DIRECT,no-resolve
- MATCH,PROXY
上のドメインは説明用の無効な例です。実際の設定では、Clash Vergeのログに表示される接続先ホスト名を確認し、サービスの公式ドキュメントに記載された必要なドメインだけを登録してください。認証、更新、モデル関連など複数の通信先が使われる場合があるため、1つのホストだけを許可すれば十分とは限りません。
DNSとTUNを同時に確認する
ホスト名が解決できない場合は、ルールだけでなくDNSも確認します。Clash VergeのDNSモジュールが無効、システムDNSへ直接問い合わせている、またはDNSルールが意図せずDIRECTになっていると、プロキシノードが正常でも接続先を見つけられません。TUN、dns-hijack、enhanced-modeの組み合わせは、使用中のmihomoカーネルとクライアントの説明に合わせて設定してください。
接続できないときの切り分け
エラーが出たときに、いきなりノードを何度も変更するのは効率的ではありません。まず「Clash Vergeへ接続が届いているか」「Clashがどの出口を選んだか」「Claude Code側で認証やTLSが失敗していないか」を分けて確認します。次の表を使うと、原因の範囲を早く絞れます。
| 症状 | 考えられる原因 | 確認する項目 |
|---|---|---|
| Clashのログに何も出ない | 環境変数が未設定、ポート番号が違う、TUNが無効 | 変数の値、ClashのMixed Port、TUNの権限 |
| 接続先がDIRECTになる | ルールの順序やプロキシグループの指定ミス | 該当ホストのルール、最後のMATCH、現在のプロファイル |
| 名前解決エラーになる | DNS経路、dns-hijack、DNS応答の失敗 | Clash DNSログ、TUN設定、DNSサーバーの応答 |
| TLSやタイムアウトで失敗する | ノード品質、経路の遅延、時刻ずれ、MTU問題 | 別ノード、システム時刻、Clashログのエラー内容 |
| 認証エラーになる | 認証情報の期限切れ、環境変数の名前違い、権限不足 | 公式手順、認証状態、キーを出力していないか |
最初のテストでは、Clash Vergeのログレベルを一時的に上げ、Claude Codeを起動した時刻とログを照合します。ログが出ていないなら、ノードやアカウントを調べる前に、ターミナルが本当にClashのポートへ接続しているかを確認します。ログが出ているのに失敗する場合は、接続先のポリシー、DNS応答、TLSエラー、リモート側のHTTPステータスを順に見ます。
プロキシ変数が残っていると、Clashを終了した後もコマンドがローカルポートへ接続し続けます。別のVPN、別のローカルプロキシ、開発用のコンテナネットワークも同時に動作している場合は、一度停止してから再テストしてください。特にポート番号が同じでも、実際に待ち受けているプロセスがClashとは限りません。
接続が途中で切れる場合は、ノードの切り替えだけでなく、Clash Vergeの更新状態、プロファイルの期限、システム時刻、Wi-Fiと有線の差も確認します。ストリーミングのような長時間接続と、短いAPIリクエストでは必要な安定性が異なります。短いリクエストは成功するのに長い処理だけ切れる場合、ノードのアイドルタイムアウト、回線の瞬断、MTU、TUNのstack設定などを疑います。
認証情報をログや設定例に貼らない
環境変数の一覧、Clashのログ、シェル履歴には、トークンやAPIキーが含まれることがあります。問い合わせや画面共有の前に、認証情報、サブスクリプションURL、メールアドレス、内部ホスト名を必ず伏せてください。漏洩した可能性がある場合は、サービス側で認証情報を失効・再発行します。
安定運用のための最終チェック
設定が完了したら、毎回すべてを確認する必要はありません。ただし、Clash Vergeやプロファイルを更新した後、ネットワークを変更した後、Claude Codeの認証方式を変更した後は、最小限の再確認を行うとトラブルを防げます。
- Clash Vergeで正しいプロファイルが有効になっている。
- プロキシグループに利用可能なノードが選択されている。
- ターミナルのプロキシポートがClash Vergeの現在のポートと一致している。
- Claude Code起動時刻に対応する接続ログがClash Vergeに残っている。
- 必要な外部ホストがDIRECTではなく意図したポリシーへ送られている。
- 作業終了後、不要なプロキシ環境変数を解除できる。
- APIキーやサブスクリプションリンクを共有画面、履歴、リポジトリに残していない。
最初は環境変数方式で対象を限定し、必要な通信が確認できた段階でTUNや細かなルール分流へ進むのが安全です。TUNを先に有効にして複数のVPNやDNS設定を重ねると、どの層で失敗しているのか分かりにくくなります。Clash Vergeのログとターミナルのエラーを同じ時刻で照合することが、最も再現性の高い切り分け方法です。
Clash Verge本体やmihomoカーネルの更新で設定項目の名称が変わる場合もあるため、古い画面名をそのまま探すのではなく、現在のクライアントに表示されるMixed Port、System Proxy、TUN、Logsの項目を基準にしてください。ダウンロードと対応クライアントの確認はダウンロードを確認、基本的な導入手順は設定手順を見るから確認できます。
Clash クライアントをダウンロード
通信振り分けを行うには、まずクライアントが通信を引き継ぐ必要があります。ダウンロードセンターでお使いのプラットフォームのクライアントを選び、チュートリアルに戻ってシステムプロキシまたは TUN の引き継ぎを完了させてください。