Claude Codeを起動できても、ターミナルからの通信にプロキシが使われていないと、接続エラーやタイムアウトが発生することがあります。v2rayNのローカル待ち受けポートを確認し、HTTPプロキシを明示した通信テスト、環境変数の設定、ルーティングの確認を順番に行う方法を解説します。ポート番号は環境によって異なるため、記事中の例をそのまま使うのではなく、実際の設定と照らし合わせてください。
1. システムプロキシだけではターミナルに適用されない
v2rayNの「システムプロキシ」は、OSのプロキシ設定を利用するアプリに接続先を知らせる機能です。しかし、ターミナルのコマンドや開発ツールが、その設定を必ず引き継ぐわけではありません。Claude Codeをコマンドラインから起動して接続に失敗する場合、まずターミナルのプロセスにプロキシ情報が渡っているか確認しましょう。
通信経路は大きく分けて、Claude Codeがローカルのプロキシに接続する段階と、v2rayNのコアがリモートへの経路を選択する段階があります。前者で失敗しているなら、環境変数やポートが主な確認対象です。ローカルプロキシへの接続が成功しても、後者のルーティングで直接接続が選ばれたり、ノードへの接続に失敗したりする可能性は残ります。
- ブラウザーは使えるがClaude Codeは失敗:ターミナルがOSのシステムプロキシを参照していない可能性があります。
- プロキシへの接続が拒否される:v2rayNが停止している、または指定したローカルポートが違う可能性があります。
- プロキシには接続するが応答がない:ルーティング、ノード、DNS、リモートへの通信を確認します。
2. v2rayNのローカル待ち受けポートを確認する
最初にv2rayNを起動し、ノードを選択してコアが稼働していることを確認します。続いて、設定画面でローカルのHTTPまたは混合プロキシのポートを確認してください。v2rayNのバージョンや設定によってポート番号は異なります。ここでは説明用に127.0.0.1:10808を例として使いますが、実際の番号は必ず自分の画面に表示された値に置き換えます。
HTTPプロキシの例
- アドレス
- 127.0.0.1
- ポート
- 10808(例)
- URL形式
http://127.0.0.1:10808
HTTPまたはHTTP接続に対応する混合待ち受けを確認してから指定します。
確認する項目
- コア
- 起動中か
- 待ち受け
- HTTP対応か
- ポート
- 実際の設定値か
SOCKS専用ポートをHTTPプロキシとして指定すると、接続できません。
画面の場所や項目名はバージョンにより異なるため、「設定」や「パラメーター設定」内のポート関連項目を探し、コアが使用する待ち受け設定と照合します。複数のローカルポートがある場合は、ポート番号だけでなくプロトコルも確認してください。別のアプリが同じポートを使っている場合や、待ち受けアドレスが127.0.0.1以外の場合も、テスト結果に影響することがあります。
3. curlでローカルプロキシと経路をテストする
Claude Codeの設定を変更する前に、ターミナルからプロキシを明示したリクエストを送り、v2rayNの待ち受けが応答するか切り分けます。次の例はWindows PowerShell用です。10808は実際のHTTP対応ポートに置き換えてください。テスト先は例示用ドメインです。実際に確認したいHTTPS接続先がある場合は、そのURLに変更します。
curl.exe -v --noproxy "" --proxy http://127.0.0.1:10808 --connect-timeout 5 --max-time 15 https://example.com/ -o NUL
macOSまたはLinuxでは、同じ形式でcurlを使い、出力先を/dev/nullにします。--noproxy ""は、このテストでプロキシ除外設定を空にする指定です。詳細出力にローカルアドレスへの接続やHTTPSのCONNECT処理が見えるか確認してください。HTTPステータスが200以外でも、接続先から応答が返っていれば、ローカル待ち受けの確認には役立ちます。
-
コアを起動
v2rayNで使用するノードを選び、コアが起動していることを確認します。起動エラーがある場合は、まずそのエラーを解消します。
-
ポートを照合
設定画面でHTTP対応の待ち受けポートを確認し、テストコマンドのポート番号を同じ値にします。
-
curlで確認
上のコマンドを実行し、プロキシへの接続拒否、タイムアウト、接続先からの応答のどれに当たるかを記録します。
-
一項目ずつ修正
接続拒否なら待ち受けとポートを、待ち受け後に失敗するならルーティングやノードを優先して確認します。
ローカルポートへの接続が拒否される場合は、Claude Codeの環境変数を変えるより先に、v2rayNのコアが起動しているか、HTTP対応の待ち受けが有効かを確認します。curlがプロキシ経由で接続先から応答を得た場合は、同じURLとポートを使って次の環境変数テストへ進みましょう。
4. 起動するターミナルにプロキシ環境変数を設定する
HTTP対応のローカル待ち受けを確認できたら、Claude Codeを起動するターミナルでHTTP_PROXYとHTTPS_PROXYを設定します。HTTPSの接続先でも、クライアントからHTTPプロキシに接続し、CONNECT方式でトンネルを確立する構成は一般的です。大文字と小文字の環境変数をどちらとして読むかは、ツールや実行環境によって異なることがあるため、必要に応じて両方を設定します。
# Windows PowerShell:現在のターミナルと、その子プロセスに適用
$env:HTTP_PROXY = "http://127.0.0.1:10808"
$env:HTTPS_PROXY = "http://127.0.0.1:10808"
$env:http_proxy = "http://127.0.0.1:10808"
$env:https_proxy = "http://127.0.0.1:10808"
# 設定を確認
Get-ChildItem Env:*proxy*
# 同じターミナルから起動
claude
この設定は現在のPowerShellプロセスと、そこから起動した子プロセスに適用されます。設定後に別のターミナルを開くと引き継がれないため、Claude Codeは設定したターミナルから起動してください。macOSやLinuxでは、たとえばexport HTTPS_PROXY=http://127.0.0.1:10808のようにシェルで設定してから、同じシェルでコマンドを実行します。利用するシェルやツールに応じて、HTTP_PROXYも設定してください。
ALL_PROXYはすべての通信を必ず捕捉する共通スイッチではありません。アプリがその変数に対応していることを確認できない場合、これだけに頼らず、まず一般的なHTTP・HTTPS向けの変数とHTTP対応ポートを使って検証します。また、NO_PROXYやno_proxyに対象ドメインが含まれていると、プロキシを通らないことがあります。切り分け中は値を確認し、意図しない除外設定がないか調べましょう。
結論:環境変数はClaude Codeを起動する前に設定
起動済みのプロセスは、後からターミナルに設定した環境変数を自動では受け取りません。いったん終了し、変数を設定した同じターミナルから再起動して、結果を比較してください。
5. curlは通るのにClaude Codeが失敗する場合
curlでは接続できるのにClaude Codeだけ失敗するときは、プロキシ変数が起動プロセスに引き継がれているかを確認します。設定したターミナルでGet-ChildItem Env:*proxy*を実行し、値とポート番号を見直してください。Claude Codeを別のターミナル、IDEの統合端末、タスクランナーから起動している場合、PowerShellで設定した値がその起動元に渡らないことがあります。問題の再現時は、起動方法を一つにそろえます。
環境変数とポートが正しくても、v2rayNのルーティングが対象通信を直接接続に振り分けている可能性があります。通常のプロキシ用アウトバウンドが選ばれるルールになっているか、現在のルーティングモード、対象ドメインに一致するルール、ルールの優先順位を確認してください。特定の接続先だけ失敗する場合は、広範囲なルールを追加する前に、そのドメインに一致するルールがないか調べます。
ブラウザーは使えるのにClaude Codeが失敗する?
ブラウザーと端末は別のプロキシ設定を使う場合があります。Claude Codeを起動するターミナルで環境変数を確認し、同じウィンドウから再起動します。
curlでconnection refusedと表示される?
v2rayNのコア状態、HTTP対応の待ち受け、ポート番号を確認します。SOCKS専用ポートをHTTP形式で指定していないかも見直してください。
curlは成功するのに対象の通信だけ失敗する?
ルーティングルール、除外設定、対象接続のエラーログを確認し、どの通信段階で失敗するかを切り分けます。
ログを調べるときは、失敗した時刻と接続先を記録し、同じリクエストに対応する行を確認します。アクセス記録があれば、ローカルの接続がコアまで届いたか、どのアウトバウンドが選ばれたかを判断する手がかりになります。エラーがノードの接続先を示すのか、対象サービスを示すのかも区別してください。ログを共有する場合は、認証情報、UUID、トークン、非公開のアドレスを削除します。
6. 設定を戻す方法と安全上の注意
テスト用に設定した環境変数は、必要がなくなったら現在のターミナルから削除できます。PowerShellではRemove-Item Env:HTTP_PROXY、Remove-Item Env:HTTPS_PROXYを実行し、小文字の変数も設定していた場合は同様に削除します。シェルの設定ファイルに値を追記した場合は、その行も確認してください。設定を一時的に比較するだけなら、まず現在のターミナル内で試し、システム全体に恒久設定するのは必要性を確認してからにします。
プロキシ変数に認証情報を含めたり、サブスクリプションURLや認証情報をコマンド履歴に残したりしないでください。今回の例にある127.0.0.1:10808はローカル接続の説明用です。LAN内の別の機器から接続を受け付ける設定へ変更する場合は、意図しない端末にプロキシを公開しないよう、待ち受けアドレスとファイアウォールも確認しましょう。
- ローカル待ち受けを確認:実際のポートとプロキシ形式を使い、curlで明示的にテストします。
- 端末の環境を確認:Claude Codeを起動する同じシェルで、HTTP・HTTPS向けの変数と除外設定を確認します。
- 経路を確認:コアのログとルーティング設定から、対象通信がどのアウトバウンドを使ったかを調べます。
- 一度に変更する項目を絞る:ポート、環境変数、ルールを同時に変えず、テスト結果を比較します。