For first-time V2Ray users, the challenge is rarely a complicated configuration key. More often, clients, cores, subscriptions, nodes, and system proxies appear all at once. The 10 questions below follow the practical setup sequence. Examples use the common v2rayN 7.x and v2rayNG 1.10.x interfaces. Button locations may differ between minor releases, but the underlying checks and configuration relationships remain the same.
This guide is for users who have just received a subscription link but have not completed their first connection. By the end, you will know how to choose a client, distinguish subscriptions from single-node links, update and connect, and tell apart system proxies, global proxy mode, split routing, speed tests, and configuration backups.
1. Choosing a client and core
Question 1: Who should use v2rayN, v2rayNG, or v2flyNG?
A client is the program that manages nodes, updates subscriptions, switches routes, and provides the user interface. The core is the network component that parses protocols such as VMess and VLESS and establishes connections. They are different: the client provides the controls, while the core handles the connection.
For Windows desktops, v2rayN is usually the best choice. It suits users who need a system proxy, rule-based routing, subscription groups, and log-based troubleshooting. On Android, choose v2rayNG or v2flyNG. v2rayNG uses the Xray core, so nodes using VLESS, REALITY, and XTLS Vision are commonly imported here first. v2flyNG uses the v2fly core and is better suited to users with existing VMess, VLESS, or standard V2Ray configurations who want to stay within the v2fly ecosystem.
Recommended setup: share one subscription between desktop and Android
Desktop (v2rayN)
- Uses the common v2rayN 7.x interface
- Go to “Settings” → “Parameter Settings” → “Core Type” to verify the core
- Control traffic with the system proxy and routing rules
Android (v2rayNG or v2flyNG)
- Import the same valid subscription link
- Select a specific node before connecting
- Enable per-app proxying when needed
The subscription provider determines its contents. When both devices use the same subscription, node names are usually consistent, but local routing and app coverage must be configured separately.
Question 2: Are V2Ray, Xray, VMess, and VLESS the same thing?
No. V2Ray and Xray can be understood as core implementations and their configuration ecosystems; VMess and VLESS are protocols used for outbound connections. Node details may also specify a transport and security layer, such as TCP, WebSocket, gRPC, TLS, or REALITY. The same protocol does not mean node parameters are interchangeable.
When importing a VLESS node, verify at least the server address, port, user identifier, transport, and security type. REALITY nodes usually also include a server name, public key, short ID, and fingerprint. A client may create an entry with a missing field, but the connection log can then show a handshake failure, connection reset, or timeout.
2. Finding and correctly importing a subscription link
Question 3: What is a subscription, and does the client provide nodes automatically?
A subscription is typically a URL generated by a node service’s management panel. After the client accesses it, the URL returns a set of node configurations. v2rayN, v2rayNG, and v2flyNG are connection tools: they cannot create remote servers from nothing, and installing them does not automatically produce usable nodes.
Get the subscription URL from the management page of the service you actually use. When copying it, keep the full scheme, path, and query parameters. Automatic line wrapping in a chat app, a trailing space, or copying only up to the question mark can all cause updates to fail. Do not mistake a management-page URL, payment-page URL, or single server address for a subscription.
-
Copy the complete URL
Use the copy button on the subscription management page. Make sure there are no spaces at either end and that the URL has not been split across two lines.
-
Create a subscription group
In the v2rayN main window, open “Subscription Groups” → “Subscription Group Settings” → “Add”, enter an alias, and paste the subscription URL.
-
Update nodes
After saving, open “Subscription Groups” → “Update All Subscriptions (without proxy)”. If the local network cannot reach the subscription URL directly, switch to updating through the proxy.
-
Select a server
Double-click the target entry in the node list, or right-click it and choose “Set as Active Server”. Confirm that the active row has changed.
-
Verify the core type
If adjustments are needed, go to “Settings” → “Parameter Settings” → “Core Type” and choose a core that can parse the fields used by the node protocol.
Question 4: What is the difference between a Base64 subscription, vmess://, and vless://?
vmess:// and vless:// usually represent a single share link. Each import adds one node. A subscription URL is an updateable endpoint whose response may be Base64-encoded or use a structured format. Base64 is an encoding method, not a proxy protocol, and it does not indicate better connection quality.
Do not judge by URL length alone. A single-node link usually starts clearly with vmess:// or vless://; subscription URLs commonly use https:// and belong in the subscription management section. If you paste a subscription URL into “Import Share Links from Clipboard”, the client may report that it cannot recognize it. Conversely, placing a single-node link in a subscription group will not produce a node list that can update normally.
Subscription URL → Subscription Group → Update Subscription → Generate multiple nodes
vless:// → Import from Clipboard → Generate one VLESS node
vmess:// → Import from Clipboard → Generate one VMess node
3. Why proxy mode still needs configuration after connecting
Question 5: Why does a webpage still use the direct network after I click Connect?
A successfully started core only means that the local proxy port is listening. It does not mean every app will automatically use that port. In v2rayN, also check the system proxy status in the system-tray menu. A common approach is to select “Automatically Configure System Proxy”, which sends browsers and desktop programs that follow system proxy settings to the local listener.
The local ports are determined by the client configuration. A common SOCKS listening port is 10808, while HTTP may use 10809; other versions and user settings may use different numbers. When configuring a browser or app manually, the protocol and port must match. Do not enter a SOCKS port in a field that accepts only an HTTP proxy.
Question 6: What is the difference between global proxy mode and split routing?
Global proxy mode generally sends as much traffic entering the client as possible through the current proxy outbound. It is useful for an initial check: if global mode works but rule mode does not, the problem is more likely in the routing rules than in the node handshake. Global mode does not mean every operating-system process must use the proxy; programs that ignore system proxy settings still require separate configuration.
Split routing means the core uses domain, IP, port, or process rules to decide whether traffic connects directly, uses the proxy, or is blocked. For example, local sites can connect directly, target sites can use the proxy, and LAN addresses can remain direct. Beginners should verify global mode first, then switch to rule mode so node parameters and route matches are not investigated at the same time.
- First test: Select a node, start the core, enable the system proxy, then use global mode to verify basic connectivity.
- Daily use: Switch back to rule mode and check that the routing configuration includes direct, proxy, and LAN exceptions.
- Verify the result: Visit an IP lookup page and compare the results before and after switching modes. Then test a site that should connect directly.
4. Evaluating speed tests, latency, and node availability
Question 7: Why is a webpage still slow when the latency number is low?
A latency check, a real connection test, and a download-speed measurement are not the same thing. Testing only the response time to a server address does not cover protocol handshakes, TLS or REALITY negotiation, remote egress quality, or the target site’s response. An entry showing 45 ms may be completely unusable because its handshake fails, while a 120 ms node may load webpages more consistently.
A more reliable approach is to run a real connection test that sends an actual request through the node. Afterward, perform a manual check: connect to the node, open the target webpage, refresh it two or three times, and inspect the core log for persistent timeouts or reconnects. Choose nodes based on handshake success, time to first byte, sustained speed, and packet loss together.
Question 8: Why do all nodes time out after a successful subscription update?
“Update successful” only confirms that the client received the subscription content; it does not prove that every remote node is currently usable. If all nodes time out, first check the device’s system clock. TLS-based connections rely on accurate time, and a large discrepancy can cause certificate or handshake verification to fail. Then check the local firewall, whether the core has started, and whether another process is using the port.
Subscription update request timed out?
First confirm that the URL is complete. If you already have a usable node, choose “Update through Proxy” from v2rayN’s subscription update menu. If no usable node is available, switch networks and try updating without a proxy again.
Connected successfully, but webpages will not open?
Check that the system proxy is enabled. Then go to “Settings” → “Parameter Settings” to verify the local listening port and make sure the browser is not retaining a different manually configured proxy.
Only one node keeps timing out?
Update the subscription again and compare that node’s address, port, transport, and security fields. If other nodes work normally, first suspect the individual node’s status or a change in its parameters.
Android connects, but the desktop does not?
Compare the node update times and core types on both devices. On the desktop, go to “Settings” → “Parameter Settings” → “Core Type”, then check the log for unknown fields or handshake errors.
All speed tests show failure?
Connect directly to one node and verify it with a webpage first. If the log reports that the local port is already in use, close duplicate client processes or change the listening port to an unused number, then restart the core.
If one node fails on both Windows and Android while other nodes in the same subscription work, that node is probably unavailable. If all nodes fail on only one device, focus on that device’s time, network permissions, local ports, core type, and proxy status instead of repeatedly deleting the subscription.
5. Updating the client, saving settings, and recovering from failures
Question 9: Will updating the client delete my subscription and routing settings?
Whether settings are preserved depends on the update method and configuration directory. v2rayN stores nodes, subscription groups, routes, and interface settings in local data files. If you extract a new version into a completely new directory and run it without migrating the data, the new directory naturally will not contain the old settings. Before an in-place update, exit the running client and save a copy of the original directory.
A safer process is to record the current version, core type, local ports, and routing mode, then back up the entire program data directory. After updating, check the subscription groups and active server first; do not delete the old directory immediately. Once the new version can update subscriptions, start the core, and load routes successfully, handle the old files.
- Exit the client and confirm in the task area that the main program has ended.
- Copy the original program directory or a configuration backup exported by the client.
- Record the SOCKS and HTTP listening ports and the current system proxy mode.
- Start the new version and verify the subscription groups, routing rules, and Core Type.
- Update the subscription once, connect to a node, inspect the log, and test webpage access.
Question 10: What is the most effective troubleshooting order?
First identify which layer contains the problem. Layer one is the subscription: can it update, and does it return nodes? Layer two is the configuration: are the address, port, protocol, transport, and security fields complete? Layer three is the core: can it start, and is the local port listening? Layer four is the system proxy and routing: is app traffic entering the client? Only then investigate the remote node and target network.
Logs are more useful than repeatedly clicking Connect. If you see “port already in use”, handle the local listener first. If you see “cannot resolve host”, check the address and DNS. For a handshake failure, verify the system time, security type, and related fields. Only when the remote address continues to time out should you compare results across other nodes, networks, and devices.
subscription
Confirm the subscription layer first
Check that the URL is complete, the update returns nodes, and the subscription is still active.
outbound
Then confirm the node layer
Verify the server address, port, user identifier, transport, and security parameters one by one.
inbound
Check the local listener
Confirm that the core is running and that 10808, 10809, or a custom port is not occupied by another program.
routing
Check split routing last
Use global mode to verify the node first, then restore rule mode and see which rule matches the target domain.