10-minute quick setup

V2Ray Setup Guide: From Subscription Import to Connection Verification

Complete these four steps in order: import a subscription, choose a proxy mode, connect to a server, and verify the traffic path. For a first setup, do not change every advanced option at once. Get the basic connection working first, then fine-tune routing, DNS, and TUN settings.

Supported clients v2rayN, v2rayNG Workflow Import → Mode → Connect → Verify Advanced settings Routing, DNS, TUN
Before you start

Prepare the client and a valid subscription URL

Make sure the client opens normally, then prepare the complete subscription URL provided by your service provider. The subscription supplies server configurations; the client reads them, selects routes, and establishes the connection.

Platform switch: In the v2rayN desktop client, subscription controls are usually found in the top menu or the subscription group panel on the left, while the system proxy and TUN switches are grouped in the main settings area. In the v2rayNG Android client, open the subscription group settings from the top-right menu; the connection switch is at the bottom of the main screen. Names may vary slightly by version, but the workflow remains the same.

If the client is not installed yet, open the download page and choose the version for your device. Use v2rayN on desktop and v2rayNG on Android. After installation, launch the client once to confirm that the main interface appears. Do not start multiple similar clients at the same time: competing changes to system proxy or virtual network settings can make it difficult to determine which program is handling traffic.

A subscription URL is usually a link beginning with https://. When copying it, select every character from the beginning to the end, without including ellipses, line breaks, or trailing punctuation added by chat apps. Do not paste the subscription URL directly into a browser address bar, because it may contain information used to retrieve your configuration. Instead, give it to the client's subscription manager.

Before you begin, verify that the device date, time, and time zone are correct. Many transports rely on TLS, and a large clock offset can cause the handshake to fail. If the device has just resumed from sleep, the time zone was recently changed, or automatic time sync has been disabled for a while, enable automatic date and time in the system settings first. The network must also be usable: the client needs to reach the subscription source before it can download the server list.

What you need An installed client

v2rayN for desktop or v2rayNG for Android.

Copy this The complete subscription URL

Use the current URL supplied by your service provider.

Confirm this Correct system time

Enable automatic date, time, and time zone settings.

01
Step 1

Import the subscription and update the server list

Add a subscription in v2rayN

Open v2rayN, find “Subscription Groups” or the subscription manager, and choose to add a subscription. Enter a recognizable service name, then paste the complete subscription URL you copied earlier. The name is only used for organizing entries inside the client; it does not change the server configuration. Save it, return to the main interface, and run “Update all subscriptions,” or select the current group and update it. Adding and updating are separate actions: if you only save the URL without running an update, the server list will usually remain empty.

Watch the status message at the bottom of the interface during the update. When it finishes normally, a new subscription group should appear with several server configurations. Server names, protocols, and group labels come from the subscription, so there is no need to enter them manually. Once the list appears, do not adjust routing or DNS yet. Keep the defaults and continue to the next step to choose a proxy mode.

Add a subscription in v2rayNG

Open v2rayNG, tap the top-right menu, and enter “Subscription Group Settings” or a similarly named subscription management page. Tap the add button, enter a group name, and paste the complete URL into the subscription URL field. Save it, return to the main screen, and choose “Update subscription” from the menu. When the update finishes, selectable configurations will appear in the main list. Tapping one selects the current server; it does not start the connection.

If no configurations appear after the update, return to the subscription settings and check that the URL is complete. Common causes include missing characters at the beginning, trailing spaces, copying displayed webpage text instead of the actual link, or a URL that the service provider has replaced. Delete the incorrect entry and add it again, or edit the existing entry and update it once more. Repeatedly tapping the connect button cannot fix an empty list because the client has not received a usable server configuration.

Subscription group Updated
Frequently used Current group
Custom configuration Manual management

Note: A subscription URL is a configuration access point. Do not publish it on a public page or submit it to an untrusted third-party conversion tool. When the URL needs to be replaced, obtain a new one from the original service provider.

The completion check is straightforward: a subscription group exists in the client, and it contains at least one selectable server configuration. This confirms only that the configuration was imported successfully; it does not mean device traffic is already passing through the proxy. The next step is to decide which app traffic the client should handle.

02
Step 2

Choose system proxy or TUN mode

The proxy mode determines which apps hand their traffic to the client after the connection is established. For a first setup, start with system proxy. Its scope is clear, browsers and most desktop apps that follow system network settings can use it directly, and problems are easier to isolate. Consider TUN mode only when you need to handle programs that ignore system proxy settings, command-line tools, or traffic from more applications.

Start with system proxy

In the v2rayN main interface, find “System Proxy” and set it to “Set system proxy automatically,” or choose the equivalent enabled option in your version. The client will then write its local proxy address to the system network settings. Do not manually change the system proxy port afterward; the client maintains these values from its own configuration. In v2rayNG, the connection is started with the switch at the bottom. The system may show a network connection authorization prompt on first connection; approve it to create the local virtual network connection.

System proxy affects only apps that actively read the system settings. Browsers usually follow them, but some terminal programs, standalone download tools, and apps with their own networking stack may ignore them. Test browsers and other apps separately during verification. If the browser works but the terminal does not, the server connection may be fine; the terminal may simply not be reading the system proxy.

Choose routing based on your needs

Clients usually offer routing choices such as global, rule-based, or direct connection. For a first connection, use rule mode, such as “Bypass LAN and mainland China” or a rule group supplied with the subscription. Rule mode uses domains, IP addresses, and preset rules to decide between direct and proxied connections, making it suitable for everyday use. Global mode sends more traffic through the proxy and is useful for a short diagnostic test: if a page fails in rule mode but works in global mode, the issue is usually the routing rules rather than the subscription import.

Direct mode does not send target traffic through the proxy and is mainly useful for temporarily disabling the proxy or running a comparison test. Do not confuse “the client shows connected” with “the current route uses the proxy.” The connection status shows that the core is running; the routing mode determines the path taken by each request. For a first setup, choose one clear mode instead of importing multiple routing files or changing many rules at once.

SYSTEM PROXY

System proxy

Best for first-time setup and browser use. It handles apps that follow system network settings and makes restoration easier when the client is closed.

Recommended starting point
TUN

TUN mode

Uses a virtual network interface to handle more traffic. It may require system permissions, and routing and DNS should be checked together.

Read the TUN guide →

When to enable TUN

Enable TUN mode only when the target app clearly does not support system proxy settings or when you need to handle traffic from more programs centrally. The first time v2rayN enables TUN, it may request elevated permissions or install a virtual network component; reconnect after completing that step. Do not let another virtual networking tool use the same network path, or default routes may overwrite each other and DNS queries may take inconsistent paths.

TUN, FakeDNS, custom DNS, and complex routing interact with one another, so do not enable everything before the basic connection is verified. Once the basic connection works, read the advanced configuration guide for further setup. This step is complete when you have chosen system proxy or TUN and know whether the current routing mode is rule-based or global. Only then should you select a specific server and start the connection.

03
Step 3

Choose a server and start the connection

Return to the server list and select a configuration in the subscription group you just updated. In v2rayN, you can usually double-click a server, right-click it and set it as the active server, or use the interface's “Set as current” option. The selected server name should appear in the main interface or status bar. In v2rayNG, tap a configuration in the list; it will show a selected marker, then tap the connection switch at the bottom.

For the first test, do not switch rapidly between multiple servers. Keep one configuration fixed through the entire verification process so you can distinguish a server issue from a proxy mode or app setting issue. If the client offers a speed or connection test, use it only as an initial reference; its result is not the same as real webpage access. The final measure is whether the target app can connect and load all page resources.

Confirm that the client is running

After starting the connection, check the client's status area. v2rayN should show that the core is running, with the system proxy switch still in the state you selected. v2rayNG should show an established connection, with the bottom button or status icon changed. If the system displays a network authorization prompt for the first connection, approve it explicitly. Closing the prompt can leave the server selected while preventing the connection from being established.

Keep the client running while connected. Closing the main window is not the same as quitting the program: on desktop, closing the window may leave the client in the system tray, while the Quit command stops the core and restores related settings. If you are unsure whether it is still running, check the tray icon or reopen the client. On Android, the connection should remain active when you switch apps. If the system quickly stops the background task, review background activity permissions and battery management settings.

Server selected

After the core starts, check the system proxy and routing mode.

System proxy Enabled
Routing mode Rules
Connection status Connected

Change one variable at a time when a connection fails

If an error appears immediately after startup, note whether it occurred after updating the subscription or after starting the core. If the subscription updates but the core will not start, check the client components, configuration format, and local port conflicts. If the core starts but the target page is unreachable, check the server, routing, and DNS. Do not reinstall the client, replace the subscription, switch to TUN, and change DNS all at once; that makes a single issue difficult to isolate.

The simplest comparison is to switch to another server in the same subscription group and reconnect. If only one configuration fails while others work, contact the subscription provider to confirm that server's status. If every configuration fails, return to the client layer and check the proxy mode and permissions. More error messages and troubleshooting steps are collected in the help center. This guide now moves to the final step: verifying that actual traffic is using the expected proxy path.

04
Step 4

Verify the browser and apps are using the proxy

A connection button in the enabled state is only the first check. Complete verification has three layers: confirm that the client core is running, confirm that the target app hands requests to the client, and confirm that routing selects the correct outbound path. Following this order prevents browser extension conflicts from being mistaken for server failures and prevents a single routing rule from being mistaken for an unusable subscription.

Start with a browser check

Keep the client connected, fully quit and reopen the browser, then visit a target page that normally requires the proxy. Restarting the browser lets it reread the system proxy settings. If the page opens and all resources load, the subscription, server, client core, and browser proxy path are broadly working. Then open a commonly direct-access page to confirm that both types of traffic work in rule mode.

If the browser still uses the old path, check whether it has an extension that manages proxy settings independently. Such extensions can override system settings and prevent the browser from following v2rayN. Temporarily disable the extension, leave the client's system proxy enabled, and reopen the browser for another test. You can also inspect the browser's network settings to confirm that it uses the system proxy rather than another hard-coded address and port.

Then check terminals and standalone apps separately

Terminal programs often ignore system proxy settings, so a working browser and a failing command line are common. First check whether the program supports a system proxy, environment variables, or an in-app proxy. Do not replace the server immediately just because the terminal is not working. If you need to handle this traffic centrally, evaluate TUN mode; if only one program needs the proxy, configure it through that program's own proxy settings.

Use the same reasoning for standalone apps. A fixed proxy configured inside an app may bypass or override the system proxy; an app with no proxy support may not be handled by system proxy mode. Check the app's network settings before switching to TUN. For the complete browser-versus-terminal troubleshooting workflow, read Layered troubleshooting when the system proxy does not work.

Use client logs to identify the request path

Client logs can show whether a request reached the local proxy and whether routing chose direct, proxied, or blocked outbound traffic. During verification, keep the log window open, refresh the target page only once, and look for the corresponding domain or connection record. If no new record appears, the problem is usually between the app and the client. If a record appears but the connection fails, continue by checking the server connection, DNS resolution, and routing decision.

Use logs to identify the direction of the problem; there is no need to edit configuration line by line. If a domain is classified as direct when it should use the proxy, run a short comparison in global mode first. If global mode works but rule mode does not, adjust the routing rules. If both modes fail, test another server and confirm the device time, network permissions, and DNS status. The advanced configuration guide covers systematic routing and DNS adjustments.

A
Client status

The core is running, the current server is clear, and the connection does not exit immediately.

B
Browser path

The browser reads the system proxy after restarting, and the target page loads completely.

C
Logs and routing

The request reaches the client, and the rules select the expected outbound path.

Completion check: The client stays connected, the browser reaches the target page as expected, commonly direct-access pages also open normally, and the logs show requests entering the client and being routed. The basic setup is complete.

Troubleshooting

Check each layer when the proxy is not working

Do not start by reinstalling everything. Identify whether the problem is at the subscription, core, app interception, or routing layer, then make the corresponding change.

1

Does the list exist?

If the server list is empty, return to the subscription settings, check the URL, and update it again. There is no need to change the proxy mode yet.

2

Is the core running?

If the connection exits immediately, check startup errors, permissions, and local port conflicts, then try another server.

3

Is the app being intercepted?

Test the browser and terminal separately. Confirm that the app reads the system proxy, or evaluate TUN mode if needed.

4

Do the rules match?

Use global mode for a short comparison. Only if rule mode fails should you check domain, IP, and DNS split-routing behavior.

When a subscription update fails, focus on the URL and current network. When the core fails to start, focus on permissions, components, and ports. If only one app fails, focus on that app's proxy source. If only a category of domains fails, focus on routing and DNS. Working through the layers is usually faster than repeatedly flipping multiple switches.

For more detailed error categories, visit the help center for installation, configuration, usage tips, and troubleshooting answers. If you need to manage multiple subscriptions, write custom routes, configure split DNS, enable FakeDNS, or set custom outbounds, continue with the advanced configuration guide. The basic guide ends here; add later settings one at a time around your actual needs.