First-time setup · 4 steps

Import a v2rayN subscription
and choose a proxy mode

Import a subscription → choose a proxy mode → connect → verify the result. Start with a repeatable connection setup, then adjust routing and DNS.

Subscription Groups System Proxy Routing Connection Testing

Before You Start: Client and Subscription URL

Choose a client for your device on the client downloads page. Use v2rayN on desktop and v2rayNG on Android. Install the client and open its main screen before continuing. The download includes the graphical client and related runtime components, but does not provide a server. An empty list on first launch usually means no configuration has been imported yet, not that the installation failed.

Get a current subscription URL from a source you trust. These URLs are usually long and may contain account-specific parameters, so treat them like account credentials. Don’t include the full URL in public screenshots, comments, or support logs. Use the source page’s “Copy subscription link” option, and make sure you don’t select the subscription name, explanatory text, or any spaces around the URL.

Before you begin, quit other proxy clients and note any proxy settings in your browser extensions. If multiple tools change the system proxy, the client may appear to work while the browser connects to a different port. For the first test, use one client, one subscription, and one connection method. Once you’ve verified the setup, restore any other tools you need. There’s no need to write a configuration file.

Step 01 / Import Configuration

Import a Subscription: Add a Group and Update It

Save a Subscription URL in v2rayN

Open the “Subscription Group” menu at the top, then select “Subscription Group Settings.” Add a group and enter a recognizable name, such as “Daily,” in the remarks or name field. Paste the subscription link into the URL field. The name is just for identification and doesn’t affect the connection. Check that the URL has no line breaks or extra text, save the settings, and return to the main window. If there’s an enable option, make sure the group is enabled.

Saving the URL doesn’t download the server configuration. Return to the “Subscription Group” menu and update the subscription. If the menu offers “Update through proxy” and “Update without proxy,” try the latter first when you don’t have a working connection yet. Once the update finishes, select the new group and check that server entries appear in the main list. Confirm the update succeeded before moving on.

If you already have other groups, switch to the one you just added and check its contents. Don’t assume the new subscription was updated just because the “All” list still shows older entries. You can compare server remarks, protocol types, and addresses with the source’s information, but avoid editing subscription-generated parameters. A later refresh may overwrite those changes. For the first connection, use the original subscription configuration to keep troubleshooting simple.

Find the Matching Option in v2rayNG

On Android, open the sidebar or the More menu in the top-right corner, then go to “Subscription Settings.” Tap the add button, enter a remark and subscription URL, and save. Return to the server list and select “Update subscription” from the menu. Once the new entries appear, tap one to select it for connection. Subscription Settings saves the source; the main list is where you choose a server—the same sequence as adding a group and updating it on desktop.

If the copied text starts with vmess://, vless://, trojan://, or ss://, it’s usually a single share link. Use an option such as “Import from clipboard” instead of pasting it into a field that fetches a subscription over the network. A regular webpage URL isn’t necessarily a subscription URL: an account page, help page, and subscription endpoint may all use the same domain. Make sure the source explicitly identifies the link as a subscription.

The success criteria for this step are simple: the current group shows server entries from the subscription source, and you can select one. A successful update only means the configuration was downloaded; it doesn’t mean a server connection is active. Keep your selection, then configure how traffic reaches the client and which route it takes.

Step 02 / Choose a Traffic Entry Point

Choose a Proxy Mode: System Proxy and Routing Are Separate

Set Up the System Proxy on Desktop

In the v2rayN main window or tray menu, find “System Proxy.” For your first setup, select “Set system proxy automatically.” This lets apps that follow the system proxy send requests to the client’s local listening port. “Clear system proxy” removes the proxy setting from the system. “Do not change system proxy” leaves the current setting as is; it doesn’t configure it for you. Don’t mistake “Do not change” for a separate connection mode.

Browsers usually follow the system proxy, but some apps ignore it, and browser extensions can override the system setting. After configuring the proxy, test with a browser that follows system settings. Don’t judge success by whether every app changes its connection route. If your browser has a separate proxy extension, switch it temporarily to use the system settings so it doesn’t keep pointing to another tool.

Then Choose Bypass China, Global, or Direct Routing

Next, find the routing option. For everyday use, start with “Bypass China”: the active ruleset sends some requests through the proxy outbound and others directly. “Global” typically routes most ordinary requests through the proxy, making it useful for a quick comparison. “Direct” sends traffic primarily through the direct outbound. The exact matches still depend on your routing configuration; a mode name doesn’t guarantee how every packet will be routed.

The system proxy and routing are two separate settings. The system proxy determines whether an app sends requests to the client; routing determines where those requests go after they reach it. Choosing “Global” without setting a traffic entry point may still leave browser traffic going direct. Enabling the system proxy while choosing “Direct” doesn’t mean requests will use a remote server. For your first test, note the combination “Set system proxy automatically + Bypass China,” and change only one setting at a time when troubleshooting.

Settings for This Test

  • System proxy: Set system proxy automatically.
  • Routing: Start with Bypass China; switch briefly to Global if you need a comparison.
  • TUN mode: Leave it off for the first test.
  • Allow connections from the LAN: Leave it off; it isn’t needed for local testing.

Don’t copy the desktop system proxy steps on Android. In v2rayNG, confirm the operating mode is “VPN,” then choose the routing behavior you need in the routing settings. If per-app proxying is enabled, check whether your browser is included in or excluded from the proxy rules. For the first test, use an explicit setting that includes the browser; otherwise, it may bypass the client even when the VPN is connected.

TUN involves a virtual network adapter, permissions, and system routing; it isn’t required for your first browser connection. Keep to a single traffic entry point for now, rather than enabling both the system proxy and TUN at once. For a full setup covering rule priority, DNS, and TUN, see the routing rules section and the advanced configuration guide. Now return to the server list and get ready to start the imported server.

Step 03 / Start the Core

Connect to a Server: Check the Active Entry and Startup Log

Set an Active Server in v2rayN

Select an imported server, then choose “Set as active server” or the equivalent option from the right-click menu. Some versions also let you switch servers with a double-click; look for a change in the active indicator. Clicking a row may only select it in the list without changing the server in use. After switching, check the current server details in the window and confirm they match the entry you intend to test.

v2rayN usually starts or restarts the relevant core when you switch the active configuration; there may not be a separate, universal “Connect” button. Open the log and check for errors such as configuration parsing failures, a core that won’t start, or a port conflict. The absence of startup errors is a prerequisite for testing, but only shows that the local program is running—it doesn’t prove a remote handshake or webpage access succeeded.

If a port is already in use, quit other proxy clients, check for duplicate v2rayN processes, and try again. Don’t assume the program has exited just because you closed its window; some clients keep running in the system tray. If you need to change the local port, do so in the client settings and reapply the system proxy. Make sure the system points to the port the client is actually listening on—don’t enter a random number in system settings.

Approve the VPN Connection Request in v2rayNG

On Android, select a server and tap Start on the main screen. The first time you connect, Android displays a VPN connection request; approve it to let the client handle the relevant traffic. If you previously denied the request, tap Start again and grant permission. Check the connection status in the app and the VPN indicator in the system status bar. If another VPN app is active, stop it before starting v2rayNG.

If the connection stops as soon as it starts, check the client log before changing every setting. If the configuration can’t be parsed, return to the subscription import step. If the core doesn’t support a configuration option, check that the client and core meet the configuration’s requirements. For a remote timeout, investigate the server and your current network. Don’t arbitrarily change one protocol to another; the server and client parameters must match.

Keep the client running for now, and don’t update the subscription or switch between multiple servers. Note the current server, system proxy, and routing mode to keep the test conditions consistent. Next, test access. If the result isn’t what you expect, you can troubleshoot in order: app entry point → local core → remote connection, without starting over.

Step 04 / Check the Traffic Route

Verify the Connection: Compare Access Results with Logs

Test with a New Request, Not Just the Connection Icon

Leave the client running, open a new browser tab, and visit a site that can help you check the result. Don’t rely on a page that was already loaded: its content may be cached, and existing connections may not have been reestablished. Try one site that should go direct under your current rules and another that should use the proxy. Check that both load as expected, then compare the results with the client log.

If your log level records access events, check whether the new request appears and whether it used the expected outbound. If there’s no request in the log, first check whether the browser follows the system proxy, whether an extension overrides it, or whether Android per-app rules exclude the browser. Some log levels don’t show every request, so the absence of a log entry alone doesn’t prove a fault. Check it against your settings and actual results.

An exit IP lookup can provide supporting evidence, but it doesn’t replace checking the routing rules. With “Bypass China” enabled, the lookup site itself may be routed directly, so seeing your local network’s exit IP doesn’t necessarily mean the proxy is failing. For comparison, temporarily switch to “Global,” make a new request, and check the result. When you’re done, switch back to your usual routing mode rather than changing every app’s traffic path just to get a particular lookup result.

Narrow Down the Cause Based on What You See

If the browser says it can’t connect to the local proxy, first check that the client is running, the system proxy points to the right port, and the core is listening. If the request reaches the client but times out remotely, focus on the selected server and network. You can try another entry from the same subscription if you know it works, but change only one variable at a time. Don’t change the port, routing, and DNS together; even if that fixes the issue, you won’t know why.

If only some domains fail while other pages load, check DNS resolution and routing matches. For a first-time setup, avoid enabling FakeDNS or copying a full advanced DNS configuration; these options depend on the traffic entry point and core support. Keep the basic setup that already works and use the troubleshooting section for the specific issue. To understand the limits of each mode, see System Proxy, Global, and Bypass China: What’s the Difference?.

If browsing works on Android while the app is open but stops after it’s been in the background, check whether battery management is restricting background activity. Confirm that the issue only occurs in the background, then grant the client the background permissions it needs in your device settings. Don’t blame every startup failure on battery optimization: if it fails as soon as you tap Start, check permissions and logs first.

After Testing, Check How to Stop and Restore Settings

Before quitting on desktop, select “Clear system proxy,” then exit the client. Force-closing the process may leave the system pointing at a local port that’s no longer active, preventing the browser from connecting. If that happens, check the manual proxy setting in your system network settings and restore its previous value. On Android, tap Stop in the client and confirm the system VPN is disconnected before ending the test.

You’re done when three things are true—not just when a button changes color: the subscription entries are imported, the client handles requests from the test app, and direct and proxied requests behave as expected. Note the working group, active server, and proxy mode. Keep using this setup for everyday browsing, and explore subscription filters, routing rules, or TUN only when you have a specific need.

What to Do After First-Time Setup

Keep using the setup that works. Look up specific topics as needed; there’s no need to enable every feature at once.