Aug 19, 2026 · Troubleshooting · About 10 min

V2Ray Connection Timeout: 5 Steps to Troubleshoot from Local Proxy to Server

Before switching nodes, check the local proxy port, system proxy, subscription settings, system time, and server reachability—in that order.

At a glance

Goal: pinpoint whether the connection failure lies with the local listener, traffic entry point, node configuration, time and handshake, or remote network. This guide focuses on v2rayN on Windows, with notes on differences in v2rayNG and v2flyNG on Android. Change one variable at a time and retest with the same request, so you can tell what fixed the issue instead of changing nodes, routes, and DNS all at once.

Step 1: Confirm the local proxy port is listening

Local entry point: an open client window does not mean the proxy core has started. v2rayN manages the configuration, while the selected core handles the connection. If the core fails to load its configuration or the port is already in use, your browser cannot send requests through the node just by setting a proxy address. Check the startup result in the client log, then verify the listening port.

Check the port: In v2rayN, go to “Settings” → “Parameter Settings” and check the local listen address, port, and inbound type. Section names may vary by version. The example below uses a SOCKS inbound at 127.0.0.1:10808. Port 10808 is not fixed across installations, nor is it the server port; replace it with the actual listening port before running the command.

netstat -ano | findstr ":10808"

Error: bind: address already in use

Cause: The local address and port are already in use, commonly because the client was started twice or another proxy process is still running.

Fix: Identify the process using the port by its PID. Close duplicate instances or change the local listen port, then restart the core and update the app’s proxy settings to match.

Android differences: v2rayNG uses the Xray core, while v2flyNG uses the v2fly core. First confirm that the app has started a connection and received system VPN permission. Android VPN routing and the Windows system proxy are different entry points, so Windows port-check results do not directly apply.

Step 2: Separate system proxy, app proxy, and TUN

Traffic flow: The system proxy affects only apps that follow that setting, while TUN routes traffic through a virtual network adapter. If a browser works but other apps fail, the node may not be at fault. Conversely, a successful latency test in the client does not mean the browser is using the proxy.

App requestLocal entry pointRoute matchingNode connectionDestination service

Isolate the test: Note the current system proxy and TUN settings, temporarily disable TUN, then send a request with a command that explicitly specifies the SOCKS proxy. This removes uncertainty about whether the app follows the system proxy, but client-side routing rules can still affect the result. To verify proxy egress, also check the log for the actual outbound route.

curl.exe --proxy socks5h://127.0.0.1:10808 --connect-timeout 10 --max-time 20 -I https://v2raymark.com/

What the parameters mean: socks5h sends the destination hostname to the proxy for resolution, so it does not prove that local DNS is working. The 10-second limit applies to the connection phase; 20 seconds is the limit for the entire request. These are diagnostic settings for this test, not network performance benchmarks. Even a 403 or 405 response means an HTTP response was received, so the issue should no longer be classified as a connection timeout.

  1. Record the setup

    Note v2rayN’s listening port, selected node, system proxy status, and TUN status. Keep the original conditions on hand if the test fails.

  2. Run an explicit test

    With TUN disabled, run the command above. If the local connection is refused, return to Step 1 and check the port and SOCKS inbound type.

  3. Restore the system proxy

    After the explicit proxy test succeeds, select “Automatically configure system proxy” under “System Proxy” in v2rayN. Then check that the client status matches Windows “Settings” → “Network & Internet” → “Proxy.”

  4. Test TUN separately

    Enable TUN only if needed, and confirm the permissions and network adapter status as prompted by the client. If only TUN fails, focus on routing, DNS, and conflicts with other VPNs instead of changing node settings right away.

Result: Explicit proxy works? Check the app’s entry point

If the explicit proxy request works but the browser still fails, check browser extensions, app-specific proxy settings, and the system proxy address. Changing the server won’t fix a local entry point that isn’t taking effect.

Step 3: Check subscription settings and the node in use

Configuration source: A successful subscription update only confirms that the configuration was fetched and parsed; it does not guarantee that every node works. A failed update does not mean existing nodes have stopped working. First check which subscription group the selected node belongs to and whether it is an outdated entry. Then confirm whether the provider has changed the address, port, or authentication details.

Core compatibility: In v2rayN, check which core is actually being used and review its logs. On Android, v2rayNG and v2flyNG are not the same app under different names. Xray and v2fly do not support exactly the same protocol extensions and fields. Importing a configuration into the app does not guarantee that the core can run it fully. Check compatibility carefully for configurations using VLESS, REALITY, and similar features.

CheckWhat to verifyCommon misdiagnosis
Server address and portCheck the node address and server listening port; 443 is only a common exampleUsing local port 10808 as the remote port
Protocol and authenticationVMess or VLESS type and the corresponding user ID and other fieldsAssuming authentication is current because the node name matches
Transport settingsCheck the actual transport—TCP, WebSocket, gRPC, or another type—and its required fieldsChanging only DNS despite a transport mismatch
TLS settingsCheck whether TLS is enabled, the server name, and certificate requirementsAssuming an open TCP port means the handshake is configured correctly
Outbound routingConfirm that the test request uses the intended proxy, not a direct or blocked routeTreating a failed direct connection to the destination website as a node timeout

Update the subscription: In v2rayN, open “Subscription Group” and update the relevant group. Then select the node again and check the logs. If your version offers separate options to update through or without the proxy, choose based on whether the subscription URL is reachable. If your only node has stopped working, relying on it to download the subscription can create a failure loop. Subscription URLs and complete node configurations are sensitive; hide authentication fields in troubleshooting screenshots.

Step 4: Sync the system clock and identify TLS handshake errors

Why time matters: A significantly incorrect system clock can make a certificate appear not yet valid or expired, and may affect time-based VMess authentication. VLESS does not use the same time-validation rules as VMess, but TLS connections are still subject to certificate validity checks. Changing the displayed time zone does not correct the system clock itself.

Error: x509: certificate has expired or is not yet valid

Cause: The certificate validity period does not match the current system time. The local clock may be wrong, or the server certificate may genuinely need renewal.

Fix: Sync the local clock first. If the error persists with the correct time, the server administrator should check the certificate and its deployment.

Error: x509: certificate signed by unknown authority

Cause: The certificate chain does not lead to a trusted root. Possible causes include a missing intermediate certificate, a private certificate, or the local trust store.

Fix: Check the server’s certificate chain and expected issuer. Configure trust for private certificates through a trusted channel; don’t bypass validation as a substitute for fixing the problem.

Check SNI: The connection address and TLS server name can differ, but both must match the server setup and certificate requirements. Don’t enter an arbitrary reachable domain. Don’t use allowInsecure as a timeout fix: skipping certificate validation will not resolve a TCP connection failure or incorrect transport path, and it weakens authentication.

Step 5: Check server reachability and remote listeners

Test the remote endpoint: After confirming the local entry point, traffic routing, and configuration in the first four steps, test the node address and destination port. The following PowerShell commands are for Windows; enter the actual node address and port, not the full subscription URL. This test checks TCP connectivity only—it cannot verify credentials, TLS, the WebSocket path, or the gRPC service name.

$nodeHost = Read-Host "Enter the node server address"
$nodePort = [int](Read-Host "Enter the node server port")
Test-NetConnection -ComputerName $nodeHost -Port $nodePort -InformationLevel Detailed

Error: i/o timeout

Cause: A network read or write did not finish before its deadline. Check nearby log entries to determine whether the timeout occurred while connecting to the node, during the TLS handshake, or while accessing the destination service.

Fix: Keep the log entries around the same request and compare the remote address and stage where it failed. Check the port, handshake, or destination service as appropriate; don’t change DNS based on this line alone.

Compare networks: Keep the node, destination address, and test command unchanged, switch the local network to a phone hotspot, and run the test again. If the result changes, focus first on restrictions at the original network’s egress, DNS responses, and address-family differences. This still does not prove a specific cause. If the domain has both IPv4 and IPv6 addresses, record which address was actually used rather than comparing only the domain name.

Working with the server administrator: If you have admin access, check that the process is running, the expected port is listening, the firewall and security group allow traffic, and the certificate and reverse proxy settings match. If you don’t have access, give the administrator the failure time and time zone, protocol and transport type, redacted logs, and port test results. Don’t share user IDs, subscription URLs, or other authentication details.

Result: If the port is reachable, move on to the handshake and configuration

If the TCP probe succeeds but proxy requests keep failing, focus the next round of troubleshooting on TLS, protocol authentication, transport settings, and the actual outbound route in the logs. Increasing the wait time repeatedly usually just delays the same error.

Retest: Confirm the fix with the same request

Retest criteria: After making one change, run the explicit proxy request from Step 2 again, then test the browser or app you actually use. Success with an explicit proxy covers only that request path; it does not replace separate checks for the system proxy, TUN, DNS, or other apps. The client’s latency test has its own target and method, so it cannot establish that all apps are working.

Next steps: For more on how the system proxy, TUN, and routing rules work together, see Advanced Setup. If you haven’t completed the initial configuration, start with the guide to establish a repeatable connection, then add routing and DNS settings gradually.

Client downloads