FAQ / Setup & Connections

v2rayN FAQ

Troubleshoot subscription imports, system proxy settings and TUN. Identify where the problem occurs before changing settings.

Fetch subscription Start core Traffic entry Routing & DNS

For your first setup, start with the getting started guide. For a chapter-by-chapter reference, see the full manual.

Concepts & choosing a client

Basics

Understand the client, remote service and traffic handling options before choosing an installer.

v2rayN, v2rayNG or v2flyNG: Which one should you choose?

For desktop use on Windows, macOS or Linux, choose v2rayN. On Android, v2rayNG with the Xray core is usually the first choice; consider v2flyNG when you need the V2Fly core. The client manages subscriptions, server selection and proxy settings, while the core handles connections and routing. Before choosing, check that the client and core support the protocols and transport combinations in your subscription. Similar app names do not mean their settings are interchangeable. When switching, import the subscription again and check the proxy port and routing mode.

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

The client is a local connection tool; its installer does not include a working remote service. To connect, you need a valid server address, port, authentication details and transport settings. A subscription lets the client retrieve and update these settings in one place. Get configuration details from a service you are authorized to use, confirm the subscription is valid, then test the connection. Installing the app, importing a subscription and having an available remote service are three separate things; check each one independently. Subscription URLs may contain access credentials, so hide the full link in screenshots and support requests.

What do system proxy, routing rules and TUN mode each do?

The system proxy directs apps that follow system settings to a local proxy port. Routing rules decide whether connections that reach the core are proxied, connected directly or blocked. TUN mode receives traffic through a virtual network interface and can help with apps that ignore system proxy settings. These features work at different stages: enabling the system proxy does not send every app through the core, and changing routes cannot capture connections that never reach it. For an initial setup, test regular web access with the system proxy first, then enable TUN if a particular app needs it. Changing one setting at a time makes problems easier to isolate.

Android packages: should you choose arm64 or universal?

Check the device's processor architecture in its system information. Most newer Android phones use arm64, so the matching package is usually the best choice. A universal package typically includes multiple architectures; it can suit devices with an unknown architecture or those using another supported architecture, but it is usually larger. The device's release year is only a rough clue, not a substitute for checking its architecture. If Android says the package is incompatible, check the required Android version, processor architecture and whether the download completed. Don't remove an existing app just because an installation failed. Before installing over it, check whether you need to keep your subscriptions and custom settings.

Import & permissions

Setup

Saving the subscription URL, fetching its contents and granting system permissions are three separate steps.

How do you import a subscription in v2rayN or v2rayNG and check its group?

In v2rayN, open the subscription group settings, create a group, enter a recognizable name and the full subscription URL, then save and update that group. In v2rayNG, open the subscription group settings, add a name and URL, then return to the main screen and update the subscription. Menu labels may vary slightly by version. After the update, make sure the list isn't filtered to another group, then select a server as the active configuration. Saving the URL alone usually does not fetch its contents. Tutorials can help you practice the steps, but example domains do not provide subscription service and cannot be used to test a connection.

Subscription import fails or the format is unsupported. What should you check first?

First check whether you copied a subscription URL, a single server share link or a service management page URL. Add subscription URLs through the subscription group settings; import individual share links using the appropriate option, such as clipboard import. Check for leading or trailing spaces, line breaks and truncated parameters, and make sure you copied the complete link. If the response is a login page, expiry notice or web verification page, the client can't parse it as server data. Ask the service provider to confirm the subscription status. If it still fails, note the format or protocol named in the client error and check core support. Avoid submitting a full subscription to an online converter you don't trust.

Subscription update fails, but existing servers still connect. What should you do?

Existing servers are usually loaded from locally saved settings, while updating a subscription requires reconnecting to the subscription server. These two paths can produce different results. Keep the current group and check whether the update error is a parsing failure, connection timeout or access denial. Then confirm whether the subscription expired or its URL changed. If the client offers an option to update through a proxy, try it while an existing server is working. If the proxy itself is unavailable, use a network path that can reach the subscription server. Don't repeatedly delete and recreate the group, or you may lose notes or selection state. After a successful update, check which servers were added or removed and whether the active one is still available.

TUN reports insufficient permissions or fails to create a virtual interface. How can you fix it?

Turn off TUN first and confirm that regular proxy mode works. On Windows, follow the client prompt to run as administrator or use the service mode available in your version. On macOS and Linux, grant the required permissions and configure any components as prompted by the app. On Android, allow the system VPN connection request when first prompted. If another app is using the virtual network interface or VPN session, pause it and try again. If the issue persists, check the specific log error to distinguish a permissions problem from interface creation or route setup failure. Don't leave system security features disabled as a workaround. Note the original settings before making changes, then restore any permissions you no longer need.

Modes & maintenance

Usage tips

Choose the traffic entry method for each app, set routing for your needs and keep recoverable settings before updating.

For everyday browsing, should you use global routing or bypass mainland China?

Choose based on what you need to access. Common rules that bypass mainland China send matching mainland Chinese IP addresses and some local traffic directly, while routing other traffic through the proxy. The exact behavior depends on the selected rules, their order and the rule data. Global routing is useful for a short comparison test to check whether routing rules are causing a problem. It generally sends connections that have reached the core through the proxy; it does not mean every app is being captured. After switching modes, start a new connection to test, since existing connections may keep using their previous route. If only one site has a problem, check which rule matches it instead of changing how the whole device routes traffic long-term.

Why does my browser use the proxy while terminal commands connect directly?

Many command-line tools don't read the desktop system proxy. They use their own options or environment variables such as http_proxy and https_proxy. In the client, check the actual local address, port and proxy protocol it listens on, then follow the tool's documentation to set a proxy for the current terminal session. HTTP proxy and SOCKS addresses aren't interchangeable just by changing the port. The https in a variable name also doesn't mean the proxy itself uses HTTPS. Test in the current session first to avoid saving a broken address system-wide. Clear temporary variables after closing the client. If you're using TUN, check that an exclusion rule isn't bypassing the terminal's traffic.

Why aren't my custom routing rules working as expected?

First confirm that the target app's traffic reaches the active core. Then check that the custom rules are enabled and reloaded. V2Ray routing rules are generally matched from top to bottom; a broad rule near the top can match first and prevent a more specific rule below it from running. Also check matching fields such as domain and ip, outbound tags, and whether geosite and geoip data are available. domainStrategy affects whether domains are further resolved to IP addresses, so changing IP rules alone may not affect domain connections. Change one set of conditions at a time, start a new connection to the target and review the logs. This makes the cause easier to pinpoint than changing several rules at once.

What settings should you keep before updating the client or switching cores?

Use the client's backup or export feature to save subscription groups, manually added servers, custom routing rules, DNS settings and local listening ports. The settings that can be exported depend on your version. Backup files may contain service credentials, so store them securely. Before updating, stop the running core to avoid port conflicts between old and new processes. After restoring settings, test the basic connection with the system proxy first, then check TUN and custom rules. Switching cores is more than changing a name: supported fields and protocol combinations may differ. If startup fails, use the logs to identify incompatible settings rather than overwriting one core's entire configuration with another's.

Connections & logs

Troubleshooting

Use the error message to identify whether the issue is local listening, the network path, the remote connection or DNS resolution.

A server test times out. Does that mean the server is definitely unavailable?

Not necessarily. Test results depend on the test method, target address, current network and server configuration. Some probes can fail even when an app connection behaves differently. First check that your device's clock is accurate and that your current network can connect directly. Then compare the result with another existing server. Check the logs to see whether the issue is a server connection timeout, DNS lookup failure or TLS handshake error, and verify the server address, port and transport settings. If the same server behaves differently across networks, investigate the network path. If most servers in the subscription fail, check the service status and whether the configuration has changed instead of repeatedly running speed tests.

The client says it's running, but web pages won't load. What should you check, and in what order?

Running usually means only that the local service has started; it doesn't confirm that the remote connection or DNS lookups are working. Check that the correct server is active and review startup output for configuration errors. Then confirm that the browser is using the port the client actually listens on. Try different domains to distinguish a single-site issue from a general failure, then check the logs for DNS, handshake and outbound errors. You can switch routing modes briefly for comparison, but change only one setting at a time. If TUN is enabled, switch back to regular proxy mode to test. If regular proxy works but TUN doesn't, check for conflicts involving the virtual interface, DNS or routes. Revert temporary test changes once access is restored.

Auto-configure system proxy is enabled. Why is my browser still connecting directly?

First compare the system proxy status in the client with the proxy address and port in your system settings. Then check browser extensions, custom proxy settings and bypass lists. Some browsers use their own proxy settings, and extensions or organization policies can override system settings. Disable conflicting proxy extensions, start a new connection and check the client access log to see whether the request reaches the core. If only local domains or specific sites connect directly, that may be expected because of bypass rules. A browser's secure DNS setting can also change the DNS path, but that's separate from the proxy entry point; test them independently. When finished, restore any browser settings you still need.

How should you handle DNS lookup failures and port conflicts in the logs?

For a DNS lookup failure, first identify whether the failed domain belongs to the subscription, a server or the destination website. Then check whether the selected DNS server is reachable over the current network path and whether remote DNS depends on a proxy connection that isn't available yet. A port conflict is a local listening issue. Check for multiple clients running at once or a leftover core process, and close the conflicting program normally if possible. You can also switch to an unused port and update the app's proxy settings to match. These errors occur at different stages, so repeatedly changing servers is not a useful fix for both. When asking for help, include the time of the error, steps to reproduce it and redacted logs. Hide subscription URLs, authentication details and personal addresses.