FAQ & Configuration Index

V2Ray FAQ

Troubleshoot in this order: subscription, traffic capture, routing, then DNS. Change one setting at a time, note its original value, and reconnect to test.

Select a question to expand the steps. New users should start with the quick start guide; for complete configuration examples, see the advanced handbook.

Basics

Understand the client, core, and traffic capture method before choosing a build.

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

Choose based on your device: use v2rayN on Windows, macOS, or Linux desktops. On Android, v2rayNG with the Xray core is usually the first choice; consider v2flyNG if you need the V2Fly core. The client imports configurations, switches servers, and manages proxy settings, while the core handles the actual connection. Before choosing, check which protocol, transport, and security settings the server requires rather than relying on the client name alone. Installing a client does not provide a working connection—you’ll need a valid configuration. This site does not provide subscription services.

What’s the difference between the V2Ray, V2Fly, and Xray cores?

V2Ray originated in the Project V proxy ecosystem. V2Fly continues community maintenance of related cores, while Xray is another core branch in the same ecosystem. Some basic configuration concepts overlap, but protocol extensions, transport support, and configuration fields are not fully interchangeable. Compatibility depends on the core version and server settings. A client recognizing a share link does not mean the current core supports every field in it. Before switching cores, keep a copy of your existing configuration. After switching, check the startup logs and test the connection to avoid mistaking incompatibility for a network problem.

Are system proxy, global routing, and TUN mode the same thing?

No. The system proxy directs apps that honor system proxy settings to a local proxy port. Global routing determines the default outbound for connections that have already reached the core. TUN mode uses a virtual network interface to capture eligible traffic. Choosing global routing does not automatically send every app through the proxy, and enabling TUN does not mean all traffic must go through a remote server. To troubleshoot, first confirm that traffic reaches the client, then check which rule it matches. For a first-time setup, test the connection with the system proxy, then try TUN separately once it works. This avoids changing both traffic capture and routing at once.

Which Android build should you choose: arm64 or universal?

Check your device’s processor architecture first. Most mainstream phones released after 2015 can usually use arm64, but a 64-bit processor does not guarantee that the operating system runs a 64-bit environment—check the device’s actual ABI. The universal build includes components for multiple architectures, making it suitable when the architecture is unknown or you need compatibility across devices, but it is usually larger. If installation fails with a parsing error, also check the Android version requirement, whether the download completed, and whether the app’s signature is compatible with the existing installation. Don’t uninstall the old client right away; export any configuration you may need to restore before changing builds.

Browse client options by platform →

Installation & Setup

Check subscription content, update methods, system proxy, and network permissions.

Subscription import failed. What should you check first?

First, distinguish a subscription URL from an individual share link. Add a subscription URL to a subscription group; import a single share link through the appropriate option, such as importing from the clipboard. Remove leading or trailing spaces, line breaks, and any notes added by a messaging app, but keep the full query string. Then update the group and check the logs to see whether the request failed, the content could not be parsed, or filtering removed all results. Repeated imports won’t help if the response is a login page, an information page, or an unsupported format—ask the subscription provider to confirm the format. Don’t post a full subscription URL in a public forum; its parameters may contain access credentials.

v2rayN subscription update failed or reports a certificate error. What should you do?

Check whether the subscription URL has expired, the account is still active, and your system date, time, and time zone are correct. Then check the specific log error: DNS resolution, connection timeout, TLS certificate verification, and content parsing are different issues. If your client version supports updating subscriptions through a proxy, test that option against an existing working connection; don’t rely on it if you have no working connection. For certificate errors, check the system trust store or contact the provider—don’t hide the problem by disabling certificate verification. Once the network is working again, run a manual update to confirm, then set a sensible automatic update interval instead of making repeated requests.

System proxy is on, but the browser still connects directly. What should you do?

Make sure the core is running, then check that the system proxy address and port point to the client’s current listening endpoint. For local use, this is usually a loopback address, not the remote server address. Next, check whether browser extensions, in-app proxy settings, or environment variables override the system settings. Some apps don’t follow the system proxy at all and need to be configured individually. Check the client connection logs while browsing: if there’s no entry, investigate how traffic reaches the client; if there is an entry but the direct outbound is used, check routing. Avoid running multiple programs that change system proxy settings, and clear the system proxy when closing the client if needed.

TUN mode won’t start or reports insufficient permissions. How can you fix it?

First confirm that your configuration works in regular proxy mode, then troubleshoot TUN permissions. Desktop systems may require administrator privileges, a virtual network interface component, or approval for a system network extension; follow the prompt for your client version. On Android, allow the VPN connection in the system dialog. Check whether another VPN is already capturing traffic and whether security software is blocking the component. If it still fails after authorization, inspect the first startup error instead of repeatedly toggling the switch. Be careful when changing routes on a remote device. If you lose connectivity, turn off TUN and restore the original network before checking automatic routing and DNS settings one at a time.

See the subscription update troubleshooting steps →

Usage Tips

Check settings against actual requests; don’t treat optional features as requirements.

I added a routing rule. Why isn’t the target website using the specified outbound?

Confirm that the request reaches the core, then check rule order, match fields, and outbound tags. Rules are usually evaluated in order; a broad rule near the top may prevent a later domain rule from matching. If a connection contains only an IP address, a domain rule may not work—check DNS and traffic sniffing settings as well. Make sure the geosite and geoip data are present and compatible with your core, and that the outbound tag matches the actual configuration. After making changes, reconnect before checking the logs; existing connections may continue using the previous outbound. Test with one clearly identified domain rather than changing your entire routing policy at once.

How should you configure DNS, and does FakeDNS need to stay enabled?

Distinguish system DNS, core DNS, and an app’s own encrypted DNS. Changing one does not necessarily change every DNS resolution path. When configuring core DNS, confirm that the resolver is reachable and that resolving the proxy server’s domain does not depend on a proxy connection that hasn’t been established yet. FakeDNS uses virtual addresses to preserve domain mappings for specific traffic capture and routing setups; it is not a general speed boost. If you use the system proxy and everything works, there’s no need to enable it just in case. After changing the resolution mode, reconnect, clear the app’s DNS cache if needed, and check that local network domains still resolve correctly.

How can you proxy specific apps while other apps connect directly?

On Android, check the client’s per-app proxy settings and confirm whether the selected mode proxies only the chosen apps or bypasses them. Reconnect the VPN after making changes. On desktop, start with the app’s own HTTP or SOCKS proxy settings. If you need TUN with process-based rules, confirm that your core and client versions support the relevant fields. Domain-based routing is not the same as app-based routing, and a single app may access multiple domains. Test both the app you want to proxy and one that should remain direct, then check the actual outbound. Don’t assume a rule is working just because the proxy switch is on.

Should you enable Mux multiplexing, and how should you test configuration changes?

Don’t treat Mux as an optimization that works for every connection. Whether it helps depends on the protocol, transport, core implementation, and server support. Some combinations offer no benefit and can make troubleshooting harder. Keep the defaults during initial setup, then test Mux separately once the connection is stable. Change one setting at a time, note the original value, reconnect, and test the same destination. Make sure routing and DNS haven’t changed. If failures become intermittent, restore the original setting and check the logs. For transport-specific multiplexing limits, follow the current core documentation and server requirements rather than reusing parameters from another protocol.

See the routing, DNS, and TUN configuration sections →

Troubleshooting

Preserve the details of the problem, then change one variable at a time to narrow it down.

How can you tell whether a server connection timeout is a local or remote issue?

First confirm that your local network can reach services that are allowed to connect directly, then check the server address, port, protocol, and security settings. A DNS resolution failure in the logs is different from a connection timeout, so check DNS and network reachability separately. Without changing your configuration, try another network or compare with a known working configuration to narrow down the cause. Some connectivity tests rely on a specific test address, so a failed test alone doesn’t prove the server is unavailable. If only one configuration keeps failing, ask the provider to check the remote server. If all configurations fail, start with your local firewall, network, and core startup logs.

The client says it’s connected, but websites won’t load. What should you do?

“Connected” usually means the client or VPN interface has started; it doesn’t mean requests are reaching their destinations. Check whether a connection appears in the logs when you open a website, then inspect the outbound and error type. No log entry? Check system proxy or TUN traffic capture. A logged DNS resolution failure points to DNS; a handshake error calls for checking the protocol, security settings, and system time. If only some sites fail, check routing rules, the destination service, and the app’s own proxy settings. To narrow down the issue, turn off TUN and test the same destination with the system proxy, leaving everything else unchanged. Once the basic connection works, restore your original traffic capture method.

Subscription update succeeded, but the server list is empty. What should you do?

Check that you selected the right subscription group and that the search box, server filters, or display filters aren’t hiding the results. A successful update may only mean the URL request completed; the response might not contain any recognizable servers. Look in the logs for parsing failures, unsupported formats, or messages that no valid entries were found, then ask the provider to confirm the subscription format and account status. Don’t delete all groups just to try importing again. Keep your existing configuration and test one group first. If you’ve changed a filter expression, clear the filters temporarily and update again. Once the issue is resolved, restore filters one at a time to identify which one excluded the servers.

v2rayNG disconnects in the background or uses more battery. What should you adjust?

First determine whether the system is stopping the app, the connection drops when the network changes, or the client is under sustained heavy load. If the app is stopped in the background, use your device’s system settings to allow background activity and adjust battery optimization if needed. If battery use has increased, check which apps are continuously using the network, whether detailed logging is enabled, and whether routing sends unnecessary traffic through the proxy. Use per-app proxy settings to limit traffic capture if needed. Don’t automatically disable every battery restriction; change settings one at a time and monitor the results. When you’re done, disconnect in the client and check the system VPN status. If the problem persists, record redacted logs and the steps to reproduce it for further troubleshooting.

Back to issue categories ↑