Subscriptions, proxy, and routing Configure separately, then verify each
The graphical client manages connection profiles and runtime status; the core handles traffic. A successful import, a running core, and an app using the proxy are three separate checkpoints. Get one connection working first, then expand the rules and traffic coverage. This makes it easier to pinpoint what changed when troubleshooting.
Requires a defined block outbound and the corresponding domain rule set.
Core selection
Xray-core
sing-box
What to checkProtocol and transport support
After switchingConfiguration parsing and startup logs
Tray shortcuts
System Proxy›
Routing›
Servers›
Subscription Groups›
Check for updatesExit
This interface illustrates the general control layout. Menu labels vary by platform and build, and ports can be changed by the user. To check a configuration field, first confirm which core the client is using, then consult the corresponding configuration structure. Do not copy graphical interface labels as JSON fields.
For desktop, choose v2rayN. For Android, start with v2rayNG; v2flyNG is an alternative for the V2Fly core. The same OS does not mean packages are interchangeable: check the processor architecture and package format before downloading. Once installed, configure the client with an existing server profile or subscription.
The desktop download page offers a new cross-platform interface and the classic WPF version. If you're installing for the first time, review the interface differences on the download page and choose the build that fits your environment. If your current setup is stable, back up subscription groups, custom rules, and related settings before updating.
Install the program in a directory you can write to, rather than running it from inside the archive. If a runtime prompt appears at startup, follow its instructions to install the required dependencies; a window that fails to open does not necessarily indicate a server problem. Even when the system proxy is active, check whether your browser uses a separate proxy extension and whether another program is occupying the local listening port.
Check the chip in About This Mac: Apple Silicon means arm64, while Intel processors use x64. Choosing by chip is more reliable than guessing from the computer's appearance or purchase date. After installation, launch the app from Applications and follow the system prompts to allow it to open.
Use the menu bar to switch the system proxy and check the client's status. If you need TUN, first confirm that the current build supports it and check its permission requirements. Avoid running multiple traffic-intercepting tools at the same time. If the connection remains active after closing the main window, check whether the client is still running in the menu bar. Before quitting, make sure the system proxy settings have been restored.
v2rayNG uses the Xray core; v2flyNG uses the V2Fly core. Most newer phones can use arm64. If you are unsure of your device's architecture, check the universal build option on the download page. The client names are similar, but core capabilities and configuration support differ; don't rely on the app icon alone.
The first connection requires authorization for the system's VpnService. After granting permission, test the connection. If it frequently drops in the background, check battery optimization and your device manufacturer's background restrictions. Per-app proxy settings control which apps are included, so read what “selected apps” means before changing it; it is easy to confuse included apps with bypassed ones. Other network-intercepting apps running at the same time can also affect authorization and traffic routing.
First confirm which package system your Linux distribution uses, then choose between x64 and arm64. deb and rpm are different package formats and cannot be swapped by simply changing the file extension. The download page provides separate options for desktop environments that support installation through a graphical package manager.
Desktop environments differ in how they use the system proxy, so a working browser does not mean every app will follow it. On first launch, check the core startup logs, then test the specific app that needs network access. Before enabling TUN, verify permissions and how networking is managed. If there is a conflict, disable other virtual interfaces or traffic-intercepting apps first. Keep the smallest configuration that reproduces the issue, and avoid changing DNS, routing, and servers all at once.
The download page lists installers and system requirements. Keep your original subscription details before switching clients; exported runtime configurations may contain automatically generated fields and should not be migrated directly to another core.
Open-source ecosystem and configuration boundaries
Project V, V2Fly, and Xray
V2Ray is a common name in discussions of the ecosystem and its technology, but actual capabilities depend on the client, core, and configuration working together. Understanding these as separate layers helps you determine whether a build, guide, or protocol setting applies to your environment—and avoid assuming that an importable profile will necessarily connect.
Project V's modular approach
Project V takes a modular approach to network proxy tools, with V2Ray as one widely used implementation. Its configuration organizes behavior into sections such as inbounds, outbounds, routing, and DNS: inbounds accept connections from local apps, outbounds define how to reach a destination or proxy server, and routing selects the outbound. This structure lets you configure protocols and traffic handling separately, but a working connection often depends on several sections. Checking only the server address is not enough when troubleshooting; the local port, transport settings, and routing destination must also line up.
V2Fly and Xray
V2Fly continues community maintenance and development of V2Ray, while Xray grew from related code into a separately developed core project. The two share technical roots, but their later features and supported parameters are not identical. When you see VMess, VLESS, or another protocol name, also check the required transport, security settings, and core implementation. Similar-looking configurations are not necessarily interchangeable across cores. sing-box has its own configuration system too, so use its syntax rather than pasting in Xray routing snippets.
What the three graphical clients do
v2rayN is for desktop use, with controls for server management, subscription groups, the system proxy, and core settings. v2rayNG targets Android, using the Xray core and the system's network service APIs to handle connections. v2flyNG is another option for Android users who need the V2Fly core. All three are open-source software, with source code available for community review and collaboration. A graphical interface reduces the need to write configuration by hand, but it cannot provide valid server details or automatically fix incorrect credentials or server-side transport settings.
Open-source licenses and service providers
Open-source licenses set the terms for using, modifying, and distributing code; they are not terms of service for proxy services. The client, core, and packaged dependencies may each have different licenses. If you redistribute them, review the relevant project licenses and notices. Free client software does not mean the client project provides server connection details. Check availability, credentials, and permitted use with the subscription provider. Before sharing a configuration publicly, remove subscription URLs, user IDs, passwords, and any other information that could provide access to a personal service.
Client and core updates
Client updates, core updates, and rule-set updates address different things. A client update may change the interface or how it generates configuration; a core update may change protocol implementation and parameter requirements; a rule-set update affects domain or address classification. Before updating, save a known-working configuration and read the release notes. Then verify the update using your usual test steps. If parsing fails, start with the field and file location named in the logs. Do not upgrade, switch protocols, and replace routing rules all at once. Change one variable at a time to identify the cause.
From connection checks to routing checks
First confirm the core starts, then check the local listener, and finally verify that the app is actually using the proxy. A webpage loading is only one result; it does not prove that every app or request uses the same outbound. Once the basic connection works, test local network access, rules for specific domains, and DNS behavior. A latency test checks one probe path and does not guarantee that a full application connection will succeed. If timeouts persist, check the system clock, port, firewall, credentials, and transport settings in that order instead of deleting every server based on a single test.
How to read the configuration reference
If you already have a working connection, start with the relationship between outbound tags in outbounds and rules in routing. To troubleshoot local connections, begin with the inbounds listen address, protocol, and port. For domain resolution, look at dns together with the routing resolution strategy. Policy settings are usually not required for an initial setup; change them only when you have a specific need. Examples explain how fields relate, but before combining snippets, check the full configuration structure for your current core and keep a copy of the original settings that work.
Guides and troubleshooting
Recently updated guides
Guides cover practical client tasks. If you run into background disconnections, local network sharing, or startup issues, find the matching symptom and follow the checks in order. Before changing permissions or firewall settings, understand what they affect and keep a way to restore the previous settings.
Android disconnections or traffic bypassing the proxy may be caused by system permissions, background battery restrictions, or app selection. Check authorization before connecting, background operation, and per-app settings in that order to distinguish client configuration issues from system restrictions.
Before sharing, confirm the computer's listen address and actual port, then configure the firewall and proxy on other devices. The guide explains how devices on the same network can connect, what access they have, and which settings to restore when you stop sharing.
If the window closes unexpectedly, first distinguish an interface build issue from a runtime problem, then check folder write permissions and configuration files. Keep your original data and rule out causes one at a time to restore startup instead of clearing all settings.