V2Ray Beginner FAQ: Cores, Clients, Subscriptions & Connection Issues

Answers to 10 common beginner questions about V2Ray cores, clients, subscriptions, routing modes, and what to check when you can't connect.

At a glance

First, understand the difference between a client, a core, and a server. Then import a subscription and test a webpage. This guide is for anyone who has just installed v2rayN, v2rayNG, or v2flyNG. It helps you narrow down problems to subscription retrieval, local traffic handling, the remote connection, or routing rules—without resorting to repeated reinstalls. Desktop steps use the commonly seen Chinese-language v2rayN interface; menu labels may vary slightly by version.

1. What are V2Ray, Xray, and a client?

Think of the configuration interface and the software that actually handles traffic as separate parts. V2Ray is a proxy software project; its core listens on local ports, applies routing rules, and connects to remote servers. Xray is a core in a related but separate technology ecosystem. Its protocol support and configuration details differ, so the names alone don't tell you whether the two are interchangeable.

v2rayN is a desktop client that can manage different cores. v2rayNG is an Android client built around the Xray core, while v2flyNG uses the v2fly core. If you see an error that a configuration field isn't supported, check the core and version actually in use rather than relying on the client name alone.

2. Which should you choose: v2rayN, v2rayNG, or v2flyNG?

Start with your operating system, then check compatibility with your node's settings. Use v2rayN on desktop; on Android, choose between v2rayNG and v2flyNG. Don't apply desktop instructions for setting a system proxy directly to Android: Android typically routes device traffic through a system VPN permission, which works differently.

ClientPlatformFirst check
v2rayNWindows、macOS、LinuxChoose the right operating system and CPU architecture, then check which core is actually in use.
v2rayNGAndroidCheck that Xray supports the node's protocol, transport, and security settings.
v2flyNGAndroidCheck v2fly's configuration support; don't copy settings specific to another core.

Choosing a client: match the full configuration

Check the protocol, transport, and TLS settings first, then choose a client and core that support those fields. Seeing “VLESS” or “VMess” alone isn't enough to determine whether the entire configuration is compatible.

3. What's the difference between a subscription link and a single-node link?

A subscription link is usually a remote URL that the client fetches to get a list of nodes. A single-node share link contains the connection details for one node. A successful subscription update only means the content was retrieved and parsed; it doesn't mean every server in the list is online or that your account still has available data.

Treat your subscription URL like a credential. Don't show its token, node UUIDs, or passwords in public screenshots. When moving to a new phone or computer, don't post the full URL in a public forum for convenience. If it has been exposed, reset it through your provider's account page.

4. How do you add and update a subscription in v2rayN?

Keep your current working configuration, then add a separate subscription group so you can tell its source apart. The steps below use common v2rayN menu names. If your version uses buttons instead, look for subscription group settings. Don't import a subscription URL as a single node.

  1. Create a group

    Open “Subscription Group” → “Subscription Group Settings,” add a group, and enter a recognizable label and the full subscription URL. Check that there are no spaces or line breaks at either end.

  2. Update the subscription

    After saving, open the “Subscription Group” menu and select “Update All Subscriptions (without proxy).” First check that a direct fetch works; don't rely on a proxy update before you have a working proxy.

  3. Check the results

    Review the update message and the number of servers in the group. If it returns zero records, first check whether the URL returns a login page, an expiration notice, or content the client can't parse. Don't immediately delete the whole client.

  4. Select a server

    Select a server in the list, then use the context menu's “Set as active server” option. Once the core has started, enable the system proxy and test a webpage.

Try updating “through a proxy” only if you already have a working proxy and direct access to the subscription URL is blocked. Check the current settings screen for the auto-update interval's units; don't confuse minutes with hours. More frequent updates won't improve server quality.

5. Do you need to enter VMess, VLESS, and TLS settings manually?

Use a share link or subscription generated by your provider whenever possible to avoid manual entry errors. VMess and VLESS are protocol names; TLS is a security layer, and transport is a separate setting. These fields must match the server configuration—they aren't independent speed controls.

For example, if the server requires WebSocket and TLS, entering only the address and UUID may not be enough to connect. For any unfamiliar fields, check whether the core supports them and ask your provider for details. Don't replace an existing node's settings with a full block copied from another guide.

6. What's the difference between a system proxy, TUN, and a local port?

A system proxy sends requests from apps that honor the operating system's proxy settings to a local listening port. TUN uses a virtual network interface to capture traffic, with different coverage and permission requirements. Test your browser using the system proxy first, then consider TUN if needed; this keeps troubleshooting simpler.

127.0.0.1
A loopback address on your device—not a remote node
10808
Example local listening port; check your settings
443
Common TLS service port, not a fixed value

In v2rayN, check the local listening ports and related options under “Settings” → “Parameter Settings.” HTTP, SOCKS, and mixed listeners may be configured differently across versions, so don't assume every port accepts the same proxy protocol. The numbers above distinguish address roles; they aren't default settings for every installation.

7. What do global mode and routing rules control?

The system proxy determines whether an app sends traffic to the client; routing rules determine how traffic received by the client leaves. These are separate layers. “Global” usually means that captured traffic uses the proxy outbound. It doesn't mean every app is captured, and it doesn't enable TUN.

Standard V2Ray/Xray routing rules are evaluated in order; the first match determines the outbound. Domain and IP rules rely on different information, and DNS resolution strategy can affect the result. To get started, use a routing preset provided by the client. If only one site fails, check the logs and adjust the relevant rule instead of permanently sending every destination through the same outbound. For more on routing, see the advanced handbook.

8. Why won't webpages load even though the client says it's connected?

The VPN icon in Android's status bar mainly indicates that the local VPN service is running. On desktop, a running core only confirms that the local process exists. Neither proves that remote authentication, DNS resolution, or the request to the webpage has succeeded. Check the connection from the local end outward rather than repeatedly clicking Connect.

  1. Check locally: Did the core fail to start? Is its listening port already in use? Does the browser have its own proxy extension or manual proxy settings enabled?
  2. Check traffic handling: On desktop, confirm that “Set system proxy” took effect. On Android, make sure the target app isn't excluded from per-app proxying.
  3. Check the remote end: Try another server from the same subscription and check your account's expiration date, data allowance, and node settings.
  4. Check the request: Test two different websites. If only one fails, focus on that destination's DNS, routing, and any server-side restrictions.

A successful latency test doesn't prove that a webpage will load. A TCP connection test, a proxy request test, and a real page-load check don't cover exactly the same steps. Note which tests pass and which fail; that's more useful than simply saying “it won't connect.”

9. How should you interpret common log errors?

Note when the failure happens, reproduce it once, then read the surrounding log entries. An address in an error could refer to the local listener, a DNS server, a remote node, or the final destination; context matters. These are common error snippets, though the exact wording may vary by system and core version.

Error: address already in use

Cause: Another process is already using the address and port the client needs to listen on. Fix: Close duplicate client instances or conflicting programs. If needed, change the local port and update any apps using a manually configured proxy address.

Error: connection refused

Cause: The destination port actively refused the connection, possibly because no service is listening there or the address or port is wrong. Fix: First determine whether the destination in the log is local or remote, then check the relevant listening service and port.

Error: i/o timeout

Cause: A network operation timed out. It could involve DNS resolution, connecting, or waiting for a response. Fix: Use surrounding log entries to identify the stage. Compare another network and another node, changing one condition at a time.

Error: x509: certificate has expired or is not yet valid

Cause: Certificate validity checks failed, possibly because your device clock is wrong or the remote certificate has expired. Fix: Sync your system date and time first. If the error persists with the correct time, ask your provider to renew or fix the certificate.

Before sharing logs, redact subscription tokens, UUIDs, passwords, and other authentication details. Keep the exact error, timestamp, client and core versions, and steps to reproduce. Don't share only the final “failed” line, and don't publish a full configuration containing credentials.

10. What settings should you keep after the first successful setup?

Keep a known-working baseline: one active server, one traffic-handling method, and one routing preset. Change one setting at a time and revert it if something breaks. This makes it easier to tell whether the issue came from a new rule, a DNS change, or the node itself, and avoids turning a working setup into an unrepeatable one.

The connection drops when the screen turns off. Should you import the subscription again?

First check Android's “Settings” → “Apps” → your client → “Battery” for background restrictions. Menu names vary by manufacturer. Allow necessary background activity, then check per-app proxy and system VPN settings. Don't delete the subscription yet.

After restarting my computer, should I enable TUN too?

You don't need TUN just to connect after startup. Start v2rayN, confirm the active server and core are running, then restore your previously working system proxy setup. Consider TUN separately if you need to capture traffic from apps that ignore system proxy settings.

The client stopped working after an update. Can I overwrite the configuration?

First note the client and core versions and back up your current configuration. Compare the new version's settings for listening ports, active server, and routing preset. Don't clear data without a backup, and don't mix core files from different versions.

Download v2rayNChoose a client for your platform