V2Ray Beginner FAQ: 10 Answers, from Choosing a Client to Your First Connection

Get clear answers to 10 common beginner questions about V2Ray and Xray, client choice, subscriptions, system proxy vs. TUN, and how to verify your connection.

Quick overview

For new users ready to install a client but still sorting out cores, nodes, and subscriptions. Choose a client for your device, then import server settings obtained through a legitimate source. On desktop, start with the system proxy; once you’ve confirmed requests are using the selected node, consider TUN and routing rules. This guide focuses on v2rayN for desktop, with a separate note for Android. Port numbers are examples—check your own settings.

1. What’s the difference between V2Ray, Xray, and a client?

V2Ray usually refers to a proxy project and its core software; v2fly is the community project that maintains V2Ray. Xray is a related core project. The two share a history, but their features and configuration support have since diverged. The core establishes connections, handles protocols, and applies routing rules. A client provides the interface for importing subscriptions, choosing nodes, changing settings, and viewing logs.

Installing v2rayN doesn’t mean you’re limited to a single core. It can manage configurations supported by different cores, but whether a connection works depends on the core in use, the node’s protocol, and its parameters. Don’t assume a node will work just because “V2Ray” appears in the client’s name.

For a VLESS + REALITY configuration, first make sure the client’s core supports it. Don’t just change the protocol dropdown on a VMess configuration to VLESS. For definitions of these terms, see the glossary.

2. Which client should I install on desktop or Android?

Start with your operating system, then check what the server configuration requires. v2rayN is a good starting point on desktop; on Android, choose between v2rayNG and v2flyNG. The recommendation here is for desktop beginners—it doesn’t mean other clients are unsuitable or that one core is faster on every network.

v2rayN: Get started on desktop

Recommended

For Windows, macOS, and Linux desktops. Manage subscriptions, check server settings, and view core logs in one place. When installing, make sure the package matches your device’s architecture and package type.

Best for: First-time desktop setup and managing desktop subscriptions

v2rayNG: Android and Xray

Import a subscription or a single share link on Android. If you need an Xray-based configuration, first check that your installed version and its bundled core support all the parameters provided by your service.

Best for: Everyday Android use and Xray node configurations

v2flyNG: Android and v2fly

For configurations that use the v2fly core. Compatibility depends on the node’s protocol and transport; don’t assume every link accepted by another client will work unchanged.

Best for: Android devices and configurations that specifically require v2fly

Find installers on the client downloads page. Before choosing x64 or arm64 for a computer, check your system information. If you’re unsure which architecture your Android device uses, see the universal build notes on the downloads page. Don’t copy a desktop installer to an Android device and try to run it.

3. Can I connect as soon as the client is installed? Where do subscriptions come from?

No. A client is just a connection tool; you also need a working server and its connection settings. Subscriptions are usually provided by a service provider or a configuration system for a server you manage yourself. The client installers on this site don’t come with nodes. Make sure your source is trustworthy, and follow the laws and network-use rules where you live.

4. Do I need to change the node settings myself?

After importing a configuration, keep the provider’s settings as they are to start with. The remote port isn’t necessarily 443, and you shouldn’t toggle TLS just because it “looks more secure.” Parameters such as the domain, SNI, WebSocket path, and REALITY public key each serve a purpose. A mismatch between client and server can cause the handshake to fail.

For your first setup, avoid assembling parameters by hand. If some fields are blank after import, check whether they’re required for that node, then verify the link format and client compatibility. After a server upgrade, refreshing the subscription is usually more reliable than guessing the new parameters.

5. How do I add a subscription and select a node in v2rayN?

The steps below use common v2rayN menu names. Button locations may change between versions, and subscription update options may include extra notes in parentheses. Follow the names shown in your menus. First try updating without a proxy. Use the option to update through a proxy only if you’ve confirmed the subscription URL requires one.

  1. Launch the client

    Install or extract the package as appropriate, then open the v2rayN main program. For the first run, leave TUN off so you don’t have to troubleshoot both the virtual network adapter and the node connection at once.

  2. Add a subscription group

    Go to “Subscription Group” → “Subscription Group Settings” and add a group. Enter a recognizable name under “Alias,” paste the full subscription URL under “Address,” and save.

  3. Update the subscription

    Under “Subscription Group,” select “Update All Subscriptions (without proxy).” Check the result and see whether new nodes appear in the list. If the update fails, don’t immediately delete and recreate the group.

  4. Set an active node

    Select a node in the server list, right-click, and choose “Set as active server.” Confirm that the active server name has changed; a latency test alone doesn’t do this.

  5. Set the system proxy

    From the main window or tray menu, go to “System Proxy” and choose “Set system proxy automatically.” Leave the current routing settings unchanged, then use a browser to visit an HTTPS page that should go through the proxy.

On Android, add a URL under “Subscription Group Settings” in v2rayNG, then use “Update Subscription” to fetch nodes. You can also use the Add menu to import a single share link from the clipboard. Select a node and start the service. The first time Android asks to authorize a VPN connection, check the app name before confirming.

6. What’s the difference between a system proxy and TUN?

A system proxy tells applications they can send requests to a proxy address; only applications that follow this setting will use it. TUN uses a virtual network adapter to receive traffic routed through it. It generally covers more traffic, but is still affected by routing, exclusion rules, and permissions. For initial desktop troubleshooting, start with the system proxy. Try TUN after confirming the basic connection works.

System proxy example

Local address
127.0.0.1
Example mixed port
10808; check your actual settings
Scope
Applications that follow the system proxy setting
First-time setup
“System Proxy” → “Set system proxy automatically”

Older configurations may use separate SOCKS 10808 and HTTP 10809 ports. Don’t copy port numbers from an old guide into your current setup.

TUN requirements

How it works
Virtual network adapter and system routing
Permissions
Grant permissions when prompted; some platforms require elevated privileges
Troubleshooting focus
Adapter creation, route conflicts, and DNS
When to enable
Enable after the basic node connection works

TUN won’t fix a non-working node or guarantee that all traffic goes through the remote proxy.

Check the local listening port under “Settings” → “Parameter Settings.” 127.0.0.1 refers to the device itself; you can’t enter this address in your phone’s proxy settings to connect to your computer. The VPN service started by an Android client uses the system’s traffic-routing mechanism, which is different from the system proxy toggle on desktop.

7. It says connected—how can I tell if it’s actually working?

“Connected” may only mean that the local service has started. A latency test result doesn’t prove that every webpage will load. Check the active node, the app’s actual access results, and the logs rather than relying on a single status icon.

  1. Check the selected node: Verify the active server name so you don’t test node A while actually using node B.
  2. Test real access: Open an HTTPS page that should use the proxy under your current routing rules, then refresh it and visit a second page to rule out cached content.
  3. Check the logs: Look at the destination address, selected outbound, and any errors for the request. Log detail varies; if the outbound name isn’t shown, don’t draw conclusions from a single line.
  4. Compare before and after: Pause other VPN or proxy tools, compare results with the system proxy cleared and enabled, then restore the settings you need when testing is done.

For example, a test panel showing 120 ms only means that test returned a result at that moment; this isn’t a measurement from this site. Throughput, webpage time to first byte, and connection stability are different metrics. There’s no need to switch nodes constantly just to chase the lowest latency. Speed tests may also use subscription data, so check your plan’s allowance first.

8. What is split routing? Do I need to use global mode all the time?

Split routing uses rules based on domains, IP addresses, applications, or other criteria to choose an outbound. “Direct” means a request bypasses the remote proxy; “proxy” sends it to the specified outbound; and “block” prevents it from proceeding. Global mode in a client usually affects the proxy core’s outbound rules—it doesn’t mean every application is being routed through it.

For help adjusting rules, see the advanced configuration guide. First decide which destinations should use which outbound, then change the rules. Blaming every failure on DNS can distract from the real issue with the node or transport.

9. What should I do before closing the client?

After a desktop client closes, the system proxy may still point to a local port that is no longer listening, causing the browser to report that the proxy server refused the connection. Closing the window may only minimize the client to the tray—it doesn’t always exit the program. Distinguish between hiding the window, stopping the core, and exiting the app.

  1. Under “System Proxy,” select “Clear system proxy,” then confirm that the browser can access the internet normally again.
  2. If TUN is enabled, turn it off first and wait for the virtual network adapter and related routes to stop.
  3. Then use the client’s exit command. On Android, stop the client’s connection service and confirm that the system’s VPN indicator disappears.

If your device loses power unexpectedly or the program crashes, and webpages stop loading, first check whether the operating system’s proxy settings still point to 127.0.0.1. On a managed work computer, don’t remove proxy settings deployed by your organization; only undo changes made by this client.

10. What if updates fail, connections time out, or only the browser works?

Change one variable at a time and note which step produces the error. A failed subscription update is a problem fetching configurations; a node timeout is a problem establishing a connection. Don’t treat them as the same issue. The three scenarios below are good starting points for troubleshooting.

Subscription update timed out. Is the URL unusable?

First confirm that your regular internet connection works. Check that the URL is complete and hasn’t expired, and ask the provider whether the subscription endpoint has changed. If you already have a working node and the URL does require a proxy, retry using “Subscription Group” → “Update All Subscriptions (through proxy).” Without a working node, this option can’t solve the initial connection problem.

The node keeps timing out. Should I reinstall the client?

First enable automatic date and time in your system settings, then check the active node, server address, and port. Try another node from the same subscription, then look in the logs for timeout, connection refused, or a TLS handshake error. Find the cause before considering a reinstall.

Why does the browser work but other apps don’t?

Check whether the app follows the system proxy setting or has its own proxy or direct-connection rules. Try TUN if you need broader traffic coverage, and check its permissions and routing. If the logs show that the local 10808 port is already in use, close the other program using it or change the port and update any apps that depend on it.

If the problem persists, note the client version, operating system, core type, node protocol, and a redacted error log. Then check the relevant issue in the Help Center. Don’t publicly share a full subscription URL, UUID, or working node link. Don’t enable certificate verification bypass just to make an error disappear.

Client installers