1. What Is v2rayN, and How to Choose a Core and Protocol
v2rayN is an open-source, free desktop proxy client for Windows/macOS/Linux. It doesn't implement proxy protocols itself — instead, it calls an underlying "core" program (like Xray-core or sing-box) to handle the actual encrypted communication, while the client handles node management, subscription syncing, routing, and the GUI. It's currently one of the most widely used V2Ray-family clients on desktop.
An enhanced implementation derived from V2Ray, with the most mature and stable support for protocols like VMess, VLESS, Trojan, and Reality. It's v2rayN's default core — stick with it unless you have a specific reason to switch.
Iterates faster, often supporting new protocols and rule sets sooner. If a particular protocol has connection issues under the Xray core, try switching to sing-box.
Major protocols supported by the client and their characteristics:
A native V2Ray-family protocol, typically paired with TLS or Reality encryption, with strong resistance to interference — one of the most widely used protocols today.
Traffic patterns mimic normal HTTPS requests for good camouflage, with simple configuration — usually paired with a TLS certificate.
A long-standing, simple, low-overhead protocol still used by many established node providers.
2. Download & Installation
Before installing, confirm your OS version and hardware architecture — picking the wrong build is the most common installation mistake beginners make:
Download the archive matching your architecture (x64/x86/ARM64), extract it to a folder with no special characters or spaces, and double-click v2rayN.exe to run — no installer needed. A config file is generated in the same folder on first launch.
Download the dmg matching your chip (Intel/Apple Silicon) and drag it into the Applications folder. If it says "damaged, can't be opened" on first launch, that's because the installer isn't signed by Apple — run xattr -cr /Applications/v2rayN.app in Terminal to clear the quarantine flag, then reopen it.
Extract the archive matching your architecture, then make the main program executable (chmod +x v2rayN). Some distros need additional GTK dependencies to display the GUI properly.
If double-clicking does nothing or the app crashes, it's usually the wrong architecture (like running x86 on a 64-bit system) or a folder path containing special or non-ASCII characters. Re-download the right build and move it to a folder with a simple path, then try again.
See the full list of versions (with installers and direct links for every architecture) at the download center.
3. Interface Walkthrough
The main window is organized into a few key areas — getting familiar with them will make configuration much smoother:
Shows every imported node, with support for grouping by subscription and sorting by latency or name. Double-click a node to connect, or right-click to test speed, edit, delete, or move it between groups.
"Servers" manages nodes and subscriptions, "HTTP/Socks" shows local proxy ports, "Routing" configures routing rules, and "Settings" adjusts the core, language, startup options, and other global settings.
Quickly switch between "Don't change system proxy," "Auto-configure system proxy (PAC)," "Global mode," and "TUN mode," with the tray icon reflecting the current state.
Shows real-time logs and request records. When something goes wrong, error details in the log (timeouts, certificate errors, DNS failures, etc.) can quickly point you toward the cause.
The bottom of the window shows real-time upload/download rates and total data used, so you can keep an eye on your current node's connection at a glance.
In Settings, you can bind global shortcuts for common actions like "show/hide window," "toggle system proxy," or "switch to next node" — no need to bring the window into focus first.
4. Subscription Imports
A subscription is the main way to get and maintain your nodes: the subscription URL returns a Base64-encoded set of share links, and the client periodically fetches it, decodes it automatically, and replaces the entire node list in that group — without duplicating entries or requiring manual cleanup.
-
Open Subscription Settings
Click "Servers" → "Subscription Settings" in the top menu to open the subscription group manager, which lists every subscription you've added along with its status.
-
Add a Subscription URL
Click "Add" to create a new row, paste in the full subscription URL, and save — you can give it a custom name to distinguish multiple sources. Some subscriptions require specific HTTP headers to fetch correctly; you can set those in the "User-Agent" or custom header fields as your provider instructs.
-
Update the Subscription
Back in the main window, click "Servers" → "Update Subscription" to automatically fetch and populate the latest node list. Each subscription appears as its own group in the server list without interfering with others, and you can add multiple subscriptions from different sources at once.
To reduce day-to-day maintenance, consider enabling these automation options in the subscription settings:
Set a fixed update interval (like every 24 hours), and the client will fetch the latest nodes in the background automatically. Don't set it too frequently, though, to avoid triggering your provider's rate limits.
After each update, automatically test latency on new nodes, sort by latency, and remove any that fail the speed test — keeping your list clean and usable at all times.
5. Manually Adding Nodes
If you only have a share link or QR code for one or a few nodes — not a full subscription — you can skip subscriptions and add them directly:
Copy a share link starting with vmess://, vless://, trojan://, or ss://, then right-click the server list and select "Import from Clipboard." You can paste multiple links at once for a batch import.
Select "Import from Screenshot," then select the screen area containing the node's QR code — it's recognized and added automatically, handy when a provider only offers a QR code image.
Right-click and select "Add Custom Server," then fill in the address, port, protocol type, encryption method, and transport settings one by one — ideal when you need precise control over every setting.
Save multiple share links, one per line, in a text file, then use "Import from File" to add them all at once — handy for migrating a large number of nodes at once.
6. Connecting & Testing Speed
Right-click the server list and choose "Test All Latency" (TCPing — fast, tests only port connectivity) or "Test All Real Connections" (sends an actual request, closer to real-world results, but slower). Once done, double-click the node with the lowest latency to connect.
You can choose how to connect from the system proxy menu — each mode fits a different scenario:
The most common option — it writes system-level proxy settings automatically, which most browsers and apps follow, and reverts automatically when you quit the client.
Automatically decides whether each request needs the proxy based on routing rules, with no manual configuration needed, balancing speed with reliable access across all your sites.
Takes over all traffic at the network adapter level, ideal for command-line tools, games, or other apps that don't respect the system proxy setting — see the next section for details.
7. Routing Rules & TUN Mode
Routing rules decide whether each network request should go "direct," through the "proxy," or be "blocked" — a key feature for using a proxy tool more intelligently and efficiently. Rules are matched top to bottom, and the first match wins, with no further matching afterward.
In "Routing Settings," you'll find a built-in "Bypass Mainland China" preset (based on the GeoIP:cn and GeoSite:cn databases) that keeps mainland Chinese sites and IPs on a direct connection while everything else goes through the proxy. If that's not the split you need, skip it and use a global proxy mode instead, or write your own custom rules for the domains and IP ranges you actually want to exclude — either way, only sending the traffic you need through the proxy is faster and more data-efficient.
Add custom rules by domain (domain:example.com), domain keyword, or IP range (geoip:private) — custom rules usually need to be placed before the built-in rule sets to avoid being intercepted early.
Optionally load a community-maintained ad-blocking rule set to intercept matching domain requests directly, reducing ad loading and blocking some tracking requests.
System proxy only applies to apps that follow that setting — command-line tools and some games may bypass it. TUN mode takes over all traffic (including UDP) at the network adapter level, working with routing rules for true global proxying.
Before enabling TUN mode, note: on Windows, you'll need to run the client as an administrator to create the virtual adapter; the system may show a security prompt on first launch — just allow it. If some apps lose internet access after enabling it, try restarting the client or temporarily switching back to system proxy to check for a driver conflict.
8. Common Settings
In the Settings window, here are a few options worth adjusting to fit your habits:
Automatically runs the client when the system starts — handy if you want to stay connected long-term. Pair it with "Auto-connect to last node on startup" for a fully hands-off setup.
Update the Xray/sing-box core version separately from "Check for Updates," without waiting for a full client update — getting protocol-level fixes and features sooner.
Supports Simplified Chinese, Traditional Chinese, English, and other languages — switch anytime in Settings without reinstalling.
Customize the local HTTP/SOCKS proxy listening port for other tools that don't support system proxy (like some command-line programs) to use manually.
FAQ
Can subscription nodes and manually added nodes be used together?
Yes. v2rayN's server list supports subscription nodes and manually added nodes coexisting without interfering with each other — just switch between them in the list, and you can even organize nodes from different sources into separate groups with their own update settings.
How do routing rules relate to TUN mode?
Routing rules decide which traffic goes through the proxy and which connects directly, and they apply to both system proxy and TUN mode. TUN mode simply extends coverage to more types of traffic (including apps that don't follow system proxy settings, UDP traffic, etc.) so routing rules can process them too — the two are complementary, not alternatives.
Why do some apps lose internet access after switching to TUN mode?
Certain security software, VPN clients, or virtual adapter drivers may conflict with TUN mode's virtual adapter. Try restarting the client, updating your virtual adapter driver (like WinTun), or temporarily switching back to system proxy to rule out a conflict before troubleshooting further.
How do I keep certain sites from going through the proxy?
In the routing settings, you can select the built-in "Bypass Mainland China" rule set (a preset based on GeoIP:cn and GeoSite:cn specifically for mainland Chinese domains and IPs), or add your own direct-connect rules by domain or IP for whichever sites you want to keep off the proxy — everything else will still be routed through it.
Which core should I choose: Xray or sing-box?
Both handle everyday use just fine — Xray has more mature, stable support for VMess/VLESS/Reality, while sing-box updates more frequently and adds new protocols and rule sets faster. Stick with the default core unless you have a specific need, and try switching cores if a particular protocol has connection issues.
What's the priority order for custom routing rules?
Routing rules are matched top to bottom, and the first match wins — matching stops there. That's why custom rules usually need to be placed before the built-in rule sets, so they aren't intercepted by a broader rule higher up the list.