v2rayN Setup GuideImport a Subscription and Verify the Connection
Four steps: import a subscription link, choose a proxy mode, start the connection, and verify it works. Desktop uses v2rayN and Android uses v2rayNG; the interfaces differ, but the features map one to one, so just follow the section for your device.
The desktop v2rayN is a windowed program: a menu bar at the top, the server list in the middle, and a status bar with two rows of drop-downs at the bottom. The Android v2rayNG is a phone app: a drawer menu in the top left, the node list in the middle, and a round connect button in the bottom right. Feature names line up on both sides — Subscription Settings, Routing Mode, and latency tests all have counterparts. Each step below gives both paths, so just follow the one for your device; you do not need to read both.
Before You Start
Two things to prepare
This guide starts from the point where the client is already installed and you have a subscription link in hand. If either is missing, sort that out first before continuing.
Client: one is enough
Desktop uses v2rayN, a single program that covers Windows, macOS, and Linux; Android uses v2rayNG. The configuration logic is the same on both sides, and every step on this page gives two paths — pick the one that matches your device. The download page lists installer links, version notes, and system requirements by platform.
The subscription link comes from your service provider and is a full address starting with https. When you copy it, do not pick up extra spaces or line breaks. The client uses that address to pull the node list on its own; when nodes change, just update the subscription again instead of adding them one by one. The link usually carries a string of parameters — copy the whole thing.
Each step is written as click here, see this, do that next. Confirm each checkpoint before moving on; if you get stuck, check the common sticking points at the end of this page, then the troubleshooting guide.
01
Import a Subscription
Hand the subscription link to the client
Importing a subscription comes down to one thing: give the client the URL from your provider and let it pull the node list. The entry points have different names on desktop and Android, but the order is the same — add the subscription, update it, check the node list. Adding nodes by hand also works, but you have to redo it every time they change, so this guide sticks to subscriptions.
Desktop: v2rayN
Open the v2rayN main window; the server list is empty on first run. In the top menu bar, open Subscription and choose Subscription Settings — a subscription management window appears. Click Add, put a name you will recognize in the Remarks field (your provider's short name, for example), paste the subscription link into the Address (URL) field, check that there are no extra spaces, and click OK to save. The remark only affects how the entry is displayed; it has no effect on whether the nodes work.
Subscription→Subscription Settings→Add→OK
Back in the main window, open the Subscription menu again and choose Update Subscription; the client starts a fetch right away. If that fetch fails, try Update Subscription (via proxy) from the same menu — the only difference is that it fetches the subscription through the current node, which helps when the subscription address is hard to reach directly. When the update finishes, the server list fills with nodes, one entry per node in the subscription, each showing the node name, protocol, and address with port.
The example above shows the shape of a subscription link; the domain is fake and cannot be used. Real links come from your provider — copy the whole thing, not just the part before the question mark.
Android: v2rayNG
Open v2rayNG, tap the menu icon in the top left to open the drawer, and go to Subscription Settings. Tap + in the top right to create a subscription, put your provider's short name in Remarks, paste the subscription link into URL, make sure the subscription is enabled, then save and return to the main screen. Next, tap the three-dot menu in the top right and choose Update Subscription; wait for it to finish.
Once entries appear in the node list on the main screen, long-press any one of them to run a latency test from the pop-up menu. This step only confirms the node data actually arrived; the result does not affect anything that follows, so do not worry if the numbers look bad — step 4 covers how to read them.
The node list is not empty, the number of entries matches the subscription, and node names are readable. Meet all three and you can move on. If the list is still empty, first check whether the subscription link was broken across lines by a chat app or picked up extra spaces, then see the subscription failure section in the troubleshooting guide.
02
Choose a Mode
Decide which traffic goes through the proxy
The mode decides where traffic goes: what passes through the proxy and what connects directly. On desktop, the row of drop-downs at the bottom of the main window includes Routing, which is the mode selector. On Android, the same set of options lives under Settings in the drawer menu and is called Routing Mode. Both offer three tiers with similar meanings; wording may differ slightly between versions, so match by meaning.
Mode
Traffic path
When to use it
Global
All traffic is forwarded through the proxy
Checking whether a node works, or when you temporarily need everything proxied
Bypass Mainland / Bypass LAN and Mainland
Mainland domains and IPs connect directly; everything else goes through the proxy
Everyday use: mainland China and overseas traffic no longer slow each other down
Direct (no proxy)
Everything connects directly; the client forwards no traffic
For comparison testing: work out whether the problem is in the proxy chain or the local network
For everyday use, pick Bypass Mainland or Bypass LAN and Mainland: sites in mainland China connect directly at the same speed as with no proxy, while overseas sites go through the node. That way you never have to switch modes back and forth, and mainland traffic does not take a detour. On Android, if you also want LAN devices (printers, NAS, and the like) to stay direct, keep the Bypass LAN half of the name.
When you need to troubleshoot, switch the mode to Global temporarily and open an overseas site. If it loads, the node itself works and the problem is most likely in how the routing rules match; if it does not load, narrow the problem down to the node or your local network. Switch back to split routing once you are done — do not stay on Global long term.
Desktop: Routing drop-down at the bottom/Android: Settings → Routing Mode
Re-confirm the status after switching modes
After you change the Routing drop-down on desktop, the client rebuilds the core configuration for the new rules and the connection drops briefly. On Android, disconnect and reconnect once after changing the routing mode so old rules are not still in effect. Writing custom rules and the matching order for domains and IPs is advanced material — continue with Routing Rules in Practice on the blog.
03
Start the Connection
Pick a node and hand over traffic
This step does two things: pick a node as your outbound, then let the system or the phone hand traffic over to the client. Desktop uses the system proxy and Android uses the system VPN interface; neither requires router changes or extra components.
Desktop: v2rayN
Click a node in the server list and it becomes the current outbound; most versions also let you double-click to set the active server, and the right-click menu has the same option. Then find the System Proxy drop-down and switch it from Do Not Change System Proxy to Automatically Configure System Proxy — this tells the operating system to send traffic from browsers and other programs to the local port the client is listening on.
Browsers and other programs → local listening port → client core → remote node
Once the switch takes effect, a check mark appears next to the menu item and the tray icon goes from grey to bright. Tray colors differ between versions, so judge by the check mark in the menu and the output in the log window rather than the icon color. To disconnect temporarily, switch System Proxy back to Do Not Change System Proxy; your node configuration is unaffected.
Android: v2rayNG
Back on the main screen, tap the round button in the bottom right to start. On first launch the system shows a VPN authorization dialog — tap allow. This authorization is a standard Android flow that lets the client take over app traffic; it does not require root. Once it starts, a persistent notification appears in the notification bar and the button and status text on the main screen change to match.
To stop, tap the round button again or disconnect from the notification. Note that only one VPN-type app can be active at a time: if you have other tools of the same kind on the phone, stop them first, otherwise the two will fight over the interface and the connection state will flip back and forth.
Desktop: System Proxy → Automatically Configure System Proxy/Android: round button in the bottom right
The two takeover methods compared
Item
Desktop: v2rayN
Android: v2rayNG
Takeover method
System proxy settings
System VPN interface
How to start
Switch the System Proxy drop-down
Tap the round button in the bottom right
First-time authorization
None
System VPN authorization dialog
Where the status shows
Tray icon and menu check mark
Persistent notification in the notification bar
How to stop
Switch back to Do Not Change System Proxy
Tap the button again, or disconnect from the notification
Checkpoint
On desktop, the tray icon is lit and System Proxy is still set to Automatically Configure System Proxy; on Android, a status notification from the client appears in the notification bar. If you only see one of the two, fix the other before moving on.
04
Verify It Works
Confirm traffic really goes through the proxy
Verification has three layers: whether the outbound changed, whether split routing behaves as expected, and whether the connection is stable. Pass all three and the setup is done. If any layer fails, work back through the order below — and do not change several settings at once.
Outbound check
Open a browser and visit a page that shows your current outbound IP. Look once before connecting and once after: if the location changes from your own to the node's, traffic is really going through the proxy. All you need here is whether the location changed — no need to record exact values or compare with anyone else's results, since different nodes and different times give different answers.
Split routing check
In Bypass Mainland mode, open a site in mainland China; the speed should be close to what you get with no proxy. If mainland sites actually get slower or fail to load, split routing is not working — go back to step 2 and check whether the routing mode is right and whether you reconnected after switching. When both sides behave, the line between direct mainland traffic and proxied overseas traffic is holding.
Logs and latency
On desktop, open View and then Log; a healthy connection writes three kinds of records in time order — startup, inbound listening, and outbound connections. If you see error or failed keywords, copy the whole block and use the log chapter of the troubleshooting guide to pin it down; common error meanings are covered in How to Read the Runtime Log on the blog. On Android, long-press a node to test latency; that number only reflects the handshake round trip, not real download speed, and the differences between the three values are explained in Comparing the Three Latency Numbers.
Checkpoint
The outbound location changed, mainland sites are at normal speed, and the client shows it is running. Meet all three and the four-step flow is done. If something does not check out, find the matching chapter in the troubleshooting guide by symptom — no internet access, node timeouts, slow speeds, and system proxy not taking effect each have their own section.
Common Sticking Points
Where the four steps most often stall
The four items below cover the most frequent cases in reader feedback; for anything else, go straight to the matching chapter of the troubleshooting guide.
Subscription updated successfully, but the node list is still empty?
First confirm the subscription link is one complete URL — not broken across lines by a chat app, with no extra spaces at either end. On desktop, try Update Subscription (via proxy) once more; on Android, check whether that subscription is enabled. If it is still empty, paste the link into your browser's address bar and open it: if it returns content, the link itself works and the problem is on the client side.
The browser cannot open pages on desktop, but the client says it is running?
First check whether the System Proxy drop-down is still on Do Not Change System Proxy — the core running does not mean system traffic has been taken over. Next, check whether other proxy software is also changing system proxy settings; the two will overwrite each other. Finally, switch the routing mode to Global temporarily and try again: if pages load, the problem is in how routing rules match; if not, look at the logs and node status.
Does Android ask for VPN authorization on every launch?
The authorization dialog should only appear on first launch or after the system clears the authorization record, so one allow is normally enough. If you have to tap it every time, battery optimization is probably killing the client in the background: add v2rayNG to the unrestricted list in your system's battery settings, allow background running, and watch it for another round.
The settings on desktop and Android do not match up — how do I map them?
The two use different naming systems, but the features line up one to one: Subscription Settings on desktop matches Subscription Settings on Android, Routing at the bottom of the desktop window matches Routing Mode in Android settings, and System Proxy on desktop matches the VPN authorization you see when starting on Android. Look by function, not by wording; if you are unsure, go back to the interface differences section at the top of this page.
Go Further
What to read after the four steps
This page only covers the shortest path — connect and get online. Routing rules, log troubleshooting, and term details each live in the three places below; open them when you need them.