V2Ray FAQ & Troubleshooting
Find help with subscriptions, proxy modes and connection issues. Start by checking your network and core status, then change one setting at a time to pinpoint the cause.
New to the client? Start with the installation and setup guide. For routing, DNS or TUN settings, see the advanced configuration handbook.
Getting Started
Understand the difference between clients, core engines, subscriptions and routing to avoid troubleshooting the wrong settings.
What do V2Ray, core engines and GUI clients each do?
V2Ray generally refers to the technologies and tools in the Project V proxy ecosystem. Core engines handle protocols, establish connections and apply routing; GUI clients manage servers, subscriptions and runtime options. v2rayN, v2rayNG and v2flyNG are GUI clients, while V2Fly and Xray are related core engine projects. When troubleshooting protocol compatibility, check both the client version and the core engine actually in use—not just the name shown in the interface.
Which should you choose: v2rayN, v2rayNG or v2flyNG?
For Windows, macOS and Linux desktops, start with v2rayN. On Android, v2rayNG with the Xray core is usually the first choice; consider v2flyNG if you need the V2Fly core. All three require a valid server configuration to connect; installing a client does not provide a working service. Before choosing, check your OS, processor architecture, and the protocols and transport settings required by your server, then select the matching download.
What’s the difference between a subscription link and a single-server share link?
A subscription link usually points to an updatable server list; refreshing it fetches the latest configuration from that source. A single-server share link typically describes just one server and won’t automatically reflect changes at the source. Check which type you have, then use the subscription settings or import the server from your clipboard. Subscription URLs may contain access credentials, so don’t post them publicly. When asking for help, describe how you imported the link and include the error message, but never share the full URL.
How do system proxy settings, routing rules and global proxy mode work together?
System proxy settings determine whether apps that follow the OS settings send connections to the client. Routing rules determine whether connections entering the core go direct or through a proxy. Global proxy mode usually sends all traffic that reaches the core through the proxy outbound; it doesn’t guarantee that every app’s traffic enters the core. Some versions also separate the system proxy setting from routing options. Check the traffic entry point and outbound rules separately—one global setting doesn’t tell you which apps are covered.
Can you switch freely between VMess, VLESS, Trojan and Shadowsocks?
Changing the protocol name in a client’s drop-down menu isn’t enough. The protocol, server port, authentication, transport and TLS settings must match the server, and the client’s core must support them. When importing a share link, keep the parameters provided by its source. To switch protocols, get a complete server configuration for the new protocol. Security features such as REALITY also require support from a compatible core, so check the configuration requirements if you run into compatibility issues.
Installation & Setup
Choose the right package, then configure subscriptions, traffic entry points and system permissions.
Which Android package should you choose: arm64 or universal?
Most mainstream Android phones released since 2015 can try arm64 first, but the right choice depends on the processor and the app architectures supported by the OS. Some devices have 64-bit processors but run a system that supports only 32-bit apps, so an arm64 package may not install. If you’re unsure, choose universal: it includes components for multiple architectures and is usually larger. If installation still fails, check the minimum Android version and make sure the download completed.
The server list is empty after importing a subscription. What should you check?
Open the subscription settings and make sure the URL was saved to the intended group, then update that group. Saving the URL alone may not populate the server list. If the update succeeds but the list is still empty, check the selected group, name filters and subscription contents. If parsing fails, make sure you copied the full subscription URL—not a login page, information page or single-server share link. Temporarily disable filters and update again to tell missing content from a display-filter issue.
Which macOS package should you choose: Apple Silicon or Intel?
Open About This Mac and check the chip or processor. If it shows an Apple M-series chip, choose the Apple Silicon arm64 package; if it shows an Intel processor, choose x64. Prefer the package built for your Mac’s architecture rather than relying on compatibility translation. If macOS displays a security warning on first launch, verify the file’s source and system requirements, then follow the security guidance in System Settings. Don’t disable system-wide security just to run the client.
System proxy is enabled, so why isn’t my browser using it?
First confirm the core is running and that the system proxy address points to the local address and port the client is actually listening on. Then check whether the browser has its own proxy settings or an extension that overrides the system settings. Enterprise policies, other proxy software or an outdated manually entered port can also cause conflicts. For troubleshooting, use just one proxy manager, reopen the browser and test again. Check the client logs to see whether the request reached the core.
What should you do if TUN mode won’t start or reports insufficient permissions?
Desktop TUN mode usually creates a virtual network interface or changes routes. Grant the administrator, helper-service or system permissions requested by the client, then try again. On Android, approve the system VPN connection request and check whether another app is already using the VPN connection. Requirements vary by OS and client version, so start with the first error in the startup log instead of repeatedly toggling settings. Quit other VPN or TUN tools before testing to avoid route and interface conflicts.
Tips & Usage
Keep working configurations, understand traffic entry and outbound routing, and make updates and mode changes easier to track.
How should you group subscriptions to avoid choosing the wrong server?
Create a separate group for each subscription source and give it a recognizable name based on the source or its purpose. Don’t put credentials from the URL in the group name. Update each group after importing and check its contents, then set any name filters you need. Filters only change what’s displayed or selectable; they don’t delete servers. Keep manually edited servers in a separate group so subscription updates don’t overwrite them, and check that the selected server is still valid after updating.
For everyday use, should you choose rule-based routing or global proxy mode?
For everyday use, start with rule-based routing: send the destinations that need a proxy through it and connect to the rest directly according to the rules. Global proxy mode is better for briefly checking whether a problem is related to routing, not as a universal fix. If a site works in global mode but not with rules, check its domain, related resources and rule order. Restore your usual mode after testing. The client’s labels for direct, global and rule-based modes may vary by version.
How can you tell whether an app’s requests are going through the client?
With the client running normally, open its logs or connection history, then make a new request from the app you’re testing. Look for the destination address and outbound details. Existing long-lived connections may not reconnect immediately, so close and reopen the app if needed. A page loading successfully doesn’t prove it used the proxy; check the selected server, routing result and logs too. Before sharing logs, redact subscription URLs, credentials and other sensitive information.
Should you change the local listening port, and what else needs updating if you do?
If there’s no port conflict, keep the client’s default settings; you don’t need to use a particular number from a tutorial. If you change the listening port, also update the system proxy, any browser-specific proxy settings and other apps configured manually. Check whether the port is for HTTP, SOCKS or mixed traffic—a matching number doesn’t make the protocols interchangeable. Keep listening restricted to localhost if you only need local access. Before enabling LAN access, understand the authentication and firewall settings.
Should system proxy also be enabled when TUN is on?
You usually don’t need to enable both traffic entry points just to cover more apps. Test TUN on its own, following the client’s instructions. Enabling both isn’t always a problem, but it makes it harder to trace where requests enter, rule out loops and clean up leftover settings. Note the original settings, turn off system proxy, then enable TUN and test regular apps and DNS requests. If a specific app needs its own proxy, configure it separately. Restore the relevant switches before quitting the client so you don’t leave a dead proxy address behind.
Troubleshooting
Start with the earliest error, then distinguish issues with your local network, subscription source, server connection and destination.
If a subscription update fails, should you try direct or proxied updates first?
First identify the error—timeout, name resolution, authentication rejection or content parsing failure—then choose how to update. If the subscription URL is reachable directly, try the client’s direct update option. If it requires a proxy, select a working server first and update through the proxy. If all existing servers are down, don’t rely on them to fetch an update; contact the subscription provider to confirm a working access method. Switching proxy routes repeatedly won’t fix an expired link, access denial or a URL that returns a login page.
A server test keeps timing out. Does that mean the server is down?
A timeout means the test didn’t get the expected response within the allotted time; it doesn’t prove the server is down. Check your local connection, compare other servers using the same test, and verify your device’s clock, subscription validity and server settings. Clients may use different methods for latency tests, so their results aren’t directly comparable. If every server times out, check the local network, core startup and test target first. If only one times out, check that server’s status.
The client says it’s connected, but webpages won’t load. How do you troubleshoot?
Connected may only mean the core or the OS VPN interface started successfully; it doesn’t guarantee that remote requests work. Confirm you’ve selected a valid server, then try both a site that should connect directly and a destination that needs a proxy. Check the logs for DNS, handshake or connection timeouts. If only the browser is affected, check its proxy and secure DNS settings. If all apps are affected, turn off TUN and system proxy to check the basic connection, then re-enable one traffic entry method at a time to avoid changing multiple variables at once.
The log reports a port conflict or core startup failure. What should you do?
Check whether the client is running more than once or another proxy app is using the same listening port. Quit duplicate processes and restart. If another essential program is using the port, choose a different local port and update the system proxy settings too. Core startup can also fail because of incompatible configuration fields, missing runtime components or security software interference. Start with the earliest error in the log. Don’t delete all your settings: back up subscriptions and custom rules, then work through the errors one by one.
Can you just turn off certificate verification if DNS resolution or a TLS handshake fails?
Don’t mask errors by disabling certificate verification. First check the device’s date, time and time zone, then verify that the server address, TLS server name and related settings match the information from the source. If name resolution fails, check whether DNS is reachable on your current network, and distinguish resolution of the server’s domain from that of the destination website—they may use different routes. If the issue began after changing DNS or enabling FakeDNS, restore the last working settings, then adjust them one at a time for your current core and TUN configuration.