PROJECT V Ecosystem · Graphical Clients

V2Ray Plain Guide:
Client Selection and Configuration Guide

Start by choosing a client, then work through subscription imports, system proxy and TUN, and routing and DNS. Each step gives the practical answer first, followed by why those settings make sense.

Free forever Open source Chinese documentation V2Fly · Xray
CONFIGURATION MAP

From connectivity to clear configuration

A client is only the configuration entry point. What really determines the outcome is subscription updating, which traffic gets captured, routing rules, and the DNS resolution path. The four topics below follow the order you typically configure them.

SUBSCRIPTION

Subscriptions keep node lists up to date

A subscription link is best understood as a remote configuration list. After adding it to a client, you must run an update before its nodes appear in the current group. When the service changes later, update the subscription again; restarting the client does not automatically refresh the list. First make sure the group is enabled, then choose a node and test the connection.

Manually importing a single VMess, VLESS, or Trojan link works well for temporary testing, while subscriptions are better for long-term group management. A group name is only for organization and does not change the protocol. When copying a link, preserve the entire value so that chat apps do not insert line breaks or truncate parameters.

subscription.json
{
  "remarks": "Daily connection",
  "enabled": true,
  "updateInterval": 24
}
CLIENT ENTRY

Open the download page for your system

Use v2rayN on desktop first; on Android, choose between v2rayNG and v2flyNG. The download page further separates processor architectures and package formats.

View all clients →

DESKTOP

Windows

Use v2rayN on Windows desktop. The newer desktop interface is suited to a fresh setup, while the classic WPF edition preserves a familiar menu layout. On the download page, select the file for your system architecture and import your subscription after installation. For the first test, enable the system proxy and confirm that the browser connects normally before configuring TUN or custom routing.

Go to Downloads

DESKTOP

macOS

Use the v2rayN desktop edition on macOS. Before downloading, check the processor type in System Information: choose arm64 for Apple silicon and x64 for Intel. On first launch, follow the system prompts to authorize the app. If you only need browsers and ordinary desktop programs, start with the system proxy; for broader application coverage, continue with the TUN permissions and routing guidance.

Go to Downloads

MOBILE

Android

v2rayNG is the first choice on Android. It uses the Xray core and provides subscription, QR-code, routing, and VPN capture options; choose v2flyNG when you need the V2Fly core. Most newer devices should use arm64; if you cannot determine the architecture, use the universal build. After importing a subscription, update the group, select a node, and allow the system to establish a local VPN connection.

Go to Downloads

DESKTOP

Linux

Use v2rayN on Linux desktop. Choose deb or rpm for your distribution, and select between x64 and arm64. If the interface starts but system traffic does not change, first check whether your desktop environment accepted the proxy settings, then review permissions and TUN configuration. For troubleshooting, separate the graphical client, system proxy, and application-level proxy into three layers instead of changing them all at once.

Go to Downloads
QUICK START

Complete your first connection in three steps

Build the smallest working configuration first, then add TUN, DNS, and routing rules one at a time. Change only one variable at a time so that a connection failure points to a specific layer.

View the full guide →
  1. 01

    Installation and Import

    Install v2rayN on desktop or v2rayNG on Android, choosing v2flyNG when its core is required. Open the client’s subscription settings, add a group, paste the complete subscription link, and run an update. If the list remains empty, check that the group is enabled, the link was not truncated, and the update actually finished.

    When you have only a single node link, use the clipboard import or QR-code entry point. Both subscriptions and individual nodes produce local configuration, but subscriptions are better for future batch updates. After importing, leave the routing template unchanged; the defaults make it easier to determine whether the node itself can connect.

  2. 02

    Choose a Node and Capture Method

    Select a node from the subscription group and set it as the active configuration. On desktop, enable the system proxy first so applications that read system settings use the client; on Android, start the connection and confirm the system authorization. At this stage, test only the basic connection—do not also enable complex routing, custom DNS, and multiple proxy layers.

    Consider TUN when more desktop applications need to enter the client. Before enabling it, confirm that the ordinary system proxy works and close other programs that may be using the same virtual interface or proxy port. A TUN failure does not mean the node is invalid; it is more often related to permissions, the routing table, the virtual interface, or DNS capture.

  3. 03

    Verify, then optimize one setting at a time

    Once the basic connection works, test one target that should go direct and another that should use the proxy, then check the client log for the corresponding outbound connections. If domain access fails while a direct address works, check DNS first. If the browser works but a particular application does not, check whether it reads the system proxy or requires TUN.

    Add custom routing only at the end. Introduce one rule group at a time, reconnect after saving, and test again. When something fails, investigate in this order: subscription content, node connection, traffic capture, route matching, and DNS resolution. This is more effective for finding the root cause than repeatedly switching nodes.

OPEN SOURCE ECOSYSTEM

How Project V, Cores, and Clients Fit Together

Many configuration problems become much easier once the core, graphical interface, and subscription service are understood separately. They belong to different layers: their names may be related, but their responsibilities are not the same.

PROJECT V

Project V provides the ecosystem foundation

Project V established a composable set of network proxy tools and configuration models. A typical configuration contains inbound, outbound, routing, DNS, and transport settings: inbound accepts traffic from local applications, outbound determines how traffic leaves, routing sends different targets to designated exits, and DNS provides domain-resolution results. Graphical clients turn these structures into menus, switches, and subscription groups, so everyday use does not require starting with an empty configuration file.

This layer matters because “system proxy,” “routing mode,” and “remote DNS” in a client interface are not unrelated features. They ultimately become configuration that the core can read. When a connection fails, identify whether the issue occurred while saving the interface settings, generating the configuration, starting the core, or reaching the network exit instead of blaming every problem on the node.

CORE FAMILIES

V2Fly and Xray are two core families

V2Fly continues Project V’s community implementation and configuration model, while Xray maintains its own feature set around a similar configuration approach. Both can handle common inbound, outbound, routing, and DNS tasks and support multiple transport combinations, but their fields, feature boundaries, and release schedules may differ. Before copying a configuration, confirm which core the target client uses; identical node names do not mean every option is interchangeable.

VMess, VLESS, and Trojan describe protocols or configuration methods; V2Fly and Xray describe the core families that execute the configuration; v2rayN, v2rayNG, and v2flyNG are the clients users operate directly. Keeping these three layers separate prevents protocol capabilities, core capabilities, and interface features from being treated as one concept.

CLIENT LAYER

Three clients, three platform entry points

v2rayN is a graphical desktop client for Windows, macOS, and Linux. It handles subscription management, node switching, system proxy, TUN, routing templates, and log viewing. It is not a new protocol; it organizes core configuration in a desktop interface. Each desktop system has different permissions and proxy settings, so enabling the same option can vary by platform.

v2rayNG targets Android and is commonly paired with the Xray core; v2flyNG also targets Android, with the core family as the main reason to choose it. Both can import subscriptions and individual node configurations, and both capture application traffic through the system’s local VPN interface. Choose based on the subscription content and required core capabilities rather than the interface name alone.

LICENSE & MAINTENANCE

Review open-source licenses and release cadence separately

Clients and cores are maintained by different projects, each with its own open-source license, release cadence, and compatibility range. Open source means the code, license boundaries, and change history can be reviewed publicly; it does not mean every component updates on the same day. A client release also needs interface adaptation, core integration, and platform packaging, so a delay between client and core updates is normal.

You do not need to chase every change in daily use. Upgrade after reviewing release notes when there is a protocol-compatibility issue, an operating-system upgrade, or a known bug. Before upgrading, record the current subscription groups, routing mode, and DNS settings. Afterward, verify the basic connection first, then restore custom rules. This separates changes caused by the update from problems in the original configuration.