システムプロキシは、アプリのリクエストをv2rayNに渡すかどうかを決める設定です。ルーティングモードは、渡されたリクエストを直接接続するか、プロキシノード経由にするかを決めます。普段のブラウジングでは「システムプロキシを自動設定」と中国本土を除外するルールの組み合わせから始めるのが一般的です。開発ツールでは、個別にローカルプロキシを指定できます。この記事では、この2つの設定の違いとmacOSでの確認手順、ターミナルでの検証コマンド、終了後の設定復元方法を紹介します。
システムプロキシとグローバルルーティング:まず2つの設定を区別
v2rayNは、サブスクリプションやノード、コアの設定を管理するデスクトップクライアントです。サブスクリプションを追加してノードを選択しても、プロキシの出口が用意されただけで、すべてのアプリがその出口を使うとは限りません。ブラウザーのリクエストがまずローカルの待ち受けポートに渡されて初めて、コアがルーティングルールを適用できます。
macOSのシステムプロキシは、ネットワークサービスのプロキシ設定にプロキシのホストとポートを書き込む入口の設定です。システム設定に従うアプリは、この設定を使ってローカルプロキシに接続します。一方、独自のネットワークスタックやプロキシ設定を使うアプリ、明示的に直接接続するプログラムは、この設定に従わないことがあります。「グローバル」は別の階層の設定で、通常はプロキシコアに渡されたリクエストを、選択中のノードへ一律にルーティングすることを指します。Mac全体の通信を自動的に取り込む設定ではありません。
| 設定レイヤー | 解決すること | この設定だけでは保証されないこと |
|---|---|---|
| システムプロキシ | システム設定に従うアプリのリクエスト送信先 | すべてのプロセスやUDP通信を取り込めるとは限らない |
| グローバルルーティング | コアに渡された通常のリクエストをプロキシ経由にする | プロキシに接続していないアプリの通信先は変更できない |
| 中国本土を除外するルーティング | ドメインやIPなどのルールに基づいて直接接続とプロキシを振り分ける | 中国本土のすべてのサービスを正確に判定できるとは限らない |
| TUNモード | 仮想ネットワークインターフェースを使い、より多くのIP通信を取り込む | DNS、ルートの除外設定、権限設定の代わりにはならない |
v2rayNのシステムプロキシ3つの設定:自動設定・解除・変更しない
v2rayNのメイン画面下部のステータスバー、またはトレイメニューにあるシステムプロキシの項目で、現在の設定を確認します。デスクトップ版によって項目の場所や表記が多少異なる場合がありますが、一般的には「システムプロキシを自動設定」「システムプロキシを解除」「システムプロキシを変更しない」の3つです。操作するのはシステム設定であり、サブスクリプションの内容ではありません。
システムプロキシを自動設定
おすすめクライアントがローカルプロキシのアドレスをシステム設定に書き込みます。コアが起動していて、待ち受けアドレスとポートが有効であることが前提です。有効にした後も、直接接続とプロキシ経由を振り分けるには、適切なルーティングプリセットを選ぶ必要があります。
おすすめの用途:普段のブラウジング、システムプロキシに従うデスクトップアプリ
システムプロキシを解除
クライアントが管理するシステムプロキシ設定を解除します。ローカルコアの停止を意味するわけではなく、プロキシアドレスを手動で入力したツールの利用が止まる保証もありません。有効になっているTUNも別途対処が必要です。
おすすめの用途:通常のネットワーク設定に戻す、終了後の接続トラブルを調べる
システムプロキシを変更しない
システムプロキシの現在の状態を維持し、有効化も解除もしません。以前設定したプロキシアドレスが残っている場合、この設定に切り替えても自動的には削除されません。「直接接続モード」という意味でもありません。
おすすめの用途:管理対象のネットワーク設定がある場合、開発ツールだけに個別のプロキシを設定する場合
判断の目安:システムプロキシを無効にするには「解除」を選び、「変更しない」は選ばない
自動設定から「変更しない」に切り替えても、システムがローカルポートを参照したままなら、アプリは引き続きプロキシを使うことがあります。直接接続に戻すには、まずプロキシを解除してから、macOSのネットワーク設定で実際の状態を確認してください。
会社のネットワークでは、自動プロキシ設定スクリプトや固定プロキシがあらかじめ設定されていることがあります。変更する前に、元のアドレス、ポート、有効状態を記録してください。クライアントの設定を解除しても、会社が指定した設定に戻るとは限りません。管理対象のデバイスでは組織のネットワーク要件に従い、設定をそのまま上書きしないでください。
グローバルと中国本土を除外するルーティング:スイッチ名ではなくルールを確認
中国本土を除外するプリセットでは、通常、ローカルネットワークや中国本土の一部ドメイン・IPへの通信を直接接続し、それ以外をプロキシ経由にします。具体的な動作は、プリセット内のルール、優先順位、データベースによって異なります。Xrayのルーティングルールは通常、上から順に一致するものを探します。上位の明示的なルールが、後続の汎用ルールより優先される場合があります。
- グローバルルーティング:問題が振り分けルールにあるか、一時的に切り分けるときに役立ちます。グローバルでは接続でき、中国本土を除外すると失敗する場合は、クライアントを再インストールする前に、ドメインのマッチング、DNSの名前解決、直接接続の出口を確認しましょう。
- 中国本土を除外:中国本土の業務サービスとプロキシが必要なサイトを併用する場合に適しています。ルールデータに依存するため、中国本土のドメインが海外のコンテンツ配信アドレスを使っていると、ドメインルールとIPルールで判定が異なることがあります。
- ローカルネットワークへのアクセス:プリンター、ルーター、ローカル開発サーバーは、通常、明示的な直接接続が必要です。グローバルに切り替えた後も、ローカルネットワークの除外ルールが残っているか確認してください。モード名だけで判断することはできません。
- DNSの動作:マッチング前にドメインを名前解決するか、どのリゾルバーを使うかによって、IPルールの結果が変わります。「中国本土を除外」は、DNS障害やドメイン漏えいを自動で解決する機能ではありません。
geosite:cnはドメインの集合、geoip:cnはIPアドレスの集合を表します。geoip:privateはプライベートアドレス範囲によく使われます。これらは、どの画面にもそのまま入力できる汎用テキストではありません。グラフィカルなルーティングエディターとコアのネイティブJSONではフィールドの書式が異なるため、使用中のエディターの指定に従って入力してください。
2つの利用シーン別・設定の組み合わせ
日常業務とWebブラウジング
- システムプロキシを自動設定します。
- 中国本土を除外するルーティングを選び、ローカルネットワークが直接接続されるか確認します。
- 業務サイトとプロキシが必要なサイトをそれぞれ使って確認します。
- 社内サイトに問題がある場合は、まずドメインルールと会社のDNSを確認します。
開発・デバッグと個別コマンド
- まず既存のシステムプロキシを解除し、その後「変更しない」を選びます。
- コマンドのオプションまたはツールの設定でローカルプロキシを指定します。
- 同じURLに対して、直接接続とプロキシ経由の結果を比較します。
- サブスクリプションの認証情報を含むターミナル出力を公開の場に貼り付けないでください。
まず接続するアプリを決め、次にそのリクエストの出口を決めましょう。システムプロキシ、ルーティング、TUNを同時に切り替えるより、問題を切り分けやすくなります。
Macでの設定手順:待ち受けポートとシステム設定を確認
まずダウンロードページでチップに合ったv2rayNのインストーラーを選び、使い方ガイドに従ってサブスクリプションを追加し、グループを更新します。以下のポート番号は確認方法を説明するための例で、すべてのバージョンの標準値ではありません。現在のクライアントに表示されている待ち受け設定を確認してください。
- ノードとコアを確認する。有効なノードを選び、ログに設定エラーやポート競合がないか確認します。ノード側のリモートポートとローカルのインバウンドポートは別物です。ノードの443をシステムプロキシに入力しないでください。
- ローカルの待ち受けを確認する。「設定」→「パラメーター設定」で、ローカルの待ち受けポートとプロトコルの種類を確認します。画面上の項目の配置は使用中のビルドによって異なります。以下では、
127.0.0.1:10808がHTTPプロキシのリクエストを受け付ける想定です。実際のポートが異なる場合や、SOCKSのみをサポートする場合は、それに合わせてください。 - システムプロキシを有効にする。「システムプロキシを自動設定」を選び、次に中国本土を除外するルーティングを選択します。最初の動作確認では、切り分けを容易にするためTUNを併用しないでください。
- macOSの設定を確認する。「システム設定」→「ネットワーク」→接続中のネットワークサービス→「詳細」→「プロキシ」を開きます。Webプロキシ、安全なWebプロキシ、SOCKSプロキシの有効状態、サーバー、ポートを確認してください。クライアントのアイコンだけで判断しないようにしましょう。
- 接続先ごとに確認する。中国本土の業務サイト、プロキシが必要なサイト、ローカルネットワークのアドレスをそれぞれ開き、コアのログで選択されたアウトバウンドも確認します。プロキシ設定はネットワークサービスごとに異なるため、Wi-Fiと有線ネットワークを切り替えた後も再確認してください。
ターミナルで確認:システム設定・プロキシ接続・接続先へのアクセスを切り分ける
ターミナルのプログラムがmacOSのシステムプロキシを自動で読み取るとは限りません。ブラウザーでWebページを開けても、curlが失敗するだけではノードに問題があるとは判断できません。以下の3種類のコマンドで、システムの状態、プロキシを使わないアクセス、プロキシを明示したアクセスをそれぞれ確認できます。システムのネットワーク設定は変更されません。
# 現在のシステムプロキシ設定を確認
scutil --proxy
# プロキシ環境変数を無視し、同じアドレスに直接接続する
curl --noproxy '*' --connect-timeout 10 -I https://example.com
# 10808がHTTP対応のローカルプロキシポートだと仮定
curl --noproxy "" --proxy http://127.0.0.1:10808 --connect-timeout 10 -I https://example.com
# この待ち受けポートがSOCKSに対応している場合、SOCKS経由の接続を個別にテスト
curl --noproxy "" --proxy socks5h://127.0.0.1:10808 --connect-timeout 10 -I https://example.com
example.comは構文を示すためのサンプルドメインです。実際の切り分けでは、2つのアクセスコマンドに同じ確認対象のアドレスを指定してください。ここでの10は接続タイムアウトの秒数で、速度測定の結果ではありません。HTTPエラーが返っても接続自体は確立している場合があるため、応答元が接続先のサービスかプロキシかを引き続き確認してください。
- ローカルポートへの接続が拒否される:まずコアが起動しているか、ポートの指定が正しいかを確認します。最初からDNSを変更する必要はありません。
- プロキシを明示すると接続できるが、ブラウザーでは失敗する:システムプロキシのアドレス、ブラウザー独自のプロキシ設定、古い接続が残っていないかを確認します。
- HTTPでは失敗し、SOCKSでは成功する:インバウンドが対応しているプロトコルを確認してください。SOCKS専用ポートをHTTPポートとして使わないようにしましょう。
- グローバルでは成功し、中国本土を除外すると失敗する:ルーティングログでリクエストが選択したアウトバウンドを確認し、特に直接接続のルールとドメインの名前解決を調べます。
socks5hは、接続先のドメイン名をSOCKSプロキシ側で名前解決する指定です。ターミナルのローカルで先に名前解決する方法とは異なります。DNSの問題を絞り込むのに役立ちますが、一度成功しただけで、すべてのアプリが同じ名前解決方式を使っているとは判断できません。
よくある質問:終了後の設定、開発ツール、TUN
v2rayNを終了するとWebページがすべて開かなくなるのはなぜですか?
まず、システムプロキシが終了したローカルポートを参照したままになっていないか確認します。クライアントを再起動できる場合は、システムプロキシを解除してから終了してください。起動できない場合は、「システム設定」→「ネットワーク」→接続中のサービス→「詳細」→「プロキシ」で設定を確認し、クライアントが残した項目を無効にします。会社のプロキシ設定は、記録しておいた内容に従って復元してください。
システムプロキシを「変更しない」にしたのに、なぜノード経由で通信するのですか?
この設定は現在の状態を変更しないだけです。まずシステムプロキシを解除し、次にアプリ独自のプロキシアドレス、ターミナルのプロキシ環境変数、TUNの状態を確認してください。確立済みの接続が以前の経路を使い続けることもあります。必要であれば、テスト対象のアプリを再起動してから確認しましょう。
ブラウザーは使えるのに、開発ツールがプロキシを使わない場合はどうすればよいですか?
ツールのネットワーク設定に、実際のローカルプロキシアドレスを入力するか、前述のcurlコマンドでプロキシを明示してテストしてください。すべてのコマンドラインツールがシステム設定を読み取るとは限らず、同じプロキシ環境変数に対応しているとも限りません。
TUNを有効にすれば、システムプロキシを気にしなくてよいですか?
TUNを使うと、システムプロキシに従わない通信もより多く取り込めますが、インターフェースのルーティング、権限、DNS、除外ルールの影響は受けます。最初の切り分けでは接続方式を1つだけにしてください。追加のアプリも取り込む必要がある場合はTUNを有効にし、ローカルネットワークやノードサーバーへのルートが正常か確認します。
中国本土を除外したら中国本土のサービスが遅くなった場合、どう調べればよいですか?
完全なドメイン名と発生時刻を記録し、ログで直接接続とプロキシのどちらを通ったか確認してから、グローバル設定の結果と一時的に比較します。社内ネットワークのサービスであれば、まず会社のDNSと明示的な社内ネットワーク向け直接接続ルールを確認してください。DNSの名前解決結果と実際の接続先IPを使って、アドレスの所在を確認してください。
安定して使うために、再現可能な確認手順を決めておきましょう。ローカルの待ち受けが正常か、システム設定が正しいか、アプリが実際にプロキシに接続しているか、ルーティングの出口が想定どおりかを順番に確認します。サブスクリプションの更新はノード情報の変更に、システムプロキシはアプリの入口に、ルーティングは出口の選択に関わります。それぞれ役割が異なるため、層ごとに確認するほうが再インストールを繰り返すより効率的です。