The server list lets you choose a configuration, subscription groups organize where configurations come from, and the log panel helps you troubleshoot. System proxy settings determine whether some apps send connections through the client. This guide is for new users who have opened v2rayN but aren't sure what each area does. Follow the steps to import a configuration, select it, route traffic through the client, and verify the result—then you'll know where to look if something fails.
Get to know the five areas of the main window
v2rayN is the interface for configuring and managing connections; the core it launches handles the actual network traffic. Seeing a server entry in the window only means its configuration has been saved. Setting it as the active server doesn't necessarily mean your browser is using the proxy. Keep these two distinctions in mind to make sense of the status indicators that follow.
This guide uses the common Chinese-language interface on Windows desktop as a reference. Menus and labels may vary between desktop and WPF editions and across releases. For example, logs might appear in a bottom panel or under a separate menu. If you can't find a button with the same name, look for the equivalent function rather than changing settings just to match the screenshots.
| Area | What it does | What it doesn't mean |
|---|---|---|
| Top menu and toolbar | Import configurations, update subscriptions, open settings | Updating doesn't connect you to the proxy |
| Subscription groups | Filter and manage server entries by source | Changing groups may not change the active server |
| Server list | View and edit entries, set the active server | Selecting a row doesn't necessarily activate it |
| Log panel | View core startup, connection, and error messages | One error doesn't mean all connections have failed |
| Bottom status area or tray menu | Change system proxy, routing, and other runtime options | Enabling the system proxy doesn't route traffic from every app |
Server list: selection vs. active server
Each row in the list is usually a server configuration, often called a node. The remark helps you identify it; the address and port specify the remote endpoint, and the protocol column may show VMess or VLESS. Protocol is only one part of the configuration. The transport, TLS, and security settings must also match the server—changing the protocol name alone won't make a connection work.
- Click a row: This usually selects the entry so you can edit, copy, delete, or test it. If you select multiple rows, the next action may apply to all of them.
- Set the active server: Right-click the entry and look for “Set as active server” or a similarly named option. Afterward, check the active indicator and current-server status; don't rely on row highlighting alone.
- View a configuration: Open the entry's editor to check its protocol, address, port, and transport settings. Double-click behavior can vary by version or settings, so use the screen that actually opens as your guide.
- Check the test column: First find out whether it shows a latency test or a real connection test. A test result reflects only that test method and the conditions at the time; it doesn't tell you how fast a webpage will load.
Before deleting an entry, check whether it was added manually or came from a subscription. Subscription entries may be recreated during the next update, and changes to their address or remark may be overwritten. Manage custom configurations separately if you need to keep them long term.
Subscription groups: manage sources and fetch entries
A subscription uses a URL to retrieve a set of configurations. Its group is where you manage those configurations in the client. Adding a subscription URL and updating the subscription are separate actions: the first saves the source; the second attempts to download, parse, and refresh its entries. Subscription URLs may contain access credentials, so don't include them in public screenshots or support posts.
-
Open subscription groups
Open the manager from the top menu: “Subscription Groups” → “Subscription Group Settings.” In some desktop layouts, use the “+” button in the group area to add a subscription. Check that the form includes fields for a remark and URL.
-
Add a source
Create a group, enter a recognizable remark, paste the full subscription URL into the address field, and save. Don't enter a single-server share link as a subscription URL.
-
Update the subscription
Open the “Subscription Groups” menu and choose “Update all subscriptions (without proxy)” or the equivalent direct-update option. If the source explicitly requires a proxy and you already have a working connection, choose the corresponding update-through-proxy option instead.
-
Check the entries
Switch to the group and check whether server entries appear; also read the update message. Then right-click the entry you want and set it as the active server. Updating a subscription alone doesn't route traffic through the proxy.
“Update through proxy” isn't a general-purpose fix. If there's no working active configuration, relying on a proxy for the update may still fail. Check separately that the URL is valid, your current network can reach the source, and the response contains a subscription the client can parse—not a login page or error page.
System proxy and routing: where traffic goes and how it gets there
The system proxy registers a local proxy address with the operating system for apps that honor that setting. Routing rules take effect after the client receives a connection, deciding whether to connect directly, use the proxy, or block it. These are separate controls: changing routing rules won't make an app that ignores the system proxy start using it.
To check browser access for the first time, select “Set system proxy” from the “System Proxy” menu at the bottom of the window or in the tray's right-click menu, then choose “Automatically configure system proxy.” The options below describe ways to route traffic, not a speed ranking. Use TUN only if your apps require it.
Automatically configure system proxy
Recommendedv2rayN adds the current local proxy endpoint to your system settings. It's a good starting point for an initial check, but make sure your browser follows system settings and no extension overrides its proxy configuration.
Best for: Initial setup, browsers and desktop apps that support the system proxy
Configure a proxy in the app
Enter the local address and port in the app. Choose the right type, HTTP or SOCKS, and make sure the local inbound supports it. If you change the client's port, update the value in the app too.
Best for: Apps with their own proxy settings that need separate control
TUN mode
TUN receives traffic through a virtual network interface and involves permissions, routing, and DNS settings. Don't treat it as the mandatory next step when the system proxy fails. First confirm that a regular connection works, then troubleshoot any specific traffic-capture needs.
Best for: Apps that need traffic capture but don't follow the system proxy
The routing selector is usually in the status area; you can also find the rules under “Settings” → “Routing Settings.” With a profile that includes direct-connection rules, some traffic bypassing the remote server is expected. “Global” affects only connections that reach the client; it doesn't mean the client captures all traffic from the device.
Settings: distinguish local and remote ports
“Settings” → “Parameter Settings” is mainly for client-wide options such as local listening ports, log level, and some core options. To check a server entry's address, remote port, transport, and security settings, open that entry's editor. Some interfaces put core options on a separate tab. Don't confuse global settings with settings for an individual configuration.
The two numbers below illustrate different port roles; they're not default values to copy. Check Parameter Settings and the startup log for the actual local listening port, and use the server-provided configuration for the remote port.
- Local endpoint example:
127.0.0.1:10808is a listening address on the same device. Before using it in an app, confirm that the client is listening on that port and that the inbound supports the proxy type you selected. - Remote endpoint example:
443in a server entry is the remote service port. Changing the local port to this number won't fix remote connection issues and may cause a permissions or port-conflict problem. - Core options: Choose options that match the protocols and features your configuration requires; don't switch settings based on their names alone. Being able to save a field in the interface doesn't guarantee that the current core supports it.
- LAN access: You don't need to enable this for ordinary use on the same device. If another device needs to connect, check the listening address, firewall, and authentication requirements. A loopback address can't be used directly by another device.
Note the original value before making changes, and change one setting at a time. After saving, check that the core reloads successfully, then test access from the app. If you change the port, core, and routing rules all at once, it'll be hard to tell which change fixed the connection.
Log panel: follow the timeline of an action
Logs help you match events to the actions that triggered them. Note what you did, then check the messages from that time. A failed subscription update, a core startup failure, and a timeout reaching a remote server happen at different stages. Don't reimport every configuration just because you see the word “error.”
| Log message | What it likely means | Where to check next |
|---|---|---|
address already in use | The listening port is already in use by another process | The local port in Parameter Settings, and whether multiple client instances are running |
connection refused | A connection attempt was refused by the destination endpoint | The destination address and port in the log; first determine whether they're local or remote |
timeout | The operation didn't finish within the allowed time | Whether the destination is reachable, your current network, and the relevant server's status |
| Configuration parsing failed | The core couldn't load the generated configuration | Recently changed fields, the active core, and configuration compatibility |
Start by opening the log panel, then visit the target webpage once and check the new entries. A hidden log panel doesn't mean there were no errors. Conversely, the absence of a log entry for each visit doesn't mean no traffic passed—the current log level may not record those events. If you temporarily raise the log level, watch for increased output and restore your usual setting afterward.
Common questions and final checks
Why does clicking another row leave the same server active?
A click usually changes only the selected row. Right-click the target entry, set it as the active server, and check the active indicator and status area. If the core fails to reload, address the log error from that time. The selected row alone doesn't confirm that the server switched.
Why are there no entries after a successful subscription update?
Switch to the relevant group or “All,” then clear any list search. If the list is still empty, check the update message for parsing results and confirm that the URL returns configuration data rather than a web login page. Adding a group doesn't mean the client has retrieved any servers.
Why can't my browser connect after I set an active server?
First check that the system proxy is set to automatic, then check the browser's own proxy settings and extensions. Next, confirm that the local listener is running and the active configuration can connect. A test result is a useful clue, but it can't replace testing access in the browser itself.
The window disappeared when I clicked Close. Is the app still running?
Check the taskbar notification area for the v2rayN tray icon; closing the window may only hide it, depending on your settings. To exit, use the tray menu's exit option and check that the system proxy settings have been restored, so they don't point to a port that's no longer listening.
A complete check follows this sequence: “subscription entries are present → the right server is active → the core started successfully → the app uses the local proxy → routing behaves as expected.” Verify one step at a time. If a webpage still won't load, you'll know which stage to investigate instead of repeatedly changing settings across the client.