Help Center · Troubleshoot by symptom
V2Ray FAQs and Connection Troubleshooting
Check the configuration source first, then the traffic entry point. Change one thing at a time and retest the same destination.
New to V2Ray? Start with the setup guide. To choose an installer, visit the download center. Browse the four sections below and select a question to see the full troubleshooting steps.
Getting Started
Learn how clients, cores, protocols, and traffic entry methods fit together to pinpoint issues at the right layer.
What are V2Ray, Xray, and v2rayN?
V2Ray is part of the Project V proxy ecosystem. V2Fly maintains the V2Ray core, while Xray is a related fork; supported features and configuration details vary by version. v2rayN is a graphical client for managing configurations, choosing connections, setting the system proxy, and launching the relevant core—it is not a protocol. When troubleshooting, distinguish a client interface issue from a core connection failure, then check which core is in use and review its logs. A client’s name alone does not guarantee compatibility; check the protocol, security layer, transport, and core version.
What connection details do you need after installing a client?
Installing a client gives you tools to configure and connect, but you still need a server configuration that you’re authorized to use. Common formats include a single share link, a QR code, or a subscription URL. These contain the server address, port, authentication details, and transport and security settings. Before importing, verify the source and make sure the configuration is compatible with your client. A regular website homepage is not a subscription URL. QR codes and share links may contain credentials, so don’t post them publicly. If you have only an address and port but lack authentication or security settings, ask the configuration provider for the missing details rather than guessing by switching protocols.
What’s the difference between a share link and a subscription URL?
A share link usually describes one connection configuration. Common schemes include vmess://, vless://, trojan://, and ss://. A subscription URL is typically an HTTPS address used to retrieve a set of configurations. Use a share link to import a specific connection; a subscription makes it easier to sync updates later. Follow the provider’s instructions rather than judging by how the address looks. Import share links from the clipboard or a QR code; add subscription URLs to a subscription group and update it there. Subscription URLs may contain credentials, so hide the full URL and query parameters in screenshots, support requests, and copied logs.
What’s the difference between global proxy, rule-based routing, and TUN mode?
Global proxy and rule-based routing determine how traffic that has reached the core is sent out. TUN mode determines which system traffic enters the core through a virtual network interface, so it operates at a different layer. The system proxy usually affects only apps that honor system proxy settings; it won’t capture every program. The scope of a client’s global mode also depends on the traffic entry point and routing configuration. For everyday use, start by checking the system proxy and routing rules. Consider TUN only if an app needs a traffic path the system proxy can’t provide. Don’t change the entry method, DNS, and routing all at once, or it’ll be hard to identify the cause of a problem.
Setup
Choose the right client and architecture before importing a configuration. Troubleshoot permissions separately from connection settings.
Which v2rayN build should you choose for Windows: Desktop or classic WPF?
The Desktop build uses a cross-platform interface, while the classic WPF build keeps the familiar Windows experience. Check the download page for the OS and runtime requirements of each option, then choose based on your preferences—not on assumptions about which interface is newer or faster. Menus, configuration storage, and migration support may differ between builds. Before switching, use the client’s export or backup feature to save your configuration and protect any credentials it contains. Confirm that the new build can import the configuration and connect before removing the old one. If startup reports a missing dependency, follow the specific guidance instead of copying program files from another build.
Which Android package should you choose: arm64 or universal?
Most recent Android phones use the arm64 architecture. Check your device specifications or system information, and choose the arm64 package if it’s supported. A universal package usually includes multiple processor architectures, making it a useful fallback when you can’t confirm the architecture, but it’s often larger. Processor support alone doesn’t guarantee that the current system environment supports the app, so check the installation result on your device. If parsing fails, check the Android version requirements, confirm the download completed, and review installation permissions. A signature mismatch can also prevent an update from installing over the existing client; back up your configuration before troubleshooting.
How do you import a subscription URL into v2rayN or v2rayNG?
In v2rayN, open the subscription group settings, add a group, enter a recognizable name and the full subscription URL, then save and update the group. In v2rayNG, open subscription group settings, add the URL, save, return to the list, and update subscriptions. Menu labels may vary by version. When copying the URL, check for leading or trailing spaces, line breaks, and punctuation added by messaging apps. After the update, select a connection and enable the appropriate proxy entry method. If you have a single protocol share link, import it from the clipboard instead of entering it as a subscription URL; these are separate import methods.
What should you do if TUN mode reports insufficient permissions?
TUN creates or manages a virtual network interface. On desktop systems, it may require administrator privileges, a privileged service, or system authorization, depending on the client version and platform. Check the logs for a permissions error, then follow the client’s authorization prompts. Don’t disable system security features. Android typically prompts you to authorize a VPN connection before creating the interface; another active connection of the same type may also cause a conflict. To start troubleshooting, turn off TUN and test the same configuration through the system proxy. If the system proxy works but TUN doesn’t, focus on permissions, interface creation, and routing conflicts before changing server settings.
Usage Tips
Interpret test results in context. Keep a recoverable baseline when changing routes or updating subscriptions.
How do you choose a working node after importing multiple configurations?
First confirm the subscription updated successfully. Select a configuration as the active connection, run the client’s real connection test, and verify access using an app. TCPing mainly tests whether a TCP connection to the target port can be established; it doesn’t verify authentication, the security layer, or the proxy exit. A real connection test also depends on whether its test address is reachable. Don’t rank nodes based on a single number. Check whether the services you use are stable, errors persist, and the logs show a completed handshake. Keep the network, test target, and routing settings consistent so you can compare results fairly.
How can you tell whether the system proxy is working?
In the client, enable automatic system proxy configuration or the equivalent option. Then open your operating system’s proxy settings and confirm that the proxy address points to your device and the port matches the client’s current listening port. Visit a target page in a browser that follows system proxy settings, then check the client logs or connection history for the request. If the browser has a separate proxy extension, check whether it overrides the system settings. Terminal tools, some download apps, and apps with their own network stack may ignore the system proxy; they might need separate configuration or another traffic entry method. A running client process alone doesn’t prove that app traffic is going through the proxy.
How can you adjust routing rules without breaking access?
Keep a working copy of your routing configuration, then decide whether the target app or domain should connect directly, use a proxy, or be blocked. Rules are usually matched in order, so a broad condition near the top may take precedence over a more specific one below. After adding a rule, check which route actually matches instead of merely confirming that the change was saved. Domain rules can also depend on whether requests include the domain, as well as sniffing and DNS settings. Change one set of conditions at a time and test the same target; if you block something by mistake, undo the latest change first. Rule-set names and syntax vary by core, so don’t reuse an entire configuration across different cores without checking compatibility.
What should you back up before updating a subscription? Will manual changes be kept?
Before updating, record the group name, active connection, subscription URL, and any separately maintained routing or DNS settings. Use the client’s built-in backup feature whenever possible. A subscription update may replace remotely managed connection entries, and manual changes to those entries may not survive. If you need to keep changes long-term, copy the entry as a separate configuration if the client supports it, and clearly distinguish it from the subscription version. Backups may contain credentials, so store them securely. When moving to another device or client, verify that the configuration imports and connects before removing the old setup. Don’t rely on screenshots as your only backup.
Troubleshooting
Trace the request path: subscription retrieval, configuration parsing, connection handshake, app traffic, then DNS resolution.
What should you check if a subscription update fails or leaves the list empty?
First check that the subscription URL is complete, hasn’t expired, and is accessible, then review the request result in the logs. A timeout, authentication failure, and unrecognized response format are different issues. If the response is a login page or error message, a successful request still doesn’t mean you received a valid subscription. Confirm that the client supports the format provided; ask for a compatible format if needed. Don’t submit a private URL to an unfamiliar conversion service. If the subscription source is reachable only through a proxy, try the client’s update-through-proxy option if you already have a working connection. If the list suddenly becomes empty, keep a backup and avoid repeatedly deleting the group, which could cause further configuration loss.
Why isn’t a port test enough to diagnose a node connection timeout?
A timeout can occur during DNS resolution, the connection to the server, the security handshake, or a request through the proxy exit. First confirm that your current network can reach ordinary websites directly, then check where the logs stop. An open TCP port confirms only part of the connection path; it doesn’t verify the UUID, password, server name, or other security settings. Check whether the configuration has expired, confirm the system clock is accurate, and compare it with another known-working configuration. If every configuration fails, check the local firewall, network, and client entry method first. If only one fails, focus on that server’s status and settings.
The client says it’s connected, but the browser can’t access the internet. What should you do?
A connected status may mean only that the local service or virtual interface has started; it doesn’t guarantee that requests can reach their destinations. Close other proxy tools, confirm the intended connection is selected, and check that the system proxy address and listening port match. Test with the client’s real connection test and a browser separately, and check the logs for incoming requests. If no request appears, check whether the app is bypassing the proxy. If a request appears but the handshake fails, verify the connection settings. If only some domains fail, check DNS and routing. If TUN is enabled, temporarily switch to the system proxy for comparison. Change one setting at a time and record the result to keep a useful baseline.
An IP address works, but a domain doesn’t. Is it a DNS issue?
DNS is worth checking first, but accessing a site by IP can also fail because of HTTPS certificates or virtual hosting, so one test isn’t conclusive. Check the client logs for DNS timeouts, unreachable resolvers, or unmatched domain rules, then review DNS settings in both the system and client. A browser’s secure DNS may use a separate path, so confirm which resolver is actually in use. After changing DNS, clear the relevant cache and test the same destination again. If the proxy server address is a domain name, make sure it can be resolved before the proxy connection is established; otherwise, DNS may depend on a connection that doesn’t yet exist.