This guide is for anyone who has just launched v2rayN and is unsure what the different areas around the server list do. Using the common v2rayN 7.14.x interface as a reference, it covers node columns, subscription groups, core selection, log analysis, system proxy settings, and local ports. By the end, you should be able to choose a node, start the proxy, and handle basic troubleshooting independently.
Understand the four main work areas
The v2rayN main window can be divided into four areas: the menu and toolbar, subscription groups, the server list, and runtime logs. Everyday connections do not require opening every setting. First narrow down the node source through a subscription group, select an active server from the list, then check the logs to confirm that the core started successfully.
Button positions and column names may change between 7.x releases, but the overall flow remains the same. A subscription turns remote configuration into local server entries; the server list displays and selects those entries; the Xray or v2fly core handles the connection; and the system proxy sends traffic from browsers and other proxy-aware apps to a local listening port.
Server list
- Primary action
- Select the active server
- Key details
- Latency, speed, and protocol
- Source updates
- Subscription groups
- Double-click result
- Edit the current configuration
Before connecting, make sure the highlighted row and the status bar refer to the same server.
Runtime logs
- Startup information
- Core and configuration files
- Connection details
- Destination and routing results
- Error messages
- Timeouts, port conflicts, and configuration failures
- Troubleshooting order
- Start with the latest entry at the bottom
A successful startup message only confirms that the core is running. You must still verify a webpage and the exit IP address.
| Interface area | Primary purpose | Typical use |
|---|---|---|
| Menu and toolbar | Open settings, update subscriptions, run speed tests, and switch proxy modes | Used when configuring or troubleshooting |
| Subscription groups | Filter servers by source and update a group | Used when switching service sources |
| Server list | View node details and test results, then set the active server | Used every time you connect |
| Logs and status area | Confirm core status, local ports, and connection errors | Check during startup and when problems occur |
How to read the server list columns
Each row in the server list represents an available configuration, possibly using VMess, VLESS, Trojan, or another protocol. Names are usually supplied by the subscription provider and mainly identify the region, route, or traffic multiplier; they do not indicate measured quality. The address and port identify the remote endpoint. Columns such as transport, security, TLS, and Reality describe connection parameters and normally should not be edited after import.
Pay attention to how latency is measured. TCPing mainly checks whether a TCP connection to the target port can be established; a low value does not prove that the full proxy path works. A real-connection test sends an actual proxy request through the core and is more useful for choosing a node. If one result is 68 ms and the next is 210 ms, the route is unstable—run two or three consecutive tests instead of relying on the lowest number.
- Alias or note: Prioritize the region, route type, and traffic multiplier, such as “Tokyo IEPL 1.0x”.
- Address and port: Use these to confirm that the subscription produced a complete configuration. Port 443 does not necessarily mean the same protocol is being used.
- Transport: Common values include TCP, WebSocket, and gRPC. They must exactly match the server-side configuration.
- Security: VLESS nodes may use TLS or Reality; VMess configurations may show encryption settings such as auto.
- Latency: Below 100 ms usually feels more responsive, while 100–250 ms is still suitable for most webpages. Switch nodes if timeouts persist.
- Speed: Results depend on the test target, time of day, and local network, so use them to compare nodes tested in the same round.
Real-connection latency
RecommendedThis makes the active core establish a real proxy connection, revealing handshake failures, authentication errors, and unreachable routes. Three results consistently between 72 and 88 ms are more meaningful than a single low reading.
Best for: screening everyday nodes before connecting
TCPing
Quickly probes the remote address and port. It is fast, but cannot confirm that VLESS, VMess, or transport-layer parameters can complete a handshake.
Best for: quickly ruling out completely unreachable ports
Speed test
Compares throughput through an actual data transfer. It uses traffic and is affected by the test server’s load and your local bandwidth limit.
Best for: comparing routes before downloading large files
How to organize nodes from multiple subscription sources
Subscription groups are not protocol categories; they store subscription sources and their update rules. If you use two subscriptions, keeping them in separate groups prevents all servers from being mixed into one list and lets you update only the source that changed. Name groups after the service or purpose so they are easy to recognize, rather than using generic names such as “Subscription 1” and “Subscription 2”.
Updating a subscription rereads its remote content, so node names, addresses, ports, and authentication details may change. Manually edited subscription nodes can be overwritten during an update. For personal labeling, use group filters or the client’s supported note feature instead of changing critical connection fields directly.
-
Create a group
Open “Subscription Groups” in the main window, click “+” or the add entry, enter a group name and subscription URL, then save.
-
Update contents
In “Subscription Groups”, select the relevant source and update the current subscription. For the first import, you can update all subscriptions.
-
Check the count
Return to the server list and verify the number and names of entries in the group. If the list is empty, first confirm that the group is enabled.
-
Batch testing
Select the current group first, then run a real-connection latency test to avoid sending requests to hundreds of unrelated servers at once.
-
Set as active
Select a server with stable latency and set it as the active server. Check that the status area shows the new name as well.
Practical keyword filtering
When you have many nodes, filter by a region or route marker in the name. For example, entering “Tokyo” keeps only entries whose names contain Tokyo; excluding “3x” reduces interference from high-multiplier routes. Filtering depends on node names, does not replace checking protocol parameters, and does not change remote subscription content.
If old nodes remain after an update, first confirm which group you are viewing, then check whether an option to retain expired servers is enabled. Do not repeatedly add the same subscription URL, or the list may contain duplicate entries with identical names but different group ownership.
Core type and local ports in Settings
Settings centralize the core, listening ports, startup behavior, and proxy options. When getting started, confirm that the selected Core type is available and note the local listening port. A common setup uses 127.0.0.1 as the local address and port 10808, but the effective values are shown in the current settings and status bar.
If you configure a proxy manually in your browser, the protocol and port must match. A mixed port can accept common HTTP and SOCKS inbound connections; older configurations may use 10808 and 10809 separately. When a port conflict occurs, do not keep restarting blindly. Check the logs for the occupied port, then switch to an unused value such as 10818.
-
Open Settings
From the main window, go to “Settings” → “Parameter Settings” → “Core Type” to see which core is selected for the current configuration.
-
Confirm the core
For everyday VLESS, Reality, or newer Xray configurations, choose Xray. Existing VMess configurations should retain the compatible core specified by the subscription.
-
Verify the port
In Parameter Settings, confirm the local listening port, such as 10808, and check that it listens only on the local address 127.0.0.1.
-
Save and restart
Save the settings and restart the core. Then check the logs to confirm that the new core and port have loaded, rather than continuing to use an old process.
Xray + VLESS Reality
- Core type
- Xray
- Common transports
- TCP
- Common Flow
- xtls-rprx-vision
- Local port
- 10808
The public key, short ID, ServerName, and fingerprint are usually supplied automatically by the subscription and should not be changed arbitrarily.
v2fly + VMess WS
- Core type
- v2fly
- Common transports
- WebSocket
- Common security layers
- TLS
- Local port
- 10808
The path, Host, and TLS name must match the server. An error in any field can cause the handshake to fail.
How to read startup and connection errors in the logs
Start log troubleshooting with the most recent entry. First check whether the core loaded the configuration and is listening on the local port, then see whether an outbound entry appears when you open a webpage. If the logs stop during startup, the issue is usually with the core, configuration file, or port. If connection entries appear but the remote side times out, the node, network, or remote service is more likely at fault.
During a normal startup, the logs usually show the core version, configuration loading, and listening address. Wording varies between cores, so do not look for an exact phrase. The important points are that errors such as failed, invalid, or address already in use do not appear immediately afterward and that the status bar remains in the running state.
Example troubleshooting order
1. Core: Xray
2. Local listen: 127.0.0.1:10808
3. Configuration loaded
4. After opening a webpage, an outbound connection appears
5. No timeout or connection refused appears
| Log keyword | Typical meaning | Action |
|---|---|---|
| address already in use | A local port such as 10808 is already occupied by another process | Exit the duplicate core, or switch to 10818 and restart |
| connection refused | The remote address is reachable, but the target port refused the connection | Update the subscription and switch to another node in the same group |
| timeout | The connection did not complete within the allowed time | Run a real-connection speed test and compare routes in other regions |
| invalid config | A configuration field is missing, malformed, or incompatible with the core | Reimport the subscription and verify the Core type |
| failed to resolve | Domain name resolution failed | Check local DNS, network connectivity, and routing settings |
Before copying logs for troubleshooting, remove the subscription URL, node authentication details, and complete configuration contents. Usually, the 10–20 lines around the error, the v2rayN version, Core type, node protocol, and steps to reproduce are enough to determine whether the issue involves a local port, configuration parsing, or a remote connection.
How the status bar, system proxy, and routing work together
Selecting a server does not mean traffic is already using the proxy. The complete path is: an active server is set, the core is running, the local port is listening, and application traffic is directed to that port. For desktop apps that follow the system proxy, enable the system proxy in v2rayN. Apps that ignore system proxy settings need their own proxy configuration or, where appropriate, TUN mode.
Routing determines where traffic goes after entering the core. Rule mode can keep LAN traffic and common direct destinations direct while sending proxy-required requests through the active server; global mode sends more traffic through the proxy. After changing routing rules, test both a direct destination and a proxied destination so you do not validate only one webpage.
Recommended setup: share one subscription source between desktop and Android
Desktop (v2rayN)
- Manage subscription sources by group
- Use real-connection latency to filter nodes
- Handle common apps through the system proxy
- Check that 10808 is listening in the logs
Android (v2rayNG)
- Import the same subscription link
- Use the Xray core for the relevant configuration
- Run new tests on the mobile network
- Set per-app proxying when needed
Both devices can share a subscription source, but latency and speed must be tested separately. A desktop broadband result of 65 ms does not mean the mobile network will produce the same result.
- Set a server with normal real-connection latency as the active server in the server list.
- Confirm that the logs show the core loaded and listening on the local port configured in Settings.
- Enable the system proxy and visit two different websites in a browser.
- Check that the exit IP matches the selected node region and that direct-routing rules behave as expected.
- Disable the system proxy and visit the sites again to confirm that changing the proxy state changes the traffic path.
Common main-window problems and troubleshooting order
Most main-window issues do not require an immediate reinstall. Confirm the group and active server first, then check the core and port, and finally inspect the system proxy and routing mode. This separates subscription, node, and local proxy problems. Change only one variable at a time and retest after each change for clearer results.
The subscription update completed, so why is the list still empty?
First confirm that the current subscription group is enabled and clear any keyword filter in the server list. Then update that group once and check the logs for a subscription parsing failure. If the returned content is empty, check the subscription status.
The node latency is low, so why will webpages not open?
Confirm that you ran a “real-connection latency” test rather than TCPing alone, then check whether the system proxy is enabled. Look for authentication failures, TLS handshake failures, or connection timeouts in the logs, and retest with another node from the same group.
The status bar says it is running, but traffic still bypasses the proxy?
A running core only means that the local listener has started. Open “Settings” to check the system proxy, then verify that the target app reads system proxy settings. For manual configuration, enter 127.0.0.1 and the actual port, such as 10808.
Do the logs repeatedly say that port 10808 is occupied?
Fully exit any duplicate v2rayN instance or leftover core process first. If the port remains occupied, change the local port to 10818 in Parameter Settings, save, restart the core, and update the manually configured proxy port in your browser.
Did a previously working node disappear after a subscription update?
Subscription updates follow the remote content, so discontinued entries may be removed. Switch to the correct group and check the filters. If you need to keep a manual configuration, add it separately instead of mixing it with subscription-generated entries.
Once the main window is familiar, daily use can follow a short routine: update the relevant subscription group, run a real-connection latency test, set the active server, enable the system proxy, read the logs, and verify the exit IP. When something fails, check these steps in reverse order to quickly determine whether app traffic never reached the local port or the core could not connect to the remote node.