10-minute basic setup

V2Ray Beginner’s Guide: From Subscription Import to Connection Verification

This guide follows the practical setup sequence for the v2rayN desktop client and the v2rayNG Android client. After four steps, you can determine whether the subscription, active server, proxy mode, and app traffic are configured correctly.

  • Subscription import
  • Proxy mode
  • Start the connection
  • Verify the result

Check the client, subscription URL, and system time

Before starting setup, prepare an installed client and a subscription URL that works. Use v2rayN on desktop devices and v2rayNG on Android devices. If the client is not installed yet, visit the download page and choose the version for your operating system. After installation, launch the client once so it can create its default configuration directory and basic settings, then continue with the subscription steps below.

A subscription URL is usually a complete link beginning with a network protocol. When copying it, select every character from the beginning to the end, without including quotation marks, spaces, or line breaks added by a chat app. Treat the URL as a configuration entry point and store it only in the client you use. If it has expired, been reset, or is missing required access parameters, the client cannot retrieve the server list even when configured correctly. Contact the subscription provider to confirm its status.

Also check that the device date, time, and time zone are correct. Some protocols use time information during connection setup, and a large clock drift can cause the handshake to fail. Enable automatic system time first, then continue. If other proxy clients are running on the computer, quit them to prevent conflicts over system proxy settings or local listening ports. A common local SOCKS port is 10808, but use the value shown in the current client settings.

Import a subscription and update the server list

Add a subscription in the v2rayN desktop client

After opening v2rayN, find “Subscription groups” or a similar item in the top menu, then open the subscription group settings. When creating a subscription entry, add a recognizable remark and paste the complete subscription URL into the address field. The remark is only for local identification and does not affect the connection; the URL must remain unchanged. Save it, return to the main window, open the subscription menu again, and choose “Update current subscription” or “Update all subscriptions.”

When the update finishes, one or more configurations should appear in the server list. The list usually shows basic fields such as protocol type, address, port, and transport. Do not rewrite each field or change the port, user identifier, transport layer, or security settings without knowing what they do. A subscription supplies these parameters as a complete configuration; changing one manually may prevent the configuration from connecting.

If the list is still empty after updating, return to the subscription group settings and check whether the URL was truncated. Then confirm that you performed an update rather than merely saving the subscription name. In some network environments, the client may offer “Update through proxy” and “Update directly.” For a first setup with no working connection, try a direct update first. If a working connection already exists but the new subscription cannot be reached directly, choose the method that fits the situation.

Add a subscription in the v2rayNG Android client

Open v2rayNG and go to “Subscription group settings” or “Subscription settings” from the top-right menu. Tap the add button, enter a remark and subscription URL, save, and return to the configuration list. Open the update screen and run the subscription update. When it finishes, selectable configurations should appear on the main screen. If the list remains empty, check the selected subscription group and confirm that the update has completed.

Android may restrict an app’s network access in the background. If the import produces no result for a long time, keep v2rayNG in the foreground and run the update again. If strict battery-saving rules are enabled, temporarily allow the client to access the network normally. The key question is not how long you wait, but whether a configuration list is eventually retrieved: once protocol and server entries appear, continue to the next step.

Choose a proxy mode and routing rules

After the client retrieves the server configuration, decide which traffic should use the proxy and which should connect directly. This usually involves two settings: the system proxy sends app requests to the client, while routing rules choose the direct or proxy outbound inside the client. Their names may sound similar, but their roles differ. Start with an easy-to-understand combination, then fine-tune it after the connection works.

Enable automatic system proxy configuration on desktop

In the v2rayN main window or tray menu, find “System proxy” and choose “Automatically configure system proxy.” Once enabled, browsers and desktop apps that read system proxy settings will send requests to v2rayN. The client manages the local SOCKS and HTTP listening ports, so you usually do not need to enter them again in the browser. If a browser proxy was configured manually, restore it to follow the system settings so it does not keep using an old port.

Next, open “Routing settings.” For a first setup, choose one of the client’s commonly used traffic-splitting presets. These presets typically send local-network addresses and common mainland China resources directly, while routing other matches through the proxy. Routing depends on rule order and match conditions, so avoid adding many custom domains during the initial connection. Confirm that the default preset works first, then read the routing rules reference as needed.

Confirm routing and app scope on Android

In v2rayNG settings, find “Predefined rules” or the routing options and choose a rule set suitable for everyday use. If you have no specific requirement, keep a common preset. Then check whether “Per-app proxy” is enabled: when disabled, traffic from apps assigned to the connection is handled by the shared rules; when enabled, only selected apps—or apps outside the exclusion list—enter the client. For the first test, use simple settings so an unselected test app does not make the connection appear broken.

Proxy mode is not a connection-quality setting. Switching between global, split, or custom routing will not fix incorrect subscription parameters or make an unavailable server usable. It only changes how traffic selects an outbound. If some apps work while others never pass through the client, first check the per-app scope, how the system proxy is being read, and which routing rule matches, rather than repeatedly updating the subscription.

Select an active server and start the connection

After setting the proxy mode, return to the server list and choose one configuration as the active server. If the subscription contains several configurations, test one first; there is no need to modify multiple entries at once. On desktop, you can usually double-click a list item or use its context menu to choose “Set as active server.” The selected row may change color, show a marker, or display a different status. On Android, tap the configuration entry until a selection indicator appears on its left or right.

In v2rayN, start the core after confirming the active server. If “Automatically configure system proxy” is enabled, the system proxy will point to the client’s local listening port after startup. Check the status area at the bottom of the window or the logs for the Xray core starting and the local inbound being created. Successful startup does not prove that the destination server works, but it does show that the client can read the configuration and open a local listener.

In v2rayNG, select a configuration and tap the connection button on the main screen. The first time this type of connection is created, Android displays a network connection authorization prompt. Confirm it; the client should switch to connected and a connection indicator should appear in the status bar. If it immediately returns to disconnected, open the client log and find the first clear error instead of repeatedly tapping the button. Common causes include incomplete fields, an unreachable server, an incorrect system clock, or a temporarily unavailable network.

Do not switch between several configurations immediately after startup. Wait a few seconds for DNS resolution, the protocol handshake, and the transport layer to establish before testing access. If the current configuration fails, stop the connection, choose another entry from the subscription, and start again. Change only one factor at a time so you can tell whether the problem is the active server, routing rules, or system proxy.

Active configuration A list item is clearly selected
Local listener The core is running and the port is not in use
Proxy entry point The system or app is sending traffic to the client

Verify that the proxy is working

During verification, check both whether the app can access the internet and whether the client receives traffic. First open a browser that reads the system proxy and visit a website that normally loads reliably. Then visit a target that should be handled by the current proxy rules. If the page loads and the client logs or traffic counters show a new connection, the app request has entered the client. A connected status alone does not prove that the browser is using the connection.

On desktop, focus on the target domain, inbound type, and routing outbound in the v2rayN logs. New access records indicate that the system proxy path is basically correct; whether the final outbound is direct or proxy is determined by the current routing rules. If the browser produces no new records, first check that the system proxy is still set to “Automatically configure system proxy,” then make sure the browser has no separate proxy setting enabled. If the listening port was changed, confirm that the system proxy points to the same port currently used by v2rayN.

On Android, open the test app while keeping the connection active, then return to v2rayNG and check its logs or connection details. If the client shows no new connection, check whether per-app proxy settings exclude the app. If a connection appears but access fails, check the active server and routing result. Some apps cache old connections; after switching configurations, fully close and reopen the app so an old session does not affect the test.

You can also run a stop-and-compare test: note the result while access works, stop the client connection, and refresh the same target. Reconnect and refresh it again. A change between the two results that matches the proxy rules helps confirm the traffic path. Restore the connection state you need after testing; there is no need to keep the log window open.

Update subscriptions, switch configurations, and quit the client

When subscription contents change, do not delete the existing group and add it again. Run “Update current subscription” or “Update all subscriptions”; the client will reread the subscription and refresh the configuration list. After updating, check that the active server still exists. If the previous configuration was replaced, select another one and start the connection. Repeatedly adding the same URL creates duplicate groups and makes it harder to tell which configuration is in use.

When switching the active server, select the new configuration in the list and observe the connection status and logs. Some versions restart the core automatically; others require you to stop and start it manually. Run a brief access test after switching to confirm that the new configuration works. If you only changed the routing preset, it is also advisable to reconnect so the new rules apply fully to later requests; existing connections may not switch to the new outbound immediately.

After closing the main window on desktop, v2rayN may continue running in the system tray. To quit completely, choose Exit from the tray menu and clear the system proxy first if needed. Otherwise, apps may continue using a proxy address whose local listener has gone away, making webpages inaccessible after the client exits. On Android, stopping the connection ends the system connection as well. Simply returning to the home screen without stopping may leave the client running according to system rules.

Once the basic setup is stable, you can explore DNS, sniffing, Mux, LAN connections, and custom routing. These settings are for specific needs and should not all be changed at once when nothing is wrong. See the configuration reference for field meanings and JSON structure, and the troubleshooting guide for subscription updates, port conflicts, and connection failures.

Troubleshoot in a fixed order

First check the subscription. Confirm that the URL is complete and that a manual update retrieves configurations. If the update itself fails, fix the subscription access or format before changing routing. Next check the active server. Make sure one configuration is actually selected, then try another entry from the same subscription to rule out a temporarily unavailable configuration.

Third, check the client status and local port. Look for clear log messages about a port conflict, configuration parsing failure, or a core that did not start. If a port is occupied, quit other clients of the same type and restart the current one. Avoid changing several ports at random, because the browser, system proxy, and other programs may still use the old values. Fourth, check the traffic entry point: confirm the system proxy mode on desktop, and connection authorization and per-app scope on Android.

Fifth, check routing and DNS. If the client receives requests but the destination consistently uses the wrong outbound, review the active routing preset and the order of custom rules. If the logs show DNS resolution failures, inspect the DNS settings and whether the current network is available. Change only one thing at a time, then reconnect and retest; this is easier to diagnose than changing the server, port, routing, and DNS simultaneously.

Checklist after completing the four steps

  1. The subscription group updates successfully, and the server list is not empty.
  2. An active server is selected, and the client core remains running.
  3. The desktop system proxy or Android app scope is configured correctly.
  4. The test access creates a corresponding connection record in the client.
  5. The routing result matches the selected preset, and the state recovers normally after stopping the connection.

If you still cannot identify the cause, there is no need to reinstall the client. Note the sequence of actions, the first error in the client log, and the current proxy mode, then use the troubleshooting guide to narrow it down. If the basic connection works and you only need finer domain routing or inbound and outbound settings, continue with the configuration reference.

Download v2rayN