Before you start, have the client and a subscription URL you’re authorized to use ready, and make sure your device can access everyday websites. If you haven’t installed the client yet, choose the right installer from the client downloads page. The client reads connection settings and forwards requests; installing it doesn’t provide a working server configuration. The client also doesn’t generate a subscription for you.
For your first setup, keep the default listening address, port, and core settings. Temporarily turn off other proxy tools that are managing network traffic to prevent multiple apps from changing the same system settings. Follow the four steps in order. If a step doesn’t produce the expected result, stop and troubleshoot it before changing the core, DNS, and routing all at once.
1. Import a subscription and check the configuration list
Copy the complete subscription URL first. It’s usually a link that lets the client retrieve configuration details—not a provider login page or a webpage showing your plan. Don’t include quotes, spaces, or line breaks, and keep any query parameters in the URL. Treat subscription URLs like login credentials: don’t post them publicly or include them in troubleshooting screenshots.
v2rayN: Add a group, then update the subscription
Open v2rayN, go to Subscription Group at the top, and select Subscription Group Settings. Add a group, enter a recognizable name such as “Everyday use” in the remarks field, then paste the URL into the subscription address field. Leave the filtering, conversion, and custom options at their defaults for now. Save, return to the main screen, select the new group, then use the Subscription menu to update it.
If the update menu offers “Update through proxy” and “Update without proxy,” choose the latter for your first update if you don’t have a working connection yet. Use the proxy option only if you already have a working proxy connection and the subscription URL needs to be accessed through it. Updating retrieves and organizes configurations; it doesn’t establish a connection for each one.
After the update, server entries should appear under the group. Check that the list isn’t empty and that each entry shows basic details such as protocol, address, and port. If the update reports success but no entries appear, check that you selected the right group, that no filters are enabled, and that the response uses a subscription format the client can read. Don’t keep clicking Update. Review the result or logs to tell whether the URL is unreachable, the content can’t be parsed, or the subscription has expired.
v2rayNG: Manage groups in the sidebar, update from the main screen
On Android, open the sidebar and go to Subscription Group Settings. Add a group and enter a name and subscription URL. Save, return to the main screen, and select Update subscription from the menu. If your version lets you choose a group, make sure you update the one you just saved. The configurations should appear on the main screen. If the list is still blank, check the group filter before reinstalling the app.
If you have a single share link rather than a subscription URL, use an import option such as “Import from clipboard” instead of pasting it into the subscription address field. A single import saves the current configuration; it won’t be updated automatically with a subscription. For now, just confirm the entry appears in the list. Next, choose which apps’ requests should go through the client.
2. Choose how traffic enters the proxy and select routing rules
Once the list contains configurations, keep two things in mind: the proxy mode determines how requests reach the client; routing rules determine where they go next. “System proxy” and “global routing” are separate settings. The system proxy mainly affects apps that follow the system proxy configuration. Global routing only applies rules to requests that have already reached the client; it doesn’t make every app use the proxy automatically.
First desktop setup: system proxy with split routing
Find the System Proxy option in the v2rayN main window or system tray menu. Locate “Set system proxy” and “Clear system proxy,” but leave the proxy off for now. You’ll enable it after confirming the core starts in the next step. Then find the routing options and select a built-in split-routing rule for everyday use. Common names include “Bypass LAN” and “Bypass mainland China”; labels vary by version. There’s no need to create a custom rule for your first connection.
Split routing is a good starting point for checking that everyday websites and requests meant for the proxy both work. If you temporarily switch to global routing for troubleshooting, note the original setting and switch back afterward. Global routing may send traffic that would normally connect directly through a remote exit, changing its route. It isn’t a required fix for connection failures.
This guide uses the system proxy; you don’t need to enable TUN at the same time. TUN requires additional permissions and network interface handling, so consider it only after you’ve verified a basic connection. If your browser has a proxy-switching extension, set it to follow the system proxy for the first test to avoid using an old port. Some apps ignore the system proxy and need to be configured individually. One app not using the proxy doesn’t mean the whole client is broken.
First Android setup: VPN mode and app scope
In v2rayNG settings, make sure VPN mode is selected. It uses the system VPN interface to route requests from apps within the selected scope to the client; you don’t need to install another VPN app. If another VPN is already running on the device, disconnect it first to avoid a conflict when the system switches connections.
For your first setup, keep the default per-app settings. If you’ve enabled per-app proxying before, check whether the setting is “Proxy only selected apps” or “Bypass selected apps,” and make sure your test browser is included. Then choose a split-routing option for everyday use. Now that the traffic entry point and routing rules are clear, you’re ready to start the selected configuration.
3. Select a configuration and connect
Return to the server list and select one entry to use. For the first test, stick with the same configuration. Switching entries after every failure makes it harder to tell whether the cause is a client setting or a change on the remote server. A configuration name is just a label; the protocol, address, port, and transport and security settings determine how it connects. These must match the details provided by the server.
v2rayN: Active configuration, core, and system proxy
Right-click the entry you want and choose “Set as active server” or the equivalent command. Some versions also let you select it with Enter. Confirm the active marker moves to the right entry, then check the log or status area at the bottom. v2rayN usually starts or reloads the core when you change the active configuration, but check for startup errors rather than assuming a highlighted entry means you’re connected.
Once the core is running, select “Set system proxy” from the System Proxy menu. This directs apps that support the system proxy to the client’s local listening port. If the system asks you to authorize the change, follow its prompt. If the setting doesn’t apply, check the authorization and system proxy status first; don’t grant the entire program elevated permissions without understanding why.
Then check the logs for local listening errors. Common causes include a port already in use or a browser still using an old port after you changed the listening port manually. Some configurations use 10808 as the local listening port, but check the current settings for the actual port and supported proxy types; older versions may use separate SOCKS and HTTP ports. Don’t enter the remote server’s port in your browser’s local proxy settings.
v2rayNG: Select an entry and approve the VPN connection
On Android, tap the configuration you want, then tap Start on the main screen. The system usually asks you to authorize the VPN connection the first time; approve it to create the VPN interface. The Start button and status area should show that the client is running, and the system may display a VPN icon. If you cancel the prompt, the selected configuration won’t be active. Tap Start again and approve the request.
If the client stops right after starting, open its logs and check whether the error is related to configuration parsing, core startup, or the remote connection. “Running” doesn’t necessarily mean the remote server is reachable; some connections are only made when an app sends a request. Open a webpage in your browser to test an actual request and compare the result with the local startup status.
4. Verify the traffic route and restore your settings
Connection testing should confirm both that the page loads and that the request took the expected route. A running icon alone isn’t enough, and opening a site that should connect directly won’t prove the proxy works. Use a browser included in the scope you confirmed in step 2. Open an HTTPS page that should use the proxy under your current routing rules, then refresh and check that it loads.
Test a real request, then check the logs
While the page loads, open the client logs and look for entries matching the target domain and time. A log showing that the request reached the client and used the expected proxy route is more useful than the running icon alone. Log details vary by version, and the default log level may not show every successful connection, so a missing entry doesn’t always mean there was no traffic. If you temporarily increase log verbosity, restore the default after testing to avoid generating excessive logs.
To check further, use an exit-IP lookup page you trust and compare the results with the proxy off and on. The result only shows which exit was used to reach that page; it doesn’t prove that other apps or domains take the same route. With split routing, it’s normal for a direct-connection page to show your local network’s exit IP. Don’t switch to global routing just to make every lookup page show the same result.
Next, open a commonly used page that should connect directly under your rules and make sure everyday browsing still works. Then test the app that actually needs the proxy. If the browser works but one app doesn’t, check whether the app follows the system proxy, has its own proxy settings, or is excluded by Android’s per-app rules. A successful browser test doesn’t replace testing the app you need.
If testing fails, check the proxy mode, connection, and DNS in order
If every test fails, first confirm the client is running, the intended entry is still active, and the system proxy or VPN is enabled. Then check the logs for a port conflict, connection timeout, or authentication error. Resolve local port conflicts first. For timeouts, verify the address, port, and reachability on your current network. For authentication errors, check the subscription update result and configuration settings; repeated restarts won’t fix them.
If only some domains fail while others work, check routing matches and DNS resolution next. Don’t switch DNS to an arbitrary public address; DNS resolvers also have their own routes and limitations. For details on protocol, core, and subscription format differences, see the protocol and core reference. Adjust DNS and split routing one setting at a time, after the basic connection is stable. To review the local setup steps, return to the proxy mode section of this guide.
When you’re done, restore your network settings
Before quitting v2rayN on desktop, select “Clear system proxy.” If you close the client first while the system still sends requests to its now-stopped local port, your browser may appear to have lost all network access. If you manually configured a proxy in an app, restore its previous settings there too; clearing the system proxy won’t remove app-specific settings.
On Android, tap Stop in v2rayNG, confirm the status shows it’s stopped, and check that the system VPN icon disappears. Don’t assume the VPN disconnected just because you swiped the app away from recent tasks. Open an everyday webpage to confirm normal network access has returned. You’re done when the configuration list works, proxy requests use the expected exit, direct requests still work, and the network recovers after disconnecting. Follow the same checks after future subscription updates or routing changes.