Getting Started / First Connection
v2rayN Subscription Setup
and Connection Verification
Follow this order for your first setup: import a subscription → choose a proxy mode → connect → verify. Start with one connection you can test, then adjust routing and advanced options.
If the client is installed and you have a valid subscription URL, you can complete the setup in about 10 minutes. Not installed yet? Visit the client downloads page to choose the right option for your device. The client reads configuration and establishes connections; you’ll need to obtain a subscription URL separately. Installing the client does not provide a working server.
Step 1: Import a Subscription
Make sure you copied the full subscription URL, not the address of a subscription management page. Your provider supplies the URL so the client can retrieve server configurations. A management page is for signing in, checking your plan, or managing devices; it cannot be used as a subscription URL. Copy only the URL—no surrounding instructions, spaces, or line breaks. It may contain credentials, so paste it only into a trusted client. Never include it in public screenshots, chat logs, or online conversion tools.
v2rayN: Add a Group, Then Update It
In the main window, open Subscription Group and select Subscription Group Settings. Use the add option to create a group. Enter a recognizable name in the remarks field and paste the subscription URL into the address field; leave other options at their defaults for now. Save, return to the main window, then use the Subscription Group menu to update the current subscription. If there are multiple update options, try updating without a proxy first if you’re not connected yet. That way, fetching the subscription won’t depend on a connection that hasn’t been established.
When the update finishes, switch to the group you just created and check whether servers appear in the list. Entries mean the client retrieved and parsed configurations, but not that every server will connect. Don’t change addresses, ports, or transport settings in bulk, and don’t delete existing configurations yet. The connection test will help determine what works. If the list is still empty, check the status message or logs to distinguish a timeout, access denial, or unrecognized response.
v2rayNG: Save the Subscription, Then Update from the Main Screen
Open the main screen menu and go to Subscription Settings. Tap Add, enter a remark and subscription URL, then save. Return to the main screen and choose Update subscription from the menu. If your version offers group selection, switch to the relevant group first. Wait for the update to finish and confirm that servers appear in the list. Saving a URL in subscription settings does not mean the list has been populated; check the update result and make sure entries are visible.
If you have a single share link starting with vmess://, vless://, or trojan://, use the import-from-clipboard option instead of saving it as a remote subscription URL. A share link describes one configuration; a subscription URL retrieves a set of configurations that can be updated. If you’re unsure, read the glossary entry on subscriptions and servers. Once the list has entries, keep the current group and continue to choosing a proxy mode.
Step 2: Choose a Proxy Mode
For your first setup, enable only one method of capturing traffic. Proxy mode determines how app traffic enters the client; routing rules determine how traffic is handled once it gets there. These are separate settings. To make testing easier, pause other proxy tools and disable browser extensions that manually set a proxy. Don’t run multiple clients that repeatedly change system proxy settings: the interface may show one as enabled while the actual port points to another program.
v2rayN: Start with the System Proxy; Leave TUN Off
In the main window or tray menu, find System Proxy and select Automatically configure system proxy. This directs the system’s supported proxy settings to the client’s local listening address. Most browsers that follow the system proxy will use it, but apps that manage their own connections may not. For your first test, use a browser rather than relying on a game or command-line tool as your only indicator.
Set routing to Bypass LAN or the equivalent rule in your version. This keeps traffic to local devices such as routers and printers from being unnecessarily forwarded. Global routing does not mean every app is captured: it applies only to connections that have already entered the client. Keep the default local listening port unless the logs report a port conflict. If you change it, update any apps where you manually entered a proxy address.
TUN mode uses a virtual network interface to capture traffic. It can handle apps that ignore the system proxy, but adds more permissions, routing, and DNS settings to check. Leave it off for your first connection and try it separately after verifying your browser. If you need TUN mode, see the troubleshooting guide for permissions and traffic capture. There’s no need to adjust advanced settings before completing a basic connection.
v2rayNG: Choose VPN Mode and Check App Scope
In v2rayNG settings, make sure VPN mode is selected. It captures traffic through Android’s VpnService, and Android will request permission the first time you connect. For your initial test, turn off per-app proxying so the browser isn’t affected by the app list. If you need per-app proxying, check whether the list means “proxy only selected apps” or “bypass selected apps.” These are opposites, so a checkmark alone doesn’t tell you which apps are proxied.
Android typically allows only one app to hold the system VPN connection at a time. Other network tools that use the same mechanism may replace v2rayNG, so stop them first. Once you’ve set the mode, return to the server list. On desktop, return to the server list as well. The traffic entry point is now set; next, choose a server to handle that traffic.
Step 3: Select a Server and Connect
Test one server with a complete configuration first; don’t change the protocol, transport, and DNS at the same time. Server names are labels from your provider, not reliable indicators of connection quality or actual location. Latency tests help narrow down your options, but they don’t prove a connection works. First, start the client with a clearly selected active server, then verify the result in your browser.
v2rayN: Test the Real Connection, Then Set an Active Server
Select a server in the list, right-click it, and look for Test server real connection latency or the equivalent option containing “real connection” in your version. If you selected multiple servers, wait for the test to finish, then choose one with a valid result. A real connection test sends a request to a test URL through the server, making it a closer test of the actual proxy path than simply checking whether the server port is reachable. Results still depend on the test URL, routing rules, and current network conditions.
TCPing helps check whether the target port is reachable, but an open port does not confirm that authentication, encryption, or transport settings are correct. Conversely, a failed real connection test doesn’t mean every server in your subscription is unusable; the test URL itself may be inaccessible. Don’t chase the lowest number during initial setup—find a server that can complete a request. See the glossary for the difference between real connection latency tests and connection tests.
After choosing a server, double-click its row or right-click and set it as the active server. Check that the active marker changes. v2rayN starts or reloads the core using the active configuration, so you usually don’t need to look for a general Connect button. Make sure System Proxy is still set to Automatically configure system proxy, then check the logs. If you see a port conflict, configuration parsing error, or core startup failure, fix the local startup issue first; switching remote servers usually won’t resolve it.
v2rayNG: Select a Server and Approve the System Request
Tap the server you want in the list and confirm it is selected, then tap Connect on the main screen. On the first run, Android will show a VPN connection request. Verify that it’s from v2rayNG, then allow it. If you deny permission, the imported configuration still won’t be able to capture app traffic in VPN mode. After connecting, check the client button and the system VPN status indicator; a highlighted server row alone doesn’t confirm the connection is active.
If the Connect button immediately switches back to Stop, open the client logs and check the first error that appeared during startup. If the connection works at first but drops when the app goes into the background, check Android’s background activity and battery restrictions. Troubleshoot that separately after confirming the connection works in the foreground. Leave the client running without changing settings and move on to the final verification step.
Step 4: Verify That the Proxy Is Working
Check both the client status and app requests. An enabled system proxy, a VPN icon, or a latency result confirms only part of the connection path. A reliable first test is to use the same browser and test page with the connection on and off, then check the logs to see where the requests went.
Check the Status First, Then Make a New Browser Request
On desktop, confirm the active server is the one you selected, the core isn’t reporting repeated errors, and System Proxy is still set to Automatically configure system proxy. On Android, confirm v2rayNG is running, another app hasn’t taken over the system VPN, and the browser is included in the current per-app proxy scope. Then open a new browser tab and visit a known, responsive HTTPS page. Don’t just refresh a page that has already loaded; cached content may still appear after the connection drops.
Check the client logs for a connection entry at the time of your request. An entry means the request reached the client; check whether it matched a direct or proxy outbound route. If the current log level doesn’t show every request, don’t immediately switch to the most verbose level. First use the mode, app scope, and comparison test to narrow things down. Before sharing logs, redact subscription URLs, credentials, server addresses, and personal browsing records.
Compare with the Connection Off and On
Choose a test destination that should use the proxy under your current rules. Connect, visit it, and note the result. On desktop, change System Proxy to Clear, then make a new request to the same destination. On Android, stop the v2rayNG connection and try again. Finally, restore the system proxy or VPN connection and visit once more. Change only one setting at a time; switching servers, browsers, and networks together makes it hard to tell what caused the change.
If the page loads with the connection both on and off, that doesn’t prove the proxy isn’t working. The destination may be reachable directly or match a bypass rule. You can also compare results using a trusted page that reports your public IP, but interpret the address in the context of the route used to reach that page. With split routing, the exit shown for one page doesn’t represent every app, and it doesn’t mean all connections use the same server.
Choose Your Next Step Based on What You See
If the real connection test succeeds but the browser request never appears in the logs, first check whether the browser follows the system proxy or is excluded by per-app rules. If the request appears but keeps timing out, check the active server, remote service status, and network conditions. If only some domains fail, keep the working configuration and troubleshoot DNS and routing rather than reinstalling the entire client. For certificate errors, don’t disable certificate verification; check the device clock and the server name in the configuration first.
Once verification succeeds, keep the basic settings that you can reproduce. Change one option at a time and test before deciding whether to keep it. That way, you can return to the last working state if something goes wrong. Before closing the desktop client, clear the system proxy so apps don’t keep sending requests to a local port that is no longer listening. On Android, stop the connection before exiting. Subscription updates can change the server list, so check that the active server is still there afterward.