Documentation · First Connection
v2rayN and v2rayNG
Subscription Setup and Connection Guide
Follow this order for your first setup: import a subscription → choose a proxy mode → connect → verify. Get one connection working before adjusting routing or advanced settings.
Allow about 10 minutes. This excludes downloading and installing the client, obtaining a subscription, and troubleshooting network issues.
Before You Start: Client and Subscription
Install the client and get a valid subscription URL from your service provider first. The client reads configuration and forwards connections; installing it does not provide a usable server. A subscription URL is not an account sign-in page. It is usually a dedicated link the client uses to retrieve configuration, available from the subscription section identified by your provider.
Before you begin, close other proxy or VPN tools that are routing traffic, and make sure your device clock is set to update automatically. Keep the default listening settings on desktop, and confirm that Android can grant VPN permission. For now, avoid changing ports, DNS, routing, and the core at the same time. Changing only the settings covered here makes problems easier to track down.
Haven't installed a client yet? Choose an installer in the Download Center. For an overview of how protocols, cores, and servers fit together, see the Glossary. This page covers only the first connection.
Step 01 · Subscription Source
Import a Subscription and Update the Server List
Copy the full subscription URL, then open the client and create a subscription group. The group name is only for your reference; name it after the provider or its purpose. The URL field determines where the client retrieves configuration. Don't put the URL in the group name or copy it with explanatory text, line breaks, or punctuation added by a messaging app.
v2rayN: Add a Group and Update the Subscription
Open the Subscription Group menu at the top, choose Subscription Group Settings, then select Add. Enter a recognizable group name in the remarks or name field, paste the subscription URL into the address field, and save and close the settings window. Then open the Subscription Group menu again and choose Update Subscription. If the interface lets you update the current group, select the one you just added to avoid updating a different source.
For the first setup, when no proxy is available yet, update without using a proxy. When the update finishes, check the server list for entries from that group. Some versions retain the previous group filter or search term. If the update reports success but the list appears empty, clear the search and switch to the intended group before deciding that nothing was imported.
v2rayNG: Save the Subscription and Update from the Main Screen
Open Subscription Group Settings from the side menu, tap Add, enter a remark, and paste the URL. Save, then return to the main screen. Choose Update Subscription from the More menu, and confirm the correct group is selected if you see an option to update the current group. Saving a URL in subscription settings does not confirm that server data has been fetched; you must run an update.
After updating, check for basic details such as server names and protocol types. Don't connect yet or edit server parameters one by one; a valid subscription imports the fields needed to connect. Manually changing the address, port, or transport settings can break the configuration provided by the subscription.
If the update fails, first check that the URL is still valid, your account is active, and your current network can reach the subscription endpoint. Being able to open a sign-in page in a browser doesn't mean the subscription API can return configuration. If you already have a working connection, try updating through the proxy. If none of your connections work, repeatedly changing the update method won't fix an inaccessible subscription endpoint. See subscription troubleshooting in the FAQ for ways to narrow down the cause.
Confirm that server entries appear in the intended subscription group. Seeing entries means the configuration was imported; you'll still need to choose how traffic is routed and test a connection.
Step 02 · Route Traffic
Choose a Proxy Mode and Routing Rules
First, separate two questions: how an app's requests reach the client, and which outbound route they use once they get there. System proxy, VPN mode, and TUN mainly handle the first. Routing options such as bypassing traffic for a region or using global proxy mainly handle the second. These are separate settings, so selecting Global does not mean every app will use the proxy.
v2rayN: Start with the System Proxy
Find System Proxy at the bottom of the main screen or in the tray menu. Locate the setting, but leave the system proxy cleared or disabled for now. After choosing an active server in the next step, enable Automatically Configure System Proxy. This sets the system's supported proxy settings to the client's local listening port, making it a straightforward way to test with a browser that follows system proxy settings.
For routing, you can start with a common built-in option such as Bypass mainland China, but choose based on your network and what you need to access. It routes some traffic directly and sends other traffic through the proxy; it does not send every request through the server. To temporarily rule out routing rules, switch to Global proxy after connecting and compare the results. Restore your usual rules when you're done testing.
Leave TUN disabled for your first setup. System proxy and TUN route traffic differently; TUN also involves a virtual network interface, permissions, and DNS handling. Verify the browser connection first, then configure TUN for a specific app-routing need by following the system guide. This is easier to troubleshoot than enabling several settings at once.
v2rayNG: Check VPN Mode and App Scope
Open Settings, find the mode option, and confirm that VPN mode is selected. Then check whether per-app proxying is enabled. If it is, make sure the browser you're using for the test is included, and note whether the list includes apps or excludes them. For your first setup, leave per-app filtering disabled to reduce the number of variables.
Next, open Routing Settings and choose rules that fit your needs. A VPN icon in the Android status bar only means the system has established the routing tunnel; it does not confirm that the remote server is reachable. Likewise, apps or addresses set to go direct will not use the proxy just because the connection button shows that the client is running.
Save your settings and return to the main screen. If another VPN connection is active on your device, disconnect it before continuing. Don't install additional DNS tools or enable other traffic-routing features yet. Keep the path simple: traffic enters this client, then the current routing rules decide whether it goes direct or through the proxy.
The desktop client is set to use the system proxy, and v2rayNG is set to VPN mode. Routing rules and app scope have also been checked. Now you can choose a server and establish a connection.
Step 03 · Connect
Test a Server and Start the Proxy Connection
Choose a server from the subscription group, test that it is reachable, then set it as the current connection target. Region or route labels in server names are for identification only; they don't replace a real test. Test results reflect current network conditions, so there's no need to switch servers repeatedly just to get the lowest number.
v2rayN: Run a Real Connection Test and Set the Active Server
Select a server and look in its context menu for Test Server Real Connection Latency or a similarly named availability test. Test a few candidates and wait for the results. A basic TCP test only indicates whether a connection to the port can be established. A real connection test also tries to access a test URL through the proxy, making it more useful for an initial check. However, an issue with the test URL itself can affect the result.
Choose a server that passed the test and select Set as Active Server or the equivalent option. Highlighting a row does not necessarily make that server active, so check the current-server indicator. Then set System Proxy to Automatically Configure System Proxy. Check the client logs for startup errors and confirm that the status bar reflects the current proxy setting.
If the logs report that a local port is already in use, resolve the conflict before continuing. Don't just change the browser's port or terminate system processes whose purpose you're unsure of. Close other proxy software you recognize and try again, or follow the guide to resolving local port conflicts to identify what's using the port and adjust the listening port and app proxy settings together.
v2rayNG: Select a Server and Approve the Connection
Tap the server you want to use on the main screen and confirm it is selected. You can run a real connection test or another availability test offered by your version from the More menu, then tap the Connect button at the bottom. The first time you connect, Android usually asks to approve the VPN connection. Confirm that the request is from v2rayNG, allow it, then return to the app and check its status.
If Android hasn't granted VPN permission, another VPN is still running, or the core reports a startup error, a button changing state doesn't prove the connection works. Open the client logs and look for the first relevant error after you tried to connect, not just the last line. If the connection times out, test another server that passed its availability check. If all servers fail, check your current network, subscription status, and device clock first.
Keep the client running while you use it. Minimizing v2rayN to the system tray is different from exiting it completely. If v2rayNG often disconnects when the screen locks, check Android's background activity and battery restrictions, and allow the client to run as needed. Don't stop at seeing a running status; the next step uses a real request to verify the proxy.
The current server is selected, the proxy core isn't reporting ongoing startup errors, and the system proxy or VPN tunnel is enabled. Now make a new web request to check the traffic path.
Step 04 · Test a Real Request
Verify That the Proxy Is Working
Verification has two parts: did the request reach the client, and did it successfully connect to its destination? Don't rely only on the connection button or on whether a single page loads. Browser cache, direct-routing rules, and an app's own proxy settings can all make one result misleading.
Start in the Browser, Then Check the Logs
Open a new browser window and visit an HTTPS page you normally access through the proxy. Refresh and wait for it to load. If you use a browser proxy extension, configure it to follow system settings or temporarily disable it so it doesn't send traffic to a different port. On Android, confirm again that the browser isn't excluded by per-app rules.
Next, check the client logs. If your log level records access, look for the requested domain and the time of your test, and note whether the request went direct or through the proxy. Log messages vary by core, and some log errors only by default. If there's no access entry, check the log level first; its absence alone doesn't prove the request never reached the client. Enable access logging temporarily if needed, then restore your usual log level.
If you use an IP address lookup page, first check which route the page used. Routing rules may send the lookup request directly, so an unchanged address doesn't necessarily mean the proxy is failing. A changed exit address is meaningful only after confirming that the request used the proxy; it also doesn't prove that every other app is being routed through it.
On Desktop, Test the Proxy with a Command
In v2rayN's settings, check the local mixed listening port. The example below uses the default port 10808 to request a sample site through the HTTP proxy and read only its response headers. If your port is different, replace it in the command first. This tests the explicitly specified local proxy path, independently of whether your browser follows system proxy settings.
curl --proxy http://127.0.0.1:10808 --head --max-time 20 https://example.com/
Run the command above in a terminal that supports curl. In environments where command aliases might cause confusion, use curl.exe explicitly. A message that the proxy tunnel was established isn't enough to confirm success; check that the TLS connection completes and the destination returns an HTTP response. A response such as access denied means a response was received, but doesn't mean the site itself is usable. If the request times out or can't connect to the local port, continue troubleshooting.
If the explicit proxy command works but the browser doesn't, check the browser's proxy extension and system proxy settings first. If the local port refuses the connection, check that the client is running and the port is correct. If the local listener works but the remote handshake fails, check server settings, account status, device time, and your current network. Isolating the problem layer by layer is more effective than repeatedly changing routing options.
Build a Repeatable Daily Routine
Once the browser request completes and the logs show the expected outbound route, your first connection is verified. For everyday use, start the client, confirm the active server, then enable traffic routing. If something stops working, retest the current server and update the subscription if needed. You don't need to import the same URL every time; duplicate groups make servers harder to identify.
When you're done, clear the system proxy in v2rayN before exiting the client completely. If you're only minimizing it to the tray and plan to keep using it, you can leave it running. In v2rayNG, tap Disconnect and confirm that Android's VPN status has ended. If webpages stop loading after exiting v2rayN, first check whether the system proxy still points to the local port.