Windows
v2rayNデスクトップ版はクロスプラットフォームのGUIを採用し、従来のWPF版ではおなじみの操作画面を利用できます。新規インストールの場合は、まずデスクトップ版を確認するとよいでしょう。既存の操作方法や設定に慣れている場合は、画面の違いを比べてから選んでください。インストール後は、クライアントがコアを正常に起動できることを確認してからサブスクリプションを取り込みます。アプリが起動しただけで、プロキシが有効になったと判断しないようにしましょう。
OSに合わせてクライアントを選び、日本語の手順に沿ってサブスクリプションを取り込みます。次にルーティングとDNS設定を確認しましょう。まず接続を確立してから、項目ごとに調整します。
デスクトップではv2rayN、Androidではv2rayNGをまず確認しましょう。V2Flyコアが必要な場合は、v2flyNGも選択肢になります。インストールパッケージはOSとプロセッサに、接続方法は設定とコアに左右されます。この2点を分けて考えると、選び間違いを防げます。ダウンロードページでは各ダウンロード先とインストール要件をまとめています。トップページでは選び方の目安を紹介します。
クライアントは設定の保存、コアの起動、通信の入口の設定を行うソフトウェアで、接続先のサーバーを自動で用意するものではありません。利用を始める前に、使用権限のあるサブスクリプションURLまたはサーバー設定を準備してください。既存の設定がある場合は、グループや独自のルーティングルールを残してからインストールまたは移行します。初めて使う場合は、まずガイドに沿って1つの接続を確認しましょう。最初からすべての詳細設定を有効にする必要はありません。
デスクトップ版はクロスプラットフォームのGUIを採用し、従来のWPF版ではおなじみの操作画面を利用できます。新規インストールの場合は、まずデスクトップ版を確認するとよいでしょう。既存の操作方法や設定に慣れている場合は、画面の違いを比べてから選んでください。インストール後は、クライアントがコアを正常に起動できることを確認してからサブスクリプションを取り込みます。アプリが起動しただけで、プロキシが有効になったと判断しないようにしましょう。
まずシステムの「このMacについて」でチップを確認し、Apple SiliconまたはIntelに対応するダウンロード先を選びます。サブスクリプションを取り込んだら、システムプロキシが有効か、ブラウザーがシステム設定を使用しているかを確認してください。TUNが必要な場合は、権限を別途設定します。初回接続ではシステムプロキシと仮想ネットワークインターフェースを同時に有効にせず、切り分けにくい要因を増やさないようにしましょう。
v2rayNGはXrayコアを使用し、v2flyNGはV2Flyコアを使う選択肢です。比較的新しいスマートフォンでは、まずarm64版を確認してください。アーキテクチャがわからない場合は、端末情報を調べるか汎用パッケージを検討しましょう。初回接続時には、システムのVPN接続許可が必要です。バックグラウンドに移ると切断される場合は、バッテリー最適化、バックグラウンド動作の権限、VPN接続を使用する他のアプリを確認してください。
ディストリビューションのパッケージ形式に合わせてdebまたはrpmを選び、プロセッサのアーキテクチャも確認してください。GUIクライアントのシステムプロキシ設定が、必ずしもターミナルのプログラムに適用されるとは限りません。各アプリがプロキシを参照するか、個別に確認しましょう。ブラウザーではアクセスできるのにコマンドラインでは接続できない場合、サーバー設定一式を変更する前に、対象プログラムのプロキシ設定と環境変数を確認してください。
まずは3つの層に分けて考えましょう。アプリがリクエストをローカルの入口へ送り、コアがルールに従って送信先を選び、DNSが接続に必要な名前解決を行います。クライアントはこれらの設定をGUIにまとめています。問題が起きたときは、この経路に沿って確認すると、同じサブスクリプションを何度も取り込み直すより効果的です。
サブスクリプションを使うと、複数のサーバー設定を1つの更新先にまとめられます。まずグループを作成し、使用権限のあるURLを貼り付けて更新した後、設定が一覧に反映されたことを確認してください。通常の更新に失敗した場合は、既存の接続が使えることを確認したうえで、プロキシ経由の更新を試せます。サブスクリプションURLにはアクセス情報が含まれることがあるため、スクリーンショットや公開ログに載せないでください。設定を1件ずつ手入力する方法に比べ、グループで管理すると取得元や更新範囲を把握しやすくなります。ただし、独自のメモ、並び順、ルーティングルールは別途バックアップしてください。リモートからの更新内容がローカル設定の恒久的な保存先になるわけではありません。右側の例はJSONでURLを保存する形式を示したもので、クライアントのサブスクリプションファイル形式ではありません。
{
"url": "https://example.com/sub"
}
VMess、VLESS、Trojanはそれぞれ異なる送信プロトコルで、自由に置き換えられるラベルではありません。取り込み後は、ポート、トランスポート方式、TLSなどのセキュリティ設定も確認してください。同じプロトコルでも、すべてのパラメーターに互換性があるとは限りません。GUIクライアントでは複数の設定を保存して切り替えられますが、実際に動作するかどうかは選択したコアによって決まります。まずサーバーから提供されたパラメーターをそのまま使い、接続を確認してからトランスポート設定を調整しましょう。右側の例はdirectとblockという基本的な送信先を示しており、ルーティングからtagを参照する仕組みを理解するためのものです。接続先のサーバー情報は含まれていないため、利用可能なプロキシ設定の代わりにはなりません。
{
"outbounds": [
{
"tag": "direct",
"protocol": "freedom"
},
{
"tag": "block",
"protocol": "blackhole"
}
]
}
ルーティングは、接続をどの送信先に渡すかを決めます。ルールは上から順に照合されるため、例外は通常、広範囲に適用するルールより前に置きます。geositeはドメインの集合、geoipはIPアドレスの集合を扱い、それぞれ対応するデータベースを利用します。最初は、LAN内のアドレスを直接接続にするなど、明確なルールを少数だけ設定しましょう。その後、必要なドメインを1つずつ追加します。すべての通信を同じ送信先に流す場合と比べて、ルーティングを使うとローカルサービスへの影響を抑えられますが、ルールの順序と送信先のタグを管理する必要があります。例にあるdirectは、送信先として実際に設定されていなければなりません。変更後は具体的な接続先で照合結果を確かめ、ルールが保存されたことだけで有効と判断しないでください。
{
"routing": {
"domainStrategy": "IPIfNonMatch",
"rules": [
{
"type": "field",
"ip": ["geoip:private"],
"outboundTag": "direct"
}
]
}
}
DNS設定は、リゾルバーのアドレスを入力するだけではありません。どのアプリが問い合わせを行うか、どの経路で問い合わせるか、結果をルーティングにどう使うかも関係します。コア内蔵のDNSが、システム上のすべてのアプリの名前解決を自動的に処理するわけではありません。ドメインにアクセスできない場合は、まず名前解決の失敗と接続の失敗を切り分け、問い合わせのポリシーと実際の送信先を確認してください。リゾルバーを何度も変更するより、アプリ、システム、コアそれぞれの役割を明確にすることが大切です。右側の例はDNSサーバー一覧とIPv4の問い合わせポリシーを示したもので、すべてのネットワークに適した推奨値ではありません。変更前に元の設定を記録し、一度に1項目だけ変更すれば、何が影響したのか判断しやすくなります。
{
"dns": {
"servers": [
"1.1.1.1",
"localhost"
],
"queryStrategy": "UseIPv4"
}
}
システムプロキシは、システム設定に従うアプリをローカルプロキシの入口に接続します。TUNは仮想ネットワークインターフェースを使って通信を処理します。必要な権限と影響範囲はそれぞれ異なります。初回の設定では、まずシステムプロキシで接続を確認し、必要に応じてTUNを検討してください。右側の例はローカルSOCKSの受信設定で、TUNの設定ではありません。ループバックアドレスで待ち受けると、接続できるのは同じ端末上のアプリだけです。LAN全体で待ち受ける場合と比べ、アクセス範囲を管理しやすい設定です。他の端末から接続する必要がある場合は、待ち受けアドレスを全インターフェースに変更するだけでなく、ファイアウォール、認証、ネットワーク境界もあわせて確認してください。
{
"inbounds": [
{
"tag": "socks-in",
"listen": "127.0.0.1",
"port": 10808,
"protocol": "socks",
"settings": {
"udp": true
}
}
]
}
クライアントの画面とプロキシコアはそれぞれ役割が異なります。画面にあるオプションが、現在のコアで必ず認識されるとは限りません。切り替える前に、設定で使っているプロトコル、トランスポート、セキュリティ機能を確認し、コアの対応範囲を調べてください。名称だけで判断するより、起動ログを確認するほうが、未対応の項目やパラメーターを特定しやすくなります。利用できる設定をバックアップし、切り替え後は最小限の接続テストを行ってから、独自のルーティングやDNS設定を戻しましょう。右側の例は一般的なログレベルを示したもので、コアを選ぶためのスイッチではありません。通常、コアはクライアントの設定画面で選びます。JSONに独自のフィールドを追加して切り替えることはできません。
{
"log": {
"loglevel": "warning"
}
}
サブスクリプションを更新してもアクセスできない場合は、まず有効な設定が選択されているか、次にコアの起動ログに問題がないかを確認します。続いて、アプリがローカルの受信ポートに実際に接続しているか、最後にルーティングで選ばれた送信先と名前解決を確認してください。TCPポートに到達できることは、接続を確立できる可能性を示すだけで、プロトコル接続全体を確認したことにはなりません。テストに失敗した原因が、テスト対象にアクセスできないことの場合もあります。「タイムアウト」とだけ記録するより、元のエラーメッセージを残すほうが原因を特定しやすくなります。
設定リファレンスのJSONは、設定項目どうしの関係を説明するためのものです。通常、クライアントは画面の設定から実行用の設定ファイルを生成するため、一時生成ファイルを直接編集しても次回起動時に上書きされることがあります。長期的に保持するルールは、クライアントが対応するカスタム設定の項目に追加し、変更後に生成結果を確認してください。各項目の詳しい説明は受信設定の章から確認できます。初めて操作する場合は、サブスクリプションの取り込みガイドに沿って進めてください。
「V2Ray」は日常的な会話で広い意味の呼称として使われることがありますが、実際に操作する際は、プロジェクトのエコシステム、プロキシコア、GUIクライアントを分けて考えるとわかりやすくなります。Project Vはモジュール型のプロキシツールという考え方を提供し、受信設定がリクエストを受け取り、ルーティングが行き先を決め、送信設定が接続を実行します。V2FlyはV2Rayのコミュニティ開発を引き継ぎ、Xrayは別のコアとして発展しました。技術的な背景は共通していますが、それぞれ独自に機能を拡張しているため、名前が似ていても設定が常に共通して使えるとは限りません。
クライアントは操作画面を、コアは接続処理を担当します。v2rayNはサブスクリプション、サーバー一覧、システムプロキシ、設定項目をデスクトップ画面にまとめ、対応するコアを呼び出して動作します。v2rayNGはAndroid向けで、Xrayコアを採用しています。v2flyNGはV2Flyコアを使う選択肢です。いずれもオープンソースのソフトウェアプロジェクトです。選ぶ際は、まず端末を確認し、次に設定の要件を見ましょう。名称を統一するために、異なる端末で同じ画面にそろえる必要はありません。
プロトコルへの対応は、具体的な機能ごとに確認する必要があります。VMess、VLESS、Trojanはプロトコルの選択肢を示し、トランスポート方式やTLS、REALITYなどのセキュリティ設定は別の要素です。設定が動作するかどうかは、クライアントが正しく取り込めるか、コアが認識できるか、サーバーのパラメーターと一致するかによって決まります。「VLESS対応」と書かれているだけでは、特定のトランスポートやセキュリティ設定を含む構成に互換性があるか判断できません。起動できない場合は、エラーに記載された項目とコアの対応範囲を確認しましょう。クライアントを何度も変えるより、原因を絞り込めます。
オープンソースライセンスも、プロジェクトごとに確認しましょう。v2rayN、v2rayNG、v2flyNGはGPL系ライセンスを採用し、V2FlyとXrayのコアプロジェクトはMPL 2.0を採用しています。ライセンスは、ソースコードの使用、変更、再配布に関する条件を定めたもので、リモートサービスを利用する権限を意味するものではありません。サブスクリプション、サーバー、ネットワークには、それぞれ利用上の管理範囲があります。日常的な利用で各条項をすべて調べる必要はありませんが、コードを再配布、改変、統合する場合は、「オープンソースなら無条件で使える」と考えず、各プロジェクトのライセンスを確認してください。
更新にもそれぞれ異なる役割があります。クライアントの更新は画面や統合機能に、コアの更新はプロトコルの実装に、サブスクリプションの更新はリモート設定に、ルールデータベースの更新はドメインやIPアドレスの集合に影響します。4種類の更新は解決する問題が異なるため、トラブル時にまとめて実行する必要はありません。たとえば、特定のサイトが誤って振り分けられる場合は、まずルールの順序とデータベースを確認します。コアが未対応フィールドを明示した場合は、コアの対応状況を調べましょう。サブスクリプションの1グループだけ更新できない場合は、まずURL、権限、更新経路を確認してください。
一度で完璧な設定を目指すより、元に戻せる設定を残すほうが実用的です。調整前に現在の送信先、ルーティングモード、DNS、通信の入口を記録し、一度に変更するのは1つの項目群だけにします。ブラウザーでアクセスできることを確認してから、必要な他のアプリもテストしてください。バックグラウンドアプリ、ゲーム、コマンドラインのプログラムが、すべてシステムプロキシに従うとは限りません。TUNを有効にすればあらゆるネットワーク通信を処理できるとも限りません。通信の入口、ルーティング、名前解決は端末の環境に合わせて検証が必要です。画面のスイッチがオンでも、実際の接続結果まで保証されるわけではありません。
接続テストの結果は、その意味を理解して確認しましょう。TCPingはポートへの到達性を調べるテストに近く、実際の接続テストではプロトコルのハンドシェイクやテスト対象も関係します。結果はローカルネットワーク、サーバーの状態、名前解決、接続先の応答に左右されます。1回成功してもすべてのアプリが使えるとは限らず、1回失敗してもクライアントの問題とは断定できません。設定を選択し、コアを起動し、プロキシモードを確認してから目的のサイトへアクセスし、ログを確認するという手順を固定してテストしましょう。同じ手順で行えば、結果を比較しやすくなります。
この日本語ガイドでは、「操作方法」と「設定の理由」を分けて説明します。チュートリアルではインストール後の一連の手順を、設定リファレンスでは項目や設定例を、トラブル対処では症状に応じた確認方法を、技術ノートでは個別の仕組みを解説します。当サイトはクライアント情報をまとめた独立サイトであり、リモート接続サービスの提供元ではありません。使用権限のある設定を用意したら、まず基本的な接続を確認し、その後で複雑なルーティングが必要か判断してください。読む順番は目の前の課題に合わせればよく、すべての章を一度に読む必要はありません。
サブスクリプションを追加したのに接続できない?選択中の設定とコアのログを確認してから、システムプロキシをチェックしましょう。詳しい手順は接続トラブルの対処法をご覧ください。
ブラウザーは使えるのに、他のアプリは接続できない?アプリがシステムプロキシを参照するか、独自のプロキシ設定があるかを確認してから、TUNの利用を検討しましょう。入口と通信範囲については受信設定ガイドをご覧ください。
ルールを設定しても、想定どおりに振り分けられない?照合順序、送信先のタグ、データベースを確認し、ルーティング前にドメインが名前解決されていないかもチェックしましょう。詳しくはルーティングルールのリファレンスをご覧ください。
ネットワークを変えてからドメインにアクセスできない?まず名前解決のエラーと接続エラーを区別して記録し、DNSの問い合わせ経路を確認してから、設定を1つずつ元に戻しましょう。各項目についてはDNS設定の章をご覧ください。
基本的な接続を確認したら、問題に合わせて詳しく調べましょう。以下の3記事では、初回接続の確認、コアの選び方、FakeDNSをそれぞれ解説します。異なる層の設定を混同せずに確認できます。
予約済みアドレス帯の仮想IPからドメイン情報を取得するFakeDNSの仕組みを解説。sniffingやTUNモードとの連携、利用に適したケース、問題が起きるケースも紹介します。
解説記事:FakeDNSの仕組みProject V以降にV2FlyとXrayの2つの系統が生まれた経緯を整理し、VLESS、XTLS、REALITYなどの機能対応を比較。v2rayNGとv2flyNGの選び方も解説します。
解説記事:XrayとV2Flyのコアの違いサブスクリプションを取り込んだ後に行うことを解説。TCPingと実接続テストの結果の違いを理解し、使えるサーバーを選んだうえで、システムプロキシとブラウザーで通信が実際にプロキシを経由しているか確認します。
解説記事:v2rayNの初回接続手順