At a glance

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 sectionWhat it doesDon’t confuse this with
Server listView nodes, edit settings, set the active server, and run testsSelecting a row doesn’t make that server active
Subscription groupsManage subscription URLs, filter nodes, and update subscriptionsSwitching the group view doesn’t switch the active connection
Log panelView core startup, connection, and error messagesSubscription update results aren’t the same as core connection logs
System proxyRoute traffic from apps that honor the system proxy through the local proxyNot every app uses this setting
RoutingChoose the routing rules used by the coreA 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.

  1. 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.”

  2. 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.

  3. 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.

  4. 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.

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 symptomCheck firstNext step
address already in useLocal listening port is already in useClose duplicate instances and check whether the configured port, such as 10808, is in use
connection refusedA connection was refused by the destinationCheck the destination address in the log and distinguish the local proxy port from the remote server
i/o timeoutA connection or read/write operation timed outCheck the remote address and port and your current network, then compare with another node
x509-related errorA problem occurred during certificate verificationCheck the system time, server name, and certificate configuration; don’t disable verification first
No log entry for the website requestThe request may not have reached the core, or the current log level may not record accessCheck 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.