Windows
Use the v2rayN desktop client. The download page offers a cross-platform desktop interface and the classic WPF interface, so choose whichever suits your workflow.
Choose a client for your platform, then follow the Chinese setup steps. The guides focus on subscription imports, routing, and DNS and TUN mode, with setting names matching the client menus.
{
"type": "field",
"domain": [
"geosite:cn"
],
"outboundTag": "direct"
},
{
"type": "field",
"ip": [
"geoip:private"
],
"outboundTag": "direct"
}
Confirm your operating system and processor architecture, then open the download page to select the matching file. The homepage routes you by platform; package details, system requirements, and selection guidance are on the download page.
Use the v2rayN desktop client. The download page offers a cross-platform desktop interface and the classic WPF interface, so choose whichever suits your workflow.
Use the v2rayN desktop client. On the download page, check your chip type in the system information first, then choose the Apple Silicon or Intel installer.
Choose v2rayNG with the Xray core by default; choose v2flyNG when you need the V2Fly core. Most modern devices use the arm64 architecture.
Use the v2rayN desktop client. Choose deb for Debian- and Ubuntu-based distributions, and rpm for Fedora, Rocky Linux, and similar distributions.
Select the issue you are working on first. The panel on the right shows the menu location, key options, and usage boundaries. The examples use actual client menu labels, not latency, node counts, or traffic data.
In v2rayN, open “Subscription groups,” add a group, and enter the subscription URL provided by your service provider. Save it, then select “Update all subscriptions” to write the server entries to the group. Group names are for local organization only; name them by purpose or source. Confirm that the URL is complete before updating, and avoid copying leading or trailing spaces. After the update, select a node and set it as the active server.
A subscription URL and a single-node link use different import paths. Subscription URLs are designed to update multiple nodes centrally, while single-node links are imported from the clipboard. When using multiple subscriptions, grouping them before updating keeps the list organized and makes it easier to configure separate update intervals and filtering rules.
In “Settings → Routing settings,” choose the Bypass mainland China rule so common mainland-China domains, private addresses, and LAN connections use the direct outbound; unmatched requests use the proxy outbound. Rules are matched in order, so specific domain or process rules should come before general rules. Save your changes and restart the core so the new routing object is loaded into the active configuration.
Routing results also depend on how domains are resolved. If a target domain is resolved to an address first, the rules must cover the relevant IP conditions; domain-based matching requires the domain information to be retained. If a site uses the wrong outbound, check the match result in the logs first, then add a targeted rule instead of expanding the entire rule set.
{
"type": "field",
"domain": ["geosite:cn"],
"outboundTag": "direct"
},
{
"type": "field",
"ip": ["geoip:private"],
"outboundTag": "direct"
}
When adding a VLESS node, set transport security to reality and enter the address, port, user ID, flow control, server name, public key, Short ID, and fingerprint according to the server configuration. The server name corresponds to the serverName used in the handshake, and the public key and Short ID must come from the same server configuration. If any field does not match, the connection may terminate during the handshake.
Importing a share link usually fills in these fields automatically, but check that the link was not truncated by a chat app. When entering values manually, do not put a note in the address field or enter the public key as the user ID. If the connection fails, temporarily set the log level to warning or info to determine whether the error occurs during resolution, connection, or handshake.
Browsers and programs that follow system proxy settings usually work with “Auto-configure system proxy.” Some desktop apps, command-line programs, and games do not read the system proxy; consider TUN mode for those cases. TUN creates a virtual network interface and sends more system traffic through the core, so check routing rules, DNS settings, and local network permissions together.
Before enabling it, quit other networking tools that occupy a virtual network adapter, and keep direct rules for LAN and private addresses. If domains resolve but pages will not open afterward, check DNS outbounds, MTU, and route matching separately. During troubleshooting, disable TUN first to verify the regular system proxy, then restore settings one at a time rather than changing several variables at once.
For first-time setup, do three things: install the client for your system, import a subscription or node, and choose a suitable proxy mode. Start with the minimum configuration, confirm the connection works, then adjust routing, DNS, and TUN settings.
Choose v2rayN for desktop systems and v2rayNG for Android devices. Before downloading, check the operating system, processor architecture, and package format. Windows users can choose between the desktop and classic WPF versions; macOS users should choose by chip type; Linux users should select deb or rpm according to their distribution’s package system.
After installation, launch the client normally instead of changing every advanced setting at once. If the system requests network access, notification, or virtual network permissions, decide based on the features you plan to use. For system proxy use, the defaults are usually sufficient; for TUN, handle virtual network interface permissions separately.
For a subscription, create a group under “Subscription groups,” enter the complete subscription URL, and update it. For a single node, copy the share link and use “Import batch URLs from clipboard.” After importing, check the protocol, address, port, and transport security, especially the public key, server name, and Short ID in a VLESS REALITY configuration.
Notes in the client list are only for identifying entries and do not affect connections. When using multiple sources, organize nodes with groups, note prefixes, and filtering rules before setting an update schedule. This keeps the list stable after subscription updates and makes each node’s configuration source easy to identify.
Select a server in the list and set it as the active server, then enable automatic system proxy configuration. Once the browser works normally, enable the Bypass mainland China route if needed. Use the system proxy for regular desktop software; enable TUN only when an app ignores the system proxy or more system traffic needs to enter the core.
If the connection fails, check in order: whether the subscription updated successfully, whether an active server is selected, whether the system proxy is enabled, and whether the core log reports a resolution or handshake error. Change one setting at a time and test again to identify whether the issue is with node parameters, DNS, routing, or the local network.
Clients, cores, and protocols operate at different layers. Understanding how they relate makes software selection and configuration troubleshooting more straightforward.
Project V is an open-source ecosystem built around proxy protocols, transport methods, and routing capabilities. Early V2Ray established its configuration model: inbounds receive traffic from local apps, outbounds connect to destinations or remote services, routing rules choose an outbound for each request, and the DNS module provides a configurable resolution workflow. This structure influenced how later clients organize their interfaces.
V2Fly continues community maintenance of the V2Ray core and related components, commonly referred to as v2fly-core. Xray continues to evolve a similar configuration model and adds and maintains capabilities such as VLESS and REALITY. Neither is a graphical client; both are core programs responsible for protocol handling, transport, routing, and DNS. Choosing “Core type” in a client determines which core interprets and runs the current configuration.
A protocol is not a client either. VMess, VLESS, and Trojan describe how the two ends organize authentication and data; TCP, WebSocket, and gRPC are transport choices; TLS and REALITY handle transport-security parameters. Whether a node connects depends on the client’s core capabilities and an exact match with the server parameters, not merely on the protocol name.
v2rayN is a graphical client for Windows, macOS, and Linux. It manages subscriptions, node editing, the system proxy, routing rules, DNS, TUN, and core switching. The interface maps low-level JSON configuration to manageable settings, making it suitable for desktop environments with multiple subscriptions or detailed traffic routing.
v2rayNG primarily runs on the Xray core, supports importing subscriptions, QR codes, and share links, and uses the system VPN interface to capture selected traffic. When using VLESS, REALITY, or Xray routing capabilities, first confirm that the node parameters are correct and supported by the client core.
v2flyNG uses the V2Fly core and has a workflow similar to other Android clients. It suits users who specifically need v2fly-core behavior or already have V2Fly configurations. The key selection criteria are compatibility between the node protocol, transport method, and target core—not visual similarity between interfaces.
These projects are released as open source, with licenses governing the use, modification, and redistribution of their code. Open source means implementation details, configuration structures, and change histories can be continuously reviewed by the community, while mature cores can be reused by different clients. For downloads, still start from the current release files on this site’s download page and choose the package matching your system and architecture.
Client updates, core updates, and routing-database updates are three separate things. Client updates affect the interface and management features; core updates affect protocols and runtime behavior; geoip and geosite updates affect the scope of rule matching. When troubleshooting, verify these layers separately rather than mistaking an outdated database for a client failure.
When moving between devices, preserve subscription sources and necessary custom routes rather than relying on a temporary node list. Subscriptions change with the server, while routing rules reflect personal usage needs. After updating subscriptions, check that the active server still exists; after changing DNS or TUN, record where the change was made so it can be reverted if problems occur.
Most issues come from confusing the layers between the client, core, node parameters, and system network settings. The answers below provide the shortest checking path; for full procedures, continue to the quick-start and advanced guides.
These articles focus on specific settings and failure symptoms, starting with where to check and then explaining how the configuration pieces relate.
Learn why DNS requests may still use the local network even when the proxy is connected, with cross-checks using browser tests, command-line queries, and client logs. The article also explains the setup order for remote resolution, DNS outbounds, and TUN mode.
Read the full articleLearn how to create separate groups for different subscriptions, filter servers by keyword, and set update intervals and upstream proxies for each group. Stable note prefixes and filtering rules keep long server lists readable, searchable, and maintainable.
Read the full articleUnderstand what geoip and geosite data match, learn common tags such as geosite:cn and geoip:private, and follow steps for in-client updates, file replacement, and troubleshooting common errors.
Read the full article