This guide is for anyone who has opened v2rayN but isn’t sure where to start. Using the Windows desktop client as its example, it covers importing a configuration, setting an active server, starting the core, configuring the system proxy, and checking logs—with steps to verify local ports and troubleshoot connection issues. Menus may move between versions, so look for the feature name rather than relying on a screenshot’s exact layout.
1. Main window layout: configurations, core, and system proxy
v2rayN is a desktop client interface; cores such as Xray handle proxy connections. Seeing a server in the list only confirms that its configuration is saved. Selecting a server doesn’t prove that your browser is using the proxy, either. To confirm connectivity, check that the configuration works, the core is running, and the app’s traffic is reaching the local listening port.
When you first open v2rayN, maximize the main window and locate the top menu, subscription groups, server list, log panel, and status bar. Some versions hide the log panel, and window size can affect which buttons are visible. Here, “system proxy” refers to the Windows proxy settings—not a switch that connects to a remote server.
| Interface section | What it does | Don’t confuse this with |
|---|---|---|
| Server list | View nodes, edit settings, set the active server, and run tests | Selecting a row doesn’t make that server active |
| Subscription groups | Manage subscription URLs, filter nodes, and update subscriptions | Switching the group view doesn’t switch the active connection |
| Log panel | View core startup, connection, and error messages | Subscription update results aren’t the same as core connection logs |
| System proxy | Route traffic from apps that honor the system proxy through the local proxy | Not every app uses this setting |
| Routing | Choose the routing rules used by the core | A separate setting from the system proxy |
2. Server list: import, select, and set an active server
The server list typically includes columns for type, alias, address, port, transport, and test results. VMess and VLESS are protocol names; TCP and WebSocket are transport settings; TLS and REALITY are connection security settings. Don’t infer a node’s protocol from its alias, or assume two nodes are configured the same just because both use port 443.
Start by testing one configuration from a trusted source before organizing multiple entries. When copying a share link, keep it intact: don’t truncate the encoded content after vmess:// or remove query parameters from a vless:// link. Add subscription URLs through subscription group management rather than importing them as individual nodes.
-
Import a configuration
Copy the complete share link, then in the main window choose “Server” → “Import batch URLs from clipboard.” If your version uses a different label, choose the option that includes “Import from clipboard.”
-
Check the node
Find the new row, then use the right-click menu’s “Edit server” option to check the address, port, and transport settings. The remote port, such as 443, is set by the server. Don’t change it to the local listening port, 10808.
-
Set it as active
Right-click the target row and choose “Set as active server.” Confirm that the active marker changes, then check the logs to see whether the core loaded the new configuration successfully. A selected row highlight alone doesn’t mean the server was switched.
-
Test the connection
Run “Test server real connection latency” for the row, then open the website you actually need. A successful test only confirms that the specific test request worked; still check the system proxy and any proxy settings in the app itself.
Interpret test results according to the test type. For example, a TCPing result of 42 ms and a real connection latency of 310 ms aren’t contradictory: the former mainly measures the TCP handshake, while the latter also includes the proxy handshake and test request. These are example readings, not measurements from a particular node, and they don’t predict download speed.
3. Subscription groups: filtering the list doesn’t switch connections
A subscription group holds a subscription URL and the servers it generates. It manages where configurations come from and how they’re updated; it doesn’t choose the best node for your network. When you switch groups in the main window, the list shows only that group’s servers, but the active server may still belong to another group.
To add a subscription, go to “Subscription groups” → “Subscription group settings,” create a group, enter a note and subscription URL, and save. Then return to the “Subscription groups” menu and update it. Common versions offer “Update all subscriptions” and options to update “through proxy.” Choose the update method based on whether you can access the subscription URL directly.
- First import: If you don’t have a working node yet, try updating without a proxy first. If the subscription URL is only accessible through a proxy, import a working individual node first.
- Update through proxy: First confirm that the active server can access websites. Enabling this option won’t fix a failed node.
- List is empty after updating: Check whether another group is selected or a search term is still applied. Then check the update results for the node count and any errors.
- Similar names: Distinguish groups by source and purpose, such as “Primary subscription” and “Backup subscription.” Notes help identify groups but don’t change connection settings.
Subscription URLs often contain access tokens; treat them like account credentials. When troubleshooting, you can share the update time, error type, and node count, but don’t post the full subscription URL in a public screenshot. A successful update only means the client fetched and parsed the content—it doesn’t confirm that each node can connect.
4. System proxy and routing: what each setting controls
In the Windows version, open “System proxy” in the status bar or right-click the app icon in the taskbar notification area, then choose “Set system proxy” or “Clear system proxy.” The first points the system proxy to the client’s local listening address; the second removes that system proxy setting. Clearing it doesn’t necessarily stop the core, and apps with manually configured proxies may still use it.
Routing is a separate layer. After traffic reaches the core, routing rules decide whether it goes through the proxy, connects directly, or gets blocked. So setting the system proxy doesn’t mean all traffic will go through the remote server. Likewise, global proxy routing won’t capture apps whose traffic never reaches the core.
Connection methods: system proxy vs. TUN mode
System proxy
- Choose “Set system proxy” under “System proxy.”
- Best for browsers and desktop apps that honor the system proxy.
- If one app isn’t working, check its own proxy settings first.
- Before closing the client, make sure the system proxy is cleared as expected.
TUN mode
- Enable it from “Enable TUN” in the main window; its location varies by version.
- Routes traffic through a virtual network interface; the scope depends on the configuration.
- Usually requires administrator privileges or a service configuration.
- After enabling it, check the effects on DNS, routing, and other network software.
First verify one node using the system proxy, then configure TUN if your apps require it. Don’t change the connection method, DNS, and node settings all at once.
For example, if a browser works but a command-line app doesn’t, first check whether that app reads the Windows system proxy instead of switching nodes right away. Conversely, if all apps that honor the system proxy fail, check the local listener, active server, and core logs first.
5. Settings: check local listening and remote server parameters
Go to “Settings” → “Parameter settings” and check the local listening ports, whether LAN connections are allowed, the log level, and core-related options. Depending on the version, these may be under tabs named “Basic settings,” “Core,” or something similar. Don’t assume the default ports from an old guide still apply. After saving, check that the core reloads successfully.
The cards below illustrate how the parameters relate; they aren’t fixed values to copy. The first assumes the mixed listening port is set to 10808. The second lists the details to check with your provider when editing a remote node. The client’s local port and the server’s remote port belong to separate connections.
Local listener example
- Listen address
127.0.0.1- Mixed port
10808- HTTP proxy
http://127.0.0.1:10808- SOCKS5 proxy
127.0.0.1:10808
Both protocols use the same port only if it’s configured as a mixed listener. For separate listeners, use the port specified for each one.
Remote node details
- Server address
- Use the domain name or IP address in the imported configuration
- Server port
- For example,
443; use the value configured on the server - User ID
- UUID for VMess or VLESS
- Transport and security
- Check the node’s WS, TLS, or REALITY settings
Port 443 doesn’t guarantee that TLS is configured correctly; SNI, path, public key, and other fields must still match the server.
If an older configuration uses separate ports for the HTTP proxy and SOCKS5 proxy, such as 10809 and 10808, don’t move every app to 10808 just because that’s the mixed-port example above. First check how the client is actually listening. For local use, keep the loopback address and disable LAN access. If you need to share the proxy, configure the listening scope, firewall, and access controls separately.
6. Log panel: troubleshoot startup, listening, and requests
First expand the log panel in the main window. If it’s hidden, look in the menus for “Logs” or “Show logs.” Then switch the active server once and check the new startup entries, followed by a single website request. A controlled test at a specific time is easier to diagnose than searching through a large backlog for red text.
More errors in the log don’t necessarily mean a more serious problem, and no errors doesn’t prove that traffic reached the core. The log level controls how much detail is recorded. For a short troubleshooting session, adjust the relevant logging options under “Settings” → “Parameter settings,” then restore the original settings to avoid generating excessive logs.
| Message or symptom | Check first | Next step |
|---|---|---|
address already in use | Local listening port is already in use | Close duplicate instances and check whether the configured port, such as 10808, is in use |
connection refused | A connection was refused by the destination | Check the destination address in the log and distinguish the local proxy port from the remote server |
i/o timeout | A connection or read/write operation timed out | Check the remote address and port and your current network, then compare with another node |
x509-related error | A problem occurred during certificate verification | Check the system time, server name, and certificate configuration; don’t disable verification first |
| No log entry for the website request | The request may not have reached the core, or the current log level may not record access | Check the system proxy, app proxy, and log settings before testing again |
To check which process is listening on a port, run this read-only command in PowerShell. Replace 10808 with the port shown in your settings. OwningProcess is the process ID; look it up under the “Details” tab in Task Manager. No output, or a message that no object was found, means there’s no matching TCP listener on that port.
Get-NetTCPConnection -State Listen -LocalPort 10808 |
Select-Object LocalAddress, LocalPort, OwningProcess
Before sharing logs, redact sensitive information such as subscription tokens, user IDs, server addresses, and visited domains. The error time, core name, relevant error message, and action you just took are usually more useful for reproducing the issue than a complete configuration.
7. Common questions about the main window
Why am I still using the old exit IP after selecting a node?
Right-click the row and choose “Set as active server.” Confirm the active marker changes, then start a new connection test. Existing long-lived connections may keep using the old route. Also check whether the destination domain is routed directly; a single page refresh isn’t enough to tell whether switching failed.
The subscription updated successfully, so why can’t I find the imported nodes?
Back in the main window, select the corresponding subscription group and clear any list search filters. Then check the update results for the number of valid nodes. If the count is zero, inspect the subscription content and parsing errors; don’t keep creating the same group.
The real connection test succeeded, but why can’t my browser open websites?
Make sure “Set system proxy” is selected under “System proxy,” and check whether the browser has its own proxy settings. Compare these with the local listening port in parameter settings. If TUN is enabled, also check its startup logs and DNS settings.
Does closing the window exit the client?
Not necessarily. Closing the window may minimize the client to the taskbar notification area. Check for its icon there. To stop the client, choose “Exit” from the icon’s right-click menu. Make sure the system proxy is cleared too, so Windows doesn’t keep pointing to a port that’s no longer listening.
Can I use the desktop settings on Android as they are?
You can usually import node share links or subscriptions into each client, but don’t copy the Windows system proxy steps. v2rayNG uses the Xray core, while v2flyNG uses the v2fly core. Configure VPN access and per-app proxy settings separately in the Android client.
Follow the same checks each time: confirm the active server, check whether the core started, verify the system proxy or TUN connection, then check routing and the target request. Checking each layer separately helps pinpoint whether the issue is the configuration source, local access, or remote connection.
Client downloads and first-time setup
Choose v2rayN or an Android client based on your operating system and processor architecture. For first-time setup, follow the steps for importing a configuration, starting a connection, and setting up the proxy.