macOSのシステムプロキシ設定|グローバル・中国本土を除外・変更しないの違い

v2rayNのシステムプロキシ3つの設定とルーティングプリセットを比較。グローバルや中国本土を除外するモードの通信への影響と、Macでの仕事や開発時の選び方を解説します。

この記事のポイント

システムプロキシは、アプリのリクエストをv2rayNに渡すかどうかを決める設定です。ルーティングモードは、渡されたリクエストを直接接続するか、プロキシノード経由にするかを決めます。普段のブラウジングでは「システムプロキシを自動設定」と中国本土を除外するルールの組み合わせから始めるのが一般的です。開発ツールでは、個別にローカルプロキシを指定できます。この記事では、この2つの設定の違いとmacOSでの確認手順、ターミナルでの検証コマンド、終了後の設定復元方法を紹介します。

システムプロキシとグローバルルーティング:まず2つの設定を区別

v2rayNは、サブスクリプションやノード、コアの設定を管理するデスクトップクライアントです。サブスクリプションを追加してノードを選択しても、プロキシの出口が用意されただけで、すべてのアプリがその出口を使うとは限りません。ブラウザーのリクエストがまずローカルの待ち受けポートに渡されて初めて、コアがルーティングルールを適用できます。

macOSのシステムプロキシは、ネットワークサービスのプロキシ設定にプロキシのホストとポートを書き込む入口の設定です。システム設定に従うアプリは、この設定を使ってローカルプロキシに接続します。一方、独自のネットワークスタックやプロキシ設定を使うアプリ、明示的に直接接続するプログラムは、この設定に従わないことがあります。「グローバル」は別の階層の設定で、通常はプロキシコアに渡されたリクエストを、選択中のノードへ一律にルーティングすることを指します。Mac全体の通信を自動的に取り込む設定ではありません。

設定レイヤー解決することこの設定だけでは保証されないこと
システムプロキシシステム設定に従うアプリのリクエスト送信先すべてのプロセスやUDP通信を取り込めるとは限らない
グローバルルーティングコアに渡された通常のリクエストをプロキシ経由にするプロキシに接続していないアプリの通信先は変更できない
中国本土を除外するルーティングドメインやIPなどのルールに基づいて直接接続とプロキシを振り分ける中国本土のすべてのサービスを正確に判定できるとは限らない
TUNモード仮想ネットワークインターフェースを使い、より多くのIP通信を取り込むDNS、ルートの除外設定、権限設定の代わりにはならない

v2rayNのシステムプロキシ3つの設定:自動設定・解除・変更しない

v2rayNのメイン画面下部のステータスバー、またはトレイメニューにあるシステムプロキシの項目で、現在の設定を確認します。デスクトップ版によって項目の場所や表記が多少異なる場合がありますが、一般的には「システムプロキシを自動設定」「システムプロキシを解除」「システムプロキシを変更しない」の3つです。操作するのはシステム設定であり、サブスクリプションの内容ではありません。

システムプロキシを自動設定

おすすめ

クライアントがローカルプロキシのアドレスをシステム設定に書き込みます。コアが起動していて、待ち受けアドレスとポートが有効であることが前提です。有効にした後も、直接接続とプロキシ経由を振り分けるには、適切なルーティングプリセットを選ぶ必要があります。

おすすめの用途:普段のブラウジング、システムプロキシに従うデスクトップアプリ

システムプロキシを解除

クライアントが管理するシステムプロキシ設定を解除します。ローカルコアの停止を意味するわけではなく、プロキシアドレスを手動で入力したツールの利用が止まる保証もありません。有効になっているTUNも別途対処が必要です。

おすすめの用途:通常のネットワーク設定に戻す、終了後の接続トラブルを調べる

システムプロキシを変更しない

システムプロキシの現在の状態を維持し、有効化も解除もしません。以前設定したプロキシアドレスが残っている場合、この設定に切り替えても自動的には削除されません。「直接接続モード」という意味でもありません。

おすすめの用途:管理対象のネットワーク設定がある場合、開発ツールだけに個別のプロキシを設定する場合

判断の目安:システムプロキシを無効にするには「解除」を選び、「変更しない」は選ばない

自動設定から「変更しない」に切り替えても、システムがローカルポートを参照したままなら、アプリは引き続きプロキシを使うことがあります。直接接続に戻すには、まずプロキシを解除してから、macOSのネットワーク設定で実際の状態を確認してください。

会社のネットワークでは、自動プロキシ設定スクリプトや固定プロキシがあらかじめ設定されていることがあります。変更する前に、元のアドレス、ポート、有効状態を記録してください。クライアントの設定を解除しても、会社が指定した設定に戻るとは限りません。管理対象のデバイスでは組織のネットワーク要件に従い、設定をそのまま上書きしないでください。

グローバルと中国本土を除外するルーティング:スイッチ名ではなくルールを確認

中国本土を除外するプリセットでは、通常、ローカルネットワークや中国本土の一部ドメイン・IPへの通信を直接接続し、それ以外をプロキシ経由にします。具体的な動作は、プリセット内のルール、優先順位、データベースによって異なります。Xrayのルーティングルールは通常、上から順に一致するものを探します。上位の明示的なルールが、後続の汎用ルールより優先される場合があります。

geosite:cnはドメインの集合、geoip:cnはIPアドレスの集合を表します。geoip:privateはプライベートアドレス範囲によく使われます。これらは、どの画面にもそのまま入力できる汎用テキストではありません。グラフィカルなルーティングエディターとコアのネイティブJSONではフィールドの書式が異なるため、使用中のエディターの指定に従って入力してください。

2つの利用シーン別・設定の組み合わせ

日常業務とWebブラウジング
  • システムプロキシを自動設定します。
  • 中国本土を除外するルーティングを選び、ローカルネットワークが直接接続されるか確認します。
  • 業務サイトとプロキシが必要なサイトをそれぞれ使って確認します。
  • 社内サイトに問題がある場合は、まずドメインルールと会社のDNSを確認します。
開発・デバッグと個別コマンド
  • まず既存のシステムプロキシを解除し、その後「変更しない」を選びます。
  • コマンドのオプションまたはツールの設定でローカルプロキシを指定します。
  • 同じURLに対して、直接接続とプロキシ経由の結果を比較します。
  • サブスクリプションの認証情報を含むターミナル出力を公開の場に貼り付けないでください。

まず接続するアプリを決め、次にそのリクエストの出口を決めましょう。システムプロキシ、ルーティング、TUNを同時に切り替えるより、問題を切り分けやすくなります。

Macでの設定手順:待ち受けポートとシステム設定を確認

まずダウンロードページでチップに合ったv2rayNのインストーラーを選び、使い方ガイドに従ってサブスクリプションを追加し、グループを更新します。以下のポート番号は確認方法を説明するための例で、すべてのバージョンの標準値ではありません。現在のクライアントに表示されている待ち受け設定を確認してください。

127.0.0.1
ローカルのループバックアドレスの例
10808
以下で仮定するローカルHTTPプロキシのポート
443
HTTPSでよく使われる接続先ポート。ローカルの待ち受けポートではありません
  1. ノードとコアを確認する。有効なノードを選び、ログに設定エラーやポート競合がないか確認します。ノード側のリモートポートとローカルのインバウンドポートは別物です。ノードの443をシステムプロキシに入力しないでください。
  2. ローカルの待ち受けを確認する。「設定」→「パラメーター設定」で、ローカルの待ち受けポートとプロトコルの種類を確認します。画面上の項目の配置は使用中のビルドによって異なります。以下では、127.0.0.1:10808がHTTPプロキシのリクエストを受け付ける想定です。実際のポートが異なる場合や、SOCKSのみをサポートする場合は、それに合わせてください。
  3. システムプロキシを有効にする。「システムプロキシを自動設定」を選び、次に中国本土を除外するルーティングを選択します。最初の動作確認では、切り分けを容易にするためTUNを併用しないでください。
  4. macOSの設定を確認する。「システム設定」→「ネットワーク」→接続中のネットワークサービス→「詳細」→「プロキシ」を開きます。Webプロキシ、安全なWebプロキシ、SOCKSプロキシの有効状態、サーバー、ポートを確認してください。クライアントのアイコンだけで判断しないようにしましょう。
  5. 接続先ごとに確認する。中国本土の業務サイト、プロキシが必要なサイト、ローカルネットワークのアドレスをそれぞれ開き、コアのログで選択されたアウトバウンドも確認します。プロキシ設定はネットワークサービスごとに異なるため、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エラーが返っても接続自体は確立している場合があるため、応答元が接続先のサービスかプロキシかを引き続き確認してください。

socks5hは、接続先のドメイン名をSOCKSプロキシ側で名前解決する指定です。ターミナルのローカルで先に名前解決する方法とは異なります。DNSの問題を絞り込むのに役立ちますが、一度成功しただけで、すべてのアプリが同じ名前解決方式を使っているとは判断できません。

よくある質問:終了後の設定、開発ツール、TUN

v2rayNを終了するとWebページがすべて開かなくなるのはなぜですか?

まず、システムプロキシが終了したローカルポートを参照したままになっていないか確認します。クライアントを再起動できる場合は、システムプロキシを解除してから終了してください。起動できない場合は、「システム設定」→「ネットワーク」→接続中のサービス→「詳細」→「プロキシ」で設定を確認し、クライアントが残した項目を無効にします。会社のプロキシ設定は、記録しておいた内容に従って復元してください。

システムプロキシを「変更しない」にしたのに、なぜノード経由で通信するのですか?

この設定は現在の状態を変更しないだけです。まずシステムプロキシを解除し、次にアプリ独自のプロキシアドレス、ターミナルのプロキシ環境変数、TUNの状態を確認してください。確立済みの接続が以前の経路を使い続けることもあります。必要であれば、テスト対象のアプリを再起動してから確認しましょう。

ブラウザーは使えるのに、開発ツールがプロキシを使わない場合はどうすればよいですか?

ツールのネットワーク設定に、実際のローカルプロキシアドレスを入力するか、前述のcurlコマンドでプロキシを明示してテストしてください。すべてのコマンドラインツールがシステム設定を読み取るとは限らず、同じプロキシ環境変数に対応しているとも限りません。

TUNを有効にすれば、システムプロキシを気にしなくてよいですか?

TUNを使うと、システムプロキシに従わない通信もより多く取り込めますが、インターフェースのルーティング、権限、DNS、除外ルールの影響は受けます。最初の切り分けでは接続方式を1つだけにしてください。追加のアプリも取り込む必要がある場合はTUNを有効にし、ローカルネットワークやノードサーバーへのルートが正常か確認します。

中国本土を除外したら中国本土のサービスが遅くなった場合、どう調べればよいですか?

完全なドメイン名と発生時刻を記録し、ログで直接接続とプロキシのどちらを通ったか確認してから、グローバル設定の結果と一時的に比較します。社内ネットワークのサービスであれば、まず会社のDNSと明示的な社内ネットワーク向け直接接続ルールを確認してください。DNSの名前解決結果と実際の接続先IPを使って、アドレスの所在を確認してください。

安定して使うために、再現可能な確認手順を決めておきましょう。ローカルの待ち受けが正常か、システム設定が正しいか、アプリが実際にプロキシに接続しているか、ルーティングの出口が想定どおりかを順番に確認します。サブスクリプションの更新はノード情報の変更に、システムプロキシはアプリの入口に、ルーティングは出口の選択に関わります。それぞれ役割が異なるため、層ごとに確認するほうが再インストールを繰り返すより効率的です。

v2rayNをダウンロードプラットフォームに合ったクライアントを選択