Windows
Designed for standard desktop environments. v2rayN offers a desktop edition and the classic WPF edition, so choose based on your interface preferences and existing workflow.
Go to DownloadsA focused collection of clients for four platforms, subscription import steps, and routing and DNS configuration. Pages follow the order of real-world tasks, making them useful for first-time installs, configuration migrations, and connection troubleshooting.
v2rayN is the primary choice for desktop platforms, while Android users can choose between v2rayNG and v2flyNG. The package pages further separate processor architectures and package formats; this section simply maps each operating system to the right entry point.
Designed for standard desktop environments. v2rayN offers a desktop edition and the classic WPF edition, so choose based on your interface preferences and existing workflow.
Go to Downloadsv2rayN provides installers for Apple Silicon and Intel. Check your chip type in system information before downloading to avoid choosing the wrong architecture.
Go to DownloadsMost modern devices use the arm64 architecture. v2rayNG uses the Xray core, while v2flyNG uses the V2Fly core; choose according to your configuration source and core requirements.
Go to Downloadsv2rayN provides deb and rpm packages for x64 and arm64. Confirm your distribution’s package system first, then choose the matching processor build.
Go to DownloadsInstalling the client is only the starting point. Everyday results are more often affected by whether subscriptions update correctly, whether routing rules match as intended, and whether DNS resolution aligns with the routing strategy.
A subscription URL provides the client with a set of server configurations. After importing it, run one manual update first to confirm that the client can read the content before enabling updates on startup. If an update fails, check that the URL is complete, that no spaces were introduced while copying, that the system time is accurate, and that the current network can reach the subscription address. Avoid repeatedly deleting every configuration: error messages and update timestamps are important troubleshooting clues. After a successful update, verify that new entries appear in the correct subscription group so old configurations are not mistaken for the latest results.
View the Subscription Import Steps →Routing rules determine which outbound handles a connection. Common conditions include domains, IPs, ports, network types, and geosite or geoip classifications. Most configurations match from top to bottom, so specific rules should come before broad ones; a matched connection generally does not continue through later entries. Before editing, identify the intended outbound for each rule and check for broader conditions earlier in the list. Change one rule group at a time and keep the original configuration so differences can be quickly rolled back and traced.
Read the routing Field Guide →domain:geosite:cn→ directip:geoip:private→ directnetwork:tcp,udp→ proxyDNS settings convert domain names into addresses used for connections, and they are not fully independent of routing decisions. When using domain-based resolution policies, verify each server’s applicable domains, query order, and expected address ranges. If a browser opens some sites while others consistently time out, check resolution results, routing matches, and the system proxy scope separately instead of only changing the server address. For custom configurations, keep one simple, predictable default resolver first, then add domains or expectIPs conditions gradually to identify which layer causes a problem.
Read the dns Field Guide →Check domain conditions and query order together with the routing target.
Confirm the configuration source first, choose how to run it next, and then verify the result through real requests and client logs. This order separates installation, configuration, and system proxy issues.
Add the complete URL in the client’s subscription manager, save it, and run one manual update. For a single share link, import it from the clipboard and confirm that the protocol, address, port, and other fields were recognized. Importing a configuration does not enable the connection; you still need to select the specific profile.
Select the profile you want from the list, start the core, and then enable the system proxy if needed. Rule mode chooses an outbound according to routing conditions, while global mode generally sends a broader range of connections through the proxy. For a first run, keep the default routing and add custom rules only after the basic connection works.
Check the client status, core logs, and local listening port before opening the target page in a browser. If only some applications fail to connect, confirm whether they follow the system proxy. If the core cannot start, check for port conflicts and malformed configuration fields first.
V2Ray is commonly used as an umbrella term for protocol, transport, routing, and proxy capabilities. Project V established many of the early core concepts and configuration structures, after which community maintenance led to different core families. V2Fly continues the v2ray-core line, while Xray extends protocol and transport capabilities while retaining compatibility with established configuration approaches. Graphical clients sit outside the cores and provide interfaces for configuration management, subscription updates, system proxy switching, and log viewing.
The core reads configuration files, establishes inbound and outbound connections, and applies DNS, routing, transport, and policy settings. Protocol parameters for VMess, VLESS, Trojan, and others are ultimately parsed by the core. A configuration’s usability depends not only on whether an entry appears in the client, but also on whether the selected core recognizes its fields and whether transport and security parameters are compatible as a set.
v2rayN targets Windows, macOS, and Linux desktops, offering subscription groups, routing, system proxy controls, and multi-core management. v2rayNG targets Android and is commonly used with the Xray core; v2flyNG also targets Android, with its built-in V2Fly core as an alternative. All three are open-source clients, but their feature sets and core choices are not identical.
Open source means that source code can be reviewed, studied, and modified under the applicable license; it does not mean that every client, core, and third-party configuration uses the same license. For a specific component, distinguish between graphical client code, core code, rule data, and release files, since each may have different copyright notices and redistribution terms. Most users should focus on maintenance status, compatibility, and configuration migration notes.
Client updates mainly change the interface, configuration management, and system integration. Core updates may affect protocol support, field parsing, and runtime behavior. Updates to geosite, geoip, and other rule data affect classification matches. These three categories should not be treated as the same thing. When behavior changes after an update, record which layer changed and check whether the original configuration contains adjusted or deprecated fields.
Most issues can be separated into five layers: subscriptions, the core, the system proxy, DNS, and routing. The entries below cover the most common starting points from the homepage; see the glossary and configuration reference for detailed fields.
Confirm that the URL is complete at both ends and contains no spaces, then review the error reported by the client. If the subscription address is unreachable, changing routes or importing it again usually will not fix the root cause.
View Subscription Terminology →Some applications do not read system proxy settings, while others may use a separate proxy or a direct network stack. Confirm how the application behaves, then check the client’s local listening port.
View the Connection Verification Steps →Rule mode selects an outbound according to conditions such as domain, IP, and port. Global mode generally sends a broader range of connections through one outbound. During troubleshooting, briefly compare both modes to determine whether routing rules are responsible.
View Routing and Split-Tunneling Terms →A running core has already loaded the current configuration, and saving the file does not necessarily rebuild its DNS components. Restarting lets new servers, domain conditions, and query order take effect completely.
View DNS Configuration Fields →The articles focus on specific symptoms and configuration fields. Each one covers a clearly defined topic, making it easier to search by a client message, system behavior, or configuration section name.
Check the system battery-optimization whitelist, foreground-service notifications, and per-app proxy scope to determine whether background drain comes from persistent connections, system scheduling, or proxy coverage.
Read the Full ArticleBreaks down three common matching patterns in routing rules, explains top-to-bottom evaluation, and shows how to adjust broad conditions that override specific ones.
Read the Full ArticleFollow the URL format, encoding, access environment, client parsing, and subscription-group order to identify exactly where an update fails or an imported list remains empty.
Read the Full Article