Step 1: Import a Subscription and Update the Group
A subscription URL lets the client fetch server configurations. It isn’t a regular webpage URL or a link for sharing a single server. Find “Subscription URL” or “Copy subscription” in your provider’s account page, then copy the entire URL. This guide uses https://example.com/sub?token=xxxx as an example; it won’t connect to a real server. Subscription URLs often contain access credentials, so don’t share them in public chats, screenshots, or online conversion tools.
v2rayN: Add a Group, Then Update It
Open the main window, go to Subscription Groups, then open Subscription Group Settings and choose Add. Enter a recognizable name, such as “Everyday,” and paste the full subscription URL. Check that there are no spaces, line breaks, or punctuation at either end, then save. If the dialog includes options such as automatic update intervals or filters, leave them at their defaults for now to avoid filtering out valid entries.
Back in the main window, choose Update from the Subscription Groups menu. If there are separate options for updating through or without a proxy, try without a proxy first, before you have a working connection. Wait for the update to finish and check the output or status message, then select the group you just created. Its list should show server details such as a name, address, port, or protocol. If you see the group name but no server entries, the URL was saved but the configurations haven’t been fetched. Don’t proceed to connecting yet.
v2rayNG: Save the Subscription, Then Refresh
Open Subscription Group Settings from the main-screen menu, tap Add, enter a name and subscription URL, then save. Return to the main screen and choose Update subscriptions from the menu. If you can update individual groups, select the one you just added. Check that new entries appear in the configuration list. Don’t paste the full subscription URL into the Import from clipboard option for a single configuration: that’s generally for server share links, not subscription management.
If the update fails, first confirm that the device itself can access the internet, then copy the URL again from its source. For authentication errors, expired URLs, or unrecognized responses, check your subscription access and URL format instead of repeatedly switching servers. Once the update succeeds, choose a configuration from a known source. Don’t change its server address, transport, or authentication settings. Start with one group and one configuration to make troubleshooting easier.
Importing a subscription answers where the configuration comes from. Next, choose how apps send requests to the client, then how the client routes those requests. Treat these as separate settings.
Step 2: Choose a Proxy Mode and Routing Policy
System proxy settings determine whether apps that follow the system configuration connect to the client’s local proxy. Routing determines whether requests received by the client are proxied, sent direct, or blocked. Enabling the system proxy doesn’t route traffic from every app, and choosing to bypass mainland China doesn’t automatically change system proxy settings. For a first setup, keep the traffic entry point and routing policy clear so you can test them separately.
v2rayN: Set the System Proxy Automatically and Keep Basic Routing
Find System Proxy at the bottom of the main window or in the tray’s right-click menu, then choose Set system proxy automatically. This points the system proxy to the client’s local listening port. You normally don’t need to enter a remote server address in system settings; the subscription provides those server details. Check the menu’s selected option afterward to confirm it isn’t set to Clear system proxy or to keep existing settings only.
Next, open the Routing menu. For a first setup, choose Bypass mainland China. These rules typically send destinations in mainland China and on the local network direct, while routing other matching requests through the selected server. The exact scope depends on the rules in your client. Don’t treat Global as a speed boost: global proxy is a routing choice that changes where requests go and may send services that worked direct on a longer route. Start with the default rules, switch temporarily only if you need to compare, then restore your original choice after testing.
This guide doesn’t enable TUN. TUN handles traffic through a virtual network interface and involves permissions, routing, and DNS, so configure it separately after verifying a basic connection. If TUN or another proxy app is already active, stop it first to avoid changing request paths through both the system proxy and a virtual network adapter. For details on traffic coverage, see the complete guide.
v2rayNG: Check VPN Mode and Routing
Open Settings and confirm that VPN mode is enabled, rather than proxy mode, which only provides a local SOCKS endpoint. VPN mode routes traffic through Android’s VPN interface. In proxy mode, other apps must be configured separately to use the local endpoint; tapping Connect alone doesn’t configure them. Then open the routing options and, for a first setup, choose a preset such as Bypass LAN and mainland China. The exact label depends on your app version.
If you’ve configured per-app proxying, check that your test browser is included. Allowlist and blocklist modes work in opposite ways: the first typically handles only selected apps, while the second typically excludes selected apps. For your first test, turn off custom per-app restrictions to keep the route simple. Don’t select system components unless you know what they do. Leave Private DNS, client DNS, ad blocking, and other settings as they are; change one variable at a time so you can identify what affects the result.
At this point, desktop setup should have a system proxy and routing policy selected; on Android, VPN mode and app coverage should be confirmed. Don’t assume the connection works just because the settings are selected. Next, start the configuration and check that the core is actually running.
Step 3: Select a Server and Connect
Return to the server list and confirm that the current group and configuration name match what you just imported. Importing a subscription doesn’t guarantee that every configuration works, and a highlighted entry isn’t always the active server. If the client shows both a selected item and a current item, follow the current-item indicator. Test one configuration from startup through verification before switching to another.
v2rayN: Check the Active Server and Startup Output
Right-click the target entry and choose the option to set it as the active server; in some versions, double-clicking does the same. The client usually loads the core when you switch the active configuration. If there’s a Start or Restart service button, use it as needed. Check the main window’s logs, output, or status area for immediate exits, configuration parsing errors, or failed listeners. Minimizing to the tray usually leaves the service running, but quitting the client stops the local proxy.
If the output reports that a port is already in use, check whether another client instance is running or another proxy app is listening on the same port. Exit duplicate processes normally, then try again; don’t force-quit unfamiliar system processes. If you need to change the local listening port, do so in the client settings, then reapply the system proxy so its port matches the listener. Changing the port in only one place while leaving the old system proxy setting can leave the core running while the browser can’t connect.
v2rayNG: Connect and Approve the VPN Request
Tap the target configuration to make it current, then tap Connect on the main screen. The first time you use VPN mode, Android will show a connection request. Confirm that v2rayNG is the app requesting access, then approve it. Without this permission, the client can save the configuration but can’t route traffic through VPN mode. After connecting, check the button’s status, the foreground service notification, and the system’s VPN indicator. Its icon may appear in a different place depending on your device.
If another app already has a VPN connection, decide which app needs to stay active, stop the conflicting connection, then try again. Android’s always-on VPN or block connections without VPN settings can also affect switching. Before your first connection, check the current policy rather than repeatedly approving prompts while overlooking an existing VPN. If the connection drops soon after starting, open the client logs to see whether the service failed to start, the configuration failed to load, or the remote connection encountered an error.
A successful core startup only means the local configuration can run; it doesn’t prove that the remote server is reachable. A single timeout doesn’t prove the configuration is wrong either—it could be the network, remote server, or DNS. Note the time and active configuration, then test an actual request. Don’t publicly share full logs containing subscription URLs or credentials. For help interpreting a specific error, see FAQ and Troubleshooting.
Step 4: Verify Traffic and Restore Your Settings
A connection icon, VPN indicator, or server latency test only tells you part of the story. A proper test confirms three things: the app can send a new request, the request reaches the expected client entry point, and routing sends it through the expected outbound. Open a new page on an HTTPS site that’s suitable for testing and where you can tell whether the content has changed. Don’t rely on reloading a cached static page or on a browser tab that was already open.
Compare a Browser Request with the Client Logs
On desktop, test in a browser that follows system proxy settings. Temporarily disable extensions that set their own proxy to avoid overriding the system configuration. On Android, use a browser covered by VPN mode. Open a new page, then check the client logs or connection details for the same time period. If the destination domain and outbound are shown, confirm whether the current rules route the request through the proxy or direct. With bypass-mainland-China routing, a site may correctly go direct, so a page loading doesn’t prove the remote proxy is working.
If the current log level doesn’t record individual requests, the absence of a domain in the logs doesn’t prove that the request missed the client. Check the client’s connection details instead; if you temporarily increase log verbosity, restore the original level after testing. Logs may contain browsing history, so hide personal information before sharing troubleshooting screenshots. Third-party IP lookup sites are only a secondary check: if a particular request matches a direct rule, its result says nothing about the route used by other apps or domains.
Troubleshoot by symptom; change one setting at a time
If the browser can’t access anything, first check whether the original network works with the proxy stopped, then check the system proxy entry and client status. If the client logs show requests that keep timing out, try another known-working configuration from the same subscription. If only domain lookups fail while other connections work, investigate DNS. If the browser works but a standalone app doesn’t, check whether that app follows the system proxy, has its own proxy settings, or is excluded by v2rayNG’s per-app rules. Don’t reinstall the client as your first step.
Command-line tools don’t always use the desktop system proxy, so a successful browser test doesn’t mean the terminal is using the proxy. This guide doesn’t change terminal environment variables or add custom routing during initial setup. After the basic test succeeds, use the complete guide to V2Ray setup to cover more apps, configure TUN, or change DNS. Repeat the same request after each change to keep your comparisons consistent.
Disconnect and Check That Your Network Is Restored
When you’re done on desktop, choose Clear system proxy in v2rayN, then quit the client normally. If you had manual proxy settings for work or your local network, restore them rather than clearing them entirely. On Android, tap the connection button to stop the service and confirm that the active connection has ended. Open a new page to verify that your regular network works. If it doesn’t, check for leftover proxy settings or VPN restrictions before deleting your subscriptions.
You’ve now checked the subscription source, traffic entry point, client status, and request path. Look up terms such as VMess, VLESS, and outbound tags in the glossary. For writing rules or setting up a long-term maintenance workflow, continue to the complete guide. Keeping this setup simple makes it easier to retrace the same steps when troubleshooting later.