From importing subscriptions to routing traffic, choose a client for your device and configure system proxy and DNS settings step by step.
ProtocolsVMessVLESSTrojanShadowsocks
Desktopv2rayN
Windows / macOS / Linux
System proxySet system proxy automatically
RoutingBypass mainland China
Enable TUN
Androidv2rayNG / v2flyNG
Subscription and connection settings
Subscription groupsEdit
RoutingRules
Local DNS
Core familyXray / V2Fly
Configuration structure
Inboundinbounds
Routingrouting.rules
Outboundoutbounds
Downloads
Choose a V2Ray client for your platform
Start with v2rayN on desktop or v2rayNG on Android. Check your operating system and processor architecture, then choose the matching package from the download center. Installing a client and configuring a connection are separate steps; you’ll still need to import your subscription or server details.
Not sure which client to choose? Narrow it down by device first, then compare cores and configuration workflows. Desktop and Android clients aren’t interchangeable packages.
GUI clients bring server details, core settings, and system network options together, but these settings do different things. Explore each topic below to understand its scope: start with where your configuration comes from, decide which connections enter the core, then check which outbound they use.
Importing subscriptions: Keep configuration sources separate from server lists
A subscription is a way to fetch server configurations, not proof that a connection is working. In v2rayN, add the URL under “Subscription group settings,” save it, and update the list. Then select a server to use as the active configuration. On Android, start by creating a subscription group as well. Groups make it easier to refresh and organize sources than entering servers one by one, but an update may replace entries in the list. Subscription URLs can contain credentials, so hide the full URL in screenshots. If the list is empty, check the update result and URL before changing routing or DNS.
Subscription group settings · Update subscription · Set active server
Traffic routing: Choose an outbound based on rules
Routing rules determine whether connections entering the core go direct, through a proxy, or get blocked. They don’t make every app use the proxy automatically. Rules are generally checked in order, so place specific domain rules before broader ones. Classifying domains and addresses makes it easier to preserve local network access than sending everything through one outbound. Before using geosite or geoip expressions, make sure the rule data is available and the target outbound tag exists. The routing note above is only an illustration, not a complete configuration. After adding a rule, test both matching and non-matching traffic paths.
routing.rules · domainStrategy · outboundTag
System proxy and TUN: Know which traffic they handle
A system proxy mainly affects apps that honor the operating system’s proxy settings, making it a good starting point for a connection you can observe. TUN routes traffic through a virtual network interface, which can help with apps that ignore system proxy settings, but requires the right permissions and routing configuration. These are ways to bring traffic into the client, not synonyms for “global routing.” Instead of enabling both at once, verify the system proxy first, then test TUN separately to make problems easier to diagnose. Before enabling TUN, check for other VPNs, virtual network adapters, and DNS settings. When you exit the client, make sure the system proxy is restored.
Set system proxy automatically · Clear system proxy · Enable TUN
Switching cores: Check configuration compatibility first
The client handles the interface and configuration management; the core handles protocols, routing, and connections. v2rayN can use different cores to suit your configuration. v2rayNG uses Xray, while v2flyNG uses the V2Fly core. The cores share some ecosystem history, but their protocol parameters and features aren’t interchangeable by default. Rather than checking only whether a link imports, verify the transport, security settings, and core support. Keep your original configuration before switching, then check the startup log. If the configuration won’t start, look for incompatible fields instead of repeatedly changing the active server.
Xray · V2Fly · inbounds · outbounds
Consistent setups across devices: Align the logic, not every setting
Desktop and Android clients can use subscriptions from the same source and follow the same logic for direct, proxied, and blocked traffic. Local ports, system permissions, and traffic handling still need separate configuration. Rather than copying an entire setup, align server parameters and routing goals first, then account for device-specific differences. Desktop clients may use the system proxy; Android clients typically route connections through the system VPN interface. If one device works and the other doesn’t, compare core capabilities, DNS paths, and background restrictions instead of assuming the subscription is at fault.
Subscription groups · Routing · DNS · Local ports
Settings may be named differently as client interfaces change. Once you understand how inbounds, rules, and outbounds relate, follow the current interface. For custom rules or DNS routing, explore the advanced configuration guides.
For your first connection, get one basic setup working before turning on every option. Follow the steps below in order: configuration source, traffic entry point, then connection checks. Change one type of setting at a time so you know where to look if something goes wrong.
01
Import a subscription and choose an active server
Have your subscription URL or server share link ready. On desktop, save the URL in a subscription group and update it. On Android, do the same under subscription group settings. Once the configuration appears in the list, select one server as the current connection. If you import a share link manually, check that the protocol, address, port, and transport parameters are all present—not just that a name appears.
Updating a subscription fetches configuration; the connect button starts the selected configuration. Treat them as separate steps. If an update fails, check whether the URL has expired, contains extra spaces, or can be reached from your current network. Save the exact error message—it’s more useful than repeatedly importing the link. Don’t post a subscription URL with access credentials publicly.
02
Choose a routing mode and enable a traffic entry point
On desktop, first make sure the core starts, then enable automatic system proxy configuration if needed. On Android, approve the VPN prompt when starting a connection. Next, choose a routing mode for your needs: Global mode generally sends connections entering the core through the proxy outbound; Bypass mainland China keeps some traffic direct according to the rules. The exact behavior depends on the active rule set.
“Global” doesn’t mean every app on your device automatically uses the client. Apps that ignore the system proxy may need a separately configured proxy entry point, or TUN after you understand its permission and routing implications. For your first test, avoid running other proxy tools at the same time, as they may keep changing the system proxy settings. If devices on your local network can’t connect, check the direct rules for private IP addresses first.
03
Test traffic paths and keep a working configuration
After connecting, test destinations expected to go direct and through the proxy, and check how your browser and commonly used apps behave. A connection icon or successful port test confirms only part of the setup; it doesn’t replace testing real destinations. If just one app fails, check whether it uses the system proxy. If nothing connects, check the active server, error logs, and DNS resolution path.
When troubleshooting, change one setting at a time and record the results. For certificate errors, check the device clock and server name; don’t simply disable verification. For port conflicts, check whether another client is running. Once the basic connection is stable, back up the configuration, then add routing, DNS, or TUN settings gradually. That gives you a clear point to return to if something breaks.
The guides explain differences between desktop and Android setup. If you’re new to the terminology, visit the concepts at a glance section to distinguish subscriptions, servers, inbounds, and outbounds before continuing.
Open-source ecosystem
Project V, cores, and GUI clients
V2Ray-related names often appear together in download and setup guides. Understanding the project background, the core that handles connections, and the client that provides the interface helps explain why settings still need to be checked on each device—even when using the same subscription.
Project V: Ecosystem and project history
Project V is the open-source ecosystem behind a range of network communication tools, with V2Ray as one of its best-known core projects. The V2Fly community has continued V2Ray’s development and maintenance, while Xray is another core branch built on related code and technology. They share some history and configuration concepts, but their development has taken different directions. Similar names don’t guarantee that every configuration field is compatible.
In practice, users usually manage subscriptions, servers, and routing through a GUI client rather than editing the entire core configuration directly. “Download V2Ray” can therefore mean a GUI client or the core itself. This site focuses on v2rayN, v2rayNG, and v2flyNG. For a first setup, choose a client for your device, then check which core your server parameters require.
Ecosystem overview · Not a running-state diagram
Core families: Similar configurations, but check feature support
The core reads configuration, establishes connections, applies routing, and handles related DNS resolution. The client interface turns your selections into a usable configuration. Xray and V2Fly both operate at this execution layer, but supported protocol extensions, transport parameters, and settings differ. Importing a share link doesn’t mean the current core supports every feature it requires; startup logs are still an important way to diagnose issues.
v2rayNG is based on the Xray core, while v2flyNG uses the V2Fly core. Desktop v2rayN provides core configuration and management options. Choose based on your server’s protocol, transport, and security parameters rather than treating one core as the right answer for every setup. Keep a working configuration before switching cores, then check startup and test access before adjusting routing or DNS.
Configuration layers
Open-source licenses: Understand the terms for using and modifying code
v2rayN, v2rayNG, and v2flyNG are open-source GUI clients. Open source means the code can be reviewed, studied, and modified under the terms of its license; it doesn’t mean code from different projects can be copied without restrictions. Clients, cores, and their dependencies may use different licenses. Before redistributing, modifying, or integrating software, read the licenses and copyright notices included with each project rather than relying on the general label “open source.”
For everyday users, an important benefit of an open-source ecosystem is that configuration behavior can be discussed, problems can be reproduced with logs and specific steps, and documentation can improve around real settings. Clients don’t include ready-to-use server resources, so you’ll still need an existing subscription or server configuration. Open-source licensing, the source of connection services, and permission to use a network are separate matters. Check each one and use the software responsibly on networks you’re authorized to access.
Terms for reading, modifying, and redistributing code
Similar names don’t mean the same project; similar interfaces don’t guarantee compatible settings.
Updates: Manage clients, cores, and rules separately
Client updates mainly affect the interface, configuration management, and system integration. Core updates may change protocol support and parameter handling; rule data updates affect domain and IP classification. Subscription updates are a separate process that fetches server configurations. Distinguish these update types when troubleshooting so you know which layer changed. A refreshed subscription list doesn’t mean local rule data or core settings have also been updated.
Before updating, back up subscription groups, custom routing, and DNS settings, and note your current traffic handling method. After updating, verify your existing setup before trying new settings. If an old rule no longer matches, check the rule data, match order, and outbound tags—not just whether the client interface changed. The download page lists installation options and version information; the homepage provides a way to find downloads by platform. For startup failures, connection timeouts, or rule-loading errors, follow the blog’s troubleshooting guides to investigate further.
The basic guides help you get connected for the first time; topic-specific articles address particular problems. When something goes wrong, note your operating system, client name, traffic handling method, and a relevant log entry before choosing an article. Hide server addresses, subscription details, and access credentials before sharing logs.
Learn about log levels and log line structure, then work through common errors such as connection timeouts, certificate verification failures, port conflicts, and missing rule files. Use the stage where an error occurs to determine whether it’s a local startup, DNS resolution, or remote connection issue, then check the relevant settings instead of changing unrelated options.
Review common causes of startup failures, from missing runtimes and protected extraction folders to corrupted configuration files and revoked Android permissions. First distinguish between the main window failing to open and the core failing to start. Then check the installation environment or connection settings as appropriate, handling one issue at a time after preserving your original configuration.
Explore Project V’s origins, the V2Fly community’s ongoing maintenance, and the background to the Xray branch, then see how the three GUI clients relate to their cores. Distinguish project, protocol, and app names, then choose based on your device and existing configuration—not on an assumed installation order.
For a quick answer to a specific setting question, visit the FAQ. To work through subscription groups, routing rules, and DNS strategies step by step, continue to the advanced configuration guides.