Quick start / From subscription to connection test

v2rayN Setup Guide:
Import a Subscription and Test Your Connection

Complete the basic setup in four steps. Get one server configuration working before changing DNS, TUN, or custom routes.

Before you start, install a client and have a subscription URL or a single server share link that you’re authorized to use. The client reads configurations, runs the core, and captures traffic; it does not create a remote server you can connect to. If you haven’t installed a client yet, choose the right installer on the client download page, then return here. Don’t paste a subscription URL into a browser search box or share screenshots containing access credentials.

This guide covers only the settings needed for your first connection. If you’re familiar with the interface, you can work through it in about ten minutes; issues with a subscription service or remote server may take longer to troubleshoot. Keep the default listening port, DNS, and core for now, and close other tools that modify proxy settings. Change one variable at a time so you can identify what affects the connection.

Step 01 / Save the URL and update configurations

Import a subscription

First, identify what you received. A subscription URL is a complete web address that retrieves a set of server configurations. A single share link usually starts with a protocol name and corresponds to one configuration. Use the appropriate import option for each. Don’t mistake your provider’s account login page for a subscription URL, and make sure you copy everything after the question mark, including any parameters. If you’re unsure which type you have, check the glossary entry on subscriptions and nodes before proceeding.

Add a subscription group in v2rayN

Open Subscription Group in the main window, go to Subscription Group Settings, and choose Add. Enter an easy-to-recognize remark, such as “Daily use,” then paste the complete URL into the subscription address field. For the first import, leave server filters unset and don’t add the same URL more than once. Save, return to the main window, and select the new group. Make sure you’re viewing that group—not another group or search results.

Open the Subscription Group menu again and choose Update current subscription. Depending on the version, the commands may appear as “Update current subscription (without proxy)” and “Update current subscription (through proxy).” If you don’t have a working connection yet, try the option without a proxy first. If the subscription URL isn’t reachable on your current network, choosing the proxy option won’t create a connection by itself—you’ll need an existing working proxy configuration. After the update, the list should show server names and protocol types, not just an empty group.

Add a subscription group in v2rayNG

Open Subscription Group Settings from the side menu, tap Add, enter a remark and subscription URL, then save. Return to the main screen and choose Update subscriptions from the top-right menu; some versions let you update only the current group. Wait for the update to finish, then check the server list. If a group or name filter is active, clear it first so hidden configurations aren’t mistaken for failed imports.

If you have a single share link, copy the entire link and use Import from clipboard on the main screen. This adds one configuration; it does not create an automatically updated subscription group. After importing, check that the name and protocol are as expected. There’s no need to edit the server address, port, or transport options—the values should match the configuration provided.

Once configurations appear, don’t bulk-rename them or run a battery of tests. Select one configuration you know should work and move on. A successful import only means the client recognizes the format; it doesn’t prove the remote server is reachable or that app traffic is going through the client.

Step 02 / Choose how to capture traffic and route it

Choose a proxy mode

First, separate two concepts that are easy to confuse: System Proxy or VPN mode determines how app traffic enters the client; Routing determines which outbound handles traffic after it enters. Switching Routing to Global doesn’t mean every app will use the proxy. Apps that don’t read system proxy settings may still connect directly. For your first setup, choose one traffic-capture method, confirm the basic connection works, and only then consider covering more traffic.

Use system proxy on desktop

Find System Proxy at the bottom of the v2rayN main window or in the tray menu. For a basic setup, choose Set system proxy automatically, but you can wait until you’ve selected a server and confirmed the core is running. This setting changes the system proxy details that apps can read, which most browsers support. Don’t enable TUN mode or configure a different proxy address directly in your browser yet; otherwise, it will be difficult to tell which route a request took.

Next, open Routing and choose a preset split-routing profile suited to everyday use. The interface may show “Bypass mainland China” or a similarly named rule; the exact name depends on the rule set. These rules decide whether to connect directly or use the proxy based on domains and addresses, not just the language of a webpage. For your first connection, there’s no need to edit rule priorities or the domain strategy. Keeping the preset makes results easier to reproduce and troubleshoot.

Keep VPN mode enabled on Android

In v2rayNG settings, make sure VPN mode is enabled rather than a mode that only provides local proxy ports to other apps. VPN mode uses a system network interface to capture eligible traffic, but it doesn’t mean every destination goes through the remote server; routing rules can still send traffic directly. For your first setup, disable custom per-app proxy settings so the test browser is included by default. You can choose which apps to exclude later.

Open Routing settings and keep the built-in standard split-routing profile for now. To check whether a request is being routed directly, you can temporarily switch to Global proxy or a similar preset, then restore your original profile after testing. “Global” applies only to traffic that actually enters the client and is still affected by per-app selections, network permissions, and other VPN services. It isn’t a general fix for every connection problem.

At this point, keep the setup simple: use system proxy with a preset route on desktop, and VPN mode with a preset route on Android. Configure DNS, FakeDNS, custom outbounds, and TUN routing only after the connection works. To learn about these options, read the advanced handbook by topic. For now, note the name of your routing profile so you can compare it with the expected result during testing.

Step 03 / Select an active server and start the service

Connect

Return to the server list and select the configuration you want to use. A highlighted row isn’t always the active server; some interfaces show the selected row separately from the configuration currently in use. On desktop, choose Set as active server from the right-click menu; some versions also let you switch by double-clicking. On Android, tap the configuration card. Check the active indicator, status bar, or current-configuration message in the logs—don’t rely on which row the mouse pointer is over.

Start v2rayN and enable system proxy

After you set an active server, v2rayN usually loads its configuration and starts or reloads the core. If your version has a Restart service option, use it once after switching, then check the logs. When there are no startup errors, set System Proxy to Set system proxy automatically. Keep the client running; you can minimize it to the tray, but don’t exit the process. The browser relies on the local proxy listener, which stops forwarding requests when the client exits.

Check the logs for configuration parsing errors, a busy listening address, or missing components. If a port is already in use, check whether another client instance is running, close the duplicate, and restart the service. Don’t respond to an error by changing several ports at once. If you do change the local listening port, make sure the system proxy points to that same port. For an initial setup, running a single client instance is safer than changing multiple settings at once.

Start v2rayNG and approve the VPN request

Select a server on the main screen and tap Connect. The first time you start the service, Android will show a VPN connection request. Confirm it’s from the v2rayNG client you’re using, then approve it. If you deny the request, the configuration remains saved, but traffic capture won’t start. After approval, you’ll usually see a VPN indicator in the status area or notification shade. That confirms the system interface is active, but you’ll still need to test the remote connection in the next step.

If Android says another VPN is already running, decide which service to keep and then reconnect. On many devices, only one VPN service can run for a user at a time, and switching may disconnect the other service. If the Connect button briefly shows a running state and then stops, check the logs for configuration loading, network permission, or core startup issues. Don’t assume routing rules are to blame.

Keep the current server, traffic-capture method, and routing profile unchanged as you move on to testing. If you also update the subscription, switch cores, and change DNS now, you won’t know which change fixed the connection—even if it starts working again. Continue changing one variable at a time when troubleshooting.

Step 04 / Test the route with a real request

Verify that it works

Open a new browser tab and visit a known accessible site that should use the proxy under your current rules. Don’t just refresh a page that’s already loaded; it may appear normally from cache without making a new connection. You can open another page on the same site that you haven’t visited before to ensure the browser makes a fresh request. The test site itself may be temporarily unavailable, so one failed page doesn’t prove the client is misconfigured.

Check the logs to confirm the request reaches the client

Check the client logs while testing. If access logs are available, confirm the request time and destination domain match your browser action, and that the outbound is the one you expect. Some default log levels don’t show every request, so the absence of an access entry doesn’t prove traffic never reached the client. If needed, temporarily enable access logging, reproduce the issue once, then restore your usual settings to avoid recording excessive browsing activity.

If desktop traffic shows no sign of being captured, first check that System Proxy is still set to Set system proxy automatically. Then see whether a browser extension or separate proxy setting is overriding it. Disable the override and restart the browser before testing again. If the browser works but another app doesn’t, that app may not read system proxy settings. This is a traffic-capture scope issue; see the TUN mode chapter of the advanced handbook instead of repeatedly recreating the subscription.

On Android, check that the VPN service stays active and that the test browser isn’t excluded by per-app proxy settings. If the service disconnects as soon as the app goes into the background, return to the client to check its status, then review system battery and background-running settings. Don’t change server settings to address a background service being stopped: one affects the remote connection, the other determines whether the local service keeps running. Troubleshoot them separately.

Test both proxied and direct-connect destinations

Next, visit a familiar site that should connect directly under your rules and confirm that split routing hasn’t blocked normal access. If the direct site works but the proxied destination fails, focus on the active server, remote configuration, and proxy outbound errors. If both types fail, first confirm the device itself has an internet connection, then check whether a proxy is pointing to a stopped local service. If only one domain fails, you can temporarily compare the result with global routing, but restore your original split-routing profile after the test.

For a DNS resolution error, first determine whether resolution failed on the local network or along the proxy path. Don’t add multiple DNS services or enable FakeDNS yet. Keep the error message and steps to reproduce it, then check the Troubleshooting section of the FAQ for a relevant fix. A change in your public IP alone isn’t enough to verify every app: it shows only the route taken by that test request, not that every process uses the same outbound.

Once the test page generates a new request, the client service stays running, and both proxied and direct-connect destinations behave as expected, the basic setup is complete. Note the working subscription group, active server, and routing profile so you can adjust them individually later. If the connection fails after a subscription update, first check whether the active configuration was replaced or removed, then repeat the verification steps here. There’s no need to start over by reinstalling the client.