v2rayN · v2rayNG · v2flyNG

FAQSetup and Connection Troubleshooting

Check where the setting lives, then work through the steps in order. Expand a question for specific help with subscriptions, proxy modes, TUN, and connection issues.

Clients and Cores

Getting Started

Understand the difference between clients, nodes, and traffic entry points before changing settings.

What do V2Ray, Xray, and v2rayN each do?

V2Ray is part of the Project V proxy ecosystem, with V2Fly continuing development of the related core. Xray is another core in the same technical ecosystem. v2rayN is a graphical client that manages servers, generates configurations, and launches the selected core. When troubleshooting, first distinguish a failed interface action from a core startup failure: if the subscription list is empty, check the response from the subscription URL; if the service fails to start, check the logs for core, configuration, and port details. A client’s name alone does not tell you whether a protocol combination will work. Check which core is actually in use and what the server requires.

Which client should I use on desktop or Android?

For desktop, start with v2rayN and choose an installer that matches your operating system—Windows, macOS, or Linux—and processor architecture. On Windows, you can also choose between the cross-platform desktop interface and the classic WPF interface; menus and runtime requirements may differ. For Android, v2rayNG, which uses the Xray core, is the usual choice. Consider v2flyNG if you specifically need a V2Fly core environment. Before switching clients, save your subscription URLs and custom rules, and check that the new client supports your nodes’ protocols and transport settings. Don’t overwrite your existing configuration directory.

Why do I need a subscription or server after installing the client?

The client provides local configuration and connection features, but installing it doesn’t give you a remote server to connect to. A subscription URL retrieves a set of server configurations; a single-node link usually contains connection details for one server. Get either only from a trusted source, and follow the provider’s expiration, quota, and usage rules. Enter subscription URLs in the subscription group settings—not the provider’s account page URL. Treat access tokens in these URLs as credentials and redact them from screenshots, support requests, and shared logs.

What’s the difference between system proxy, routing, and TUN?

A system proxy provides a local proxy endpoint for apps that follow the operating system’s proxy settings. Routing rules determine whether connections reaching the core are proxied, sent directly, or blocked. TUN uses a virtual network interface to capture traffic from more apps. These work at different stages: setting a system proxy doesn’t guarantee that every app’s traffic reaches the core, and global routing can’t take over apps that don’t use the proxy. For your first setup, verify browser access with the system proxy, adjust routing next, and enable TUN only if needed. Change one setting at a time to make problems easier to pinpoint.

Extraction, Imports, and Permissions

Setup

Get a regular connection working before enabling additional traffic capture. Menu names may vary slightly by version and interface.

v2rayN won’t start after extraction. What should I check?

Extract the entire archive to a separate directory that your account can write to, then run v2rayN.exe from that directory. Don’t launch it from the archive preview window. Check that the package matches your operating system and processor architecture. If the error explicitly says a runtime is missing, install the dependency specified for your version; don’t add unrelated components. Then check your security software’s quarantine history and the directory’s write permissions. If it still won’t start, record the full error, operating system version, and interface version. Keep the original directory for diagnosis and avoid repeatedly overwriting the installation.

Which Android package should I choose: arm64 or universal?

Most recent Android devices use arm64, but check the processor and the app architectures supported by your system rather than relying on the device’s purchase date. If your system supports arm64, choose that package. If you’re unsure or see an architecture mismatch, try the universal package, which includes multiple architectures. If Android says the app wasn’t installed, check available storage, the minimum system version, and whether the existing version’s signing key is compatible. Don’t uninstall a client that still has settings you need; export a recoverable configuration first, then decide whether to reinstall.

What if a subscription import fails or no servers appear after scanning?

First identify what you have: a subscription URL, a single-node link, or a webpage used only for sign-in. Enter subscription URLs in the subscription group settings, save the group, then update that group. Import single-node links through the appropriate option, such as importing from the clipboard. If scanning a QR code returns nothing, it may contain a webpage URL, a truncated link, or a format the client doesn’t support. Copy the original text again, remove leading or trailing spaces and line breaks, and check the import message. Don’t submit a private subscription to an unfamiliar online converter; it could expose the URL.

What should I do if TUN reports insufficient permissions or won’t start?

Turn off TUN first and confirm that a regular system proxy connection works. Then troubleshoot the virtual interface. On Windows, launch the client with the permissions it requests. On macOS and Linux, check the privilege escalation or service setup required by your version. Review the logs to distinguish insufficient permissions, interface creation failures, routing errors, and DNS configuration failures; don’t assume every startup error is caused by a node. Temporarily quit other virtual network adapters or tunnel tools and try again. If enabling TUN disrupts your connection, turn it off and confirm that the network recovers before making changes. Adjust settings based on the specific error, and avoid changing multiple routing options at once.

Proxy Settings and Routine Maintenance

Advanced

Manage subscriptions, routing, and app-specific proxy settings separately. Keep a recoverable copy of your configuration before making changes.

v2rayN system proxy isn’t working. What order should I check settings in?

Select an active server in the server list and confirm that the core has started. Then use the system proxy option in the main window or tray menu to configure the system proxy automatically. Check that the operating system’s proxy address and port match the client’s current listening values, then reopen the app you’re testing. Browser extensions, app-specific proxy settings, or other proxy tools may override the system settings; temporarily disable them and test again. If only one app is affected, check whether it follows the system proxy. If it doesn’t, configure that app’s own proxy, or consider TUN after a regular connection is working.

How can I group multiple subscriptions and keep updates organized?

Create a separate group for each source in the subscription group settings. Add a note that identifies the source and purpose, then enter its subscription URL. When setting this up, update each group individually first and confirm that each returns normally before updating all subscriptions. To find a server, switch to its group and filter by a keyword in the note. Filtering only changes what’s displayed; it doesn’t delete servers. Keep manually added nodes separate from subscription-managed entries, and check how the client handles existing entries before updating. If a URL stops working, edit its original group instead of creating several groups with the same name.

How do I switch between bypassing mainland China and global routing?

For everyday use, select a bypass-mainland-China rule in the routing settings. Traffic matching the rule goes direct; other traffic follows the configured rules. To check whether routing is causing a problem, temporarily switch to global proxy routing and use the same server to access the same destination for comparison. Restore your original rules when you’re done. Global routing only affects traffic that reaches the proxy core; it doesn’t automatically take over every app. Custom rule order, domain matching methods, and rule data can all affect results. Save your current rules before editing, and change one condition at a time.

Which settings should I save before updating the client?

Quit the client and make sure its related processes have stopped, then back up the configuration directory or use the export feature available in your version. Be sure to save subscription groups, manually added nodes, custom routing rules, DNS settings, and local listening ports. Store subscription URLs somewhere secure as well. Before upgrading, read the migration notes for your version, especially when switching interfaces or upgrading across major versions. Don’t assume the old configuration can be overwritten safely. After the update, check that the service starts, test one node, update subscriptions, and verify your usual apps. Remove old directories and backups only after everything is stable.

Subscriptions, Connections, and Listening Ports

Troubleshooting

Keep the exact error text and compare results using the same destination. Check your basic network first, then the core and the app.

How do I troubleshoot a failed subscription update or an empty response?

Check whether the subscription has expired, the URL has been reset, or any query parameters were omitted when copying it. Then review the update log to distinguish connection failures, certificate errors, empty responses, and unrecognized formats. If your current proxy isn’t working, try the client’s option to fetch subscriptions without the proxy; if needed, compare using another working network. A sign-in, verification, or error page isn’t valid subscription content, so importing it again won’t help. Keep your existing server list while you check the response and service status. Only then decide whether to clear and recreate the group.

Does a node test timing out mean the server is definitely unavailable?

A timeout only means the current test didn’t finish within the time limit; it doesn’t prove that all connections are unavailable. First confirm that the device itself can access the internet, then check the active server, system time, and node expiration. A TCP test and an actual webpage request through the proxy cover different things, so check both real-world access and core logs. Try another known-working node on the same network, or test the original node on a different network to narrow down the cause. If the logs show an authentication or handshake error, check the node settings and core support rather than repeatedly increasing the timeout.

The client says it’s running, but my browser can’t access the internet. What should I do?

“Running” usually means only that the local service has started; it doesn’t confirm a successful connection to the remote server. Turn off the proxy to verify your basic network connection, then turn it back on and check the active server, system proxy address, and listening port. If no sites load, look for connection or authentication errors in the core logs. If only some domains fail, check routing matches, DNS resolution, and the browser’s secure DNS settings. Temporarily disable browser proxy extensions and compare with another browser. Don’t reset all settings at once. If TUN and the system proxy are both enabled, turn off TUN first to simplify troubleshooting.

The logs say a local port is already in use. What should I do?

Use the logs to identify the specific listening port that’s in conflict; don’t assume it’s 10808. On Windows, run netstat -ano in a terminal to see listening ports and their process IDs, then check the process name in Task Manager. If another client instance is running, exit it normally; don’t terminate an unfamiliar system process. Alternatively, find the relevant local listener under the settings’ parameter options, change it to an unused port, and restart the service. Afterward, reconfigure the system proxy and update any browser extensions or apps with manual proxy settings. Having a port available doesn’t mean HTTP and SOCKS protocols are interchangeable.