Use this guide if your subscription is imported but nodes time out, or the client says it’s connected but webpages won’t load. First check that the core is running and listening locally, then confirm traffic is reaching the proxy. Next, check your subscription, system clock, transport settings, and server. Change one thing at a time and retest the same destination to avoid mistaking a local issue for a dead node.
1. Check Port Connectivity and Proxy Access Separately
A “timeout” only means a step did not finish within the allotted time; it does not prove the server is down. A browser request may pass through the app’s proxy settings, a local inbound port, routing rules, a remote connection, a protocol handshake, and the destination website. A failure at any point can leave a page loading indefinitely.
TCPing checks whether a TCP connection can be established to a port. A real connection test also uses the proxy protocol and test destination. A successful TCP check does not confirm VMess or VLESS authentication, and a failed real connection test may simply mean the test destination is unreachable. Identify which step failed before switching nodes.
- Core not running: Check configuration loading, permissions, or port conflicts first. Speed tests are meaningless until the core starts.
- Port reachable, but real connection fails: Check protocol authentication, TLS, transport settings, and the test destination.
- Real connection succeeds, but the browser fails: Check whether the system proxy, app proxy, and routing rules are handling the request.
2. Local Ports: Confirm the Core Is Listening
An open v2rayN window does not mean the core is running correctly. In “Settings” → “Parameter Settings,” check the local listening ports, then review the logs on the main screen. Menu names may vary by release; use the SOCKS, HTTP, or mixed listener shown in your version rather than copying a port from another guide.
This example uses local port 10808 on Windows. Run the command in PowerShell. A matching listener entry means a process has claimed the port; you still need to confirm it belongs to the currently running core.
Get-NetTCPConnection -LocalPort 10808 -State Listen |
Select-Object LocalAddress, LocalPort, OwningProcess
netstat -ano | findstr :10808
If the first command returns a process ID, use Get-Process -Id process ID to identify it. The second command may also show connection entries; look for the LISTENING line. Don’t terminate an unknown process based on its port number alone. First check for a second client instance or a leftover core process.
Error: bind: Only one usage of each socket address (protocol/network address/port) is normally permitted.
Cause: Another process is using the listening port on Windows. Fix: Identify the process and close the duplicate instance, or change the client’s local port and update any manual proxy settings to match.
Error: bind: address already in use
Cause: A process is already listening on this address and port, often because the core was started twice. Fix: Stop the proxy, close the duplicate instance, then start it again and check whether the same error appears in the new logs.
On Android, tap Stop in v2rayNG, start the connection again, and check “Menu” → “Log.” If Android asks for permission to establish a VPN connection, approve it to create the traffic tunnel. Don’t run another app that uses Android’s VPN service at the same time; it may replace the connection. A notification icon does not prove the remote node is working.
3. Proxy Routing: Check Whether Browser Traffic Reaches the Local Listener
Once the local listener is working, check the system proxy. In v2rayN, right-click the tray icon and select “System Proxy” → “Set system proxy.” On Windows, you can also go to “Settings” → “Network & Internet” → “Proxy” and confirm the manual proxy address and port match the current client. On macOS, check “System Settings” → “Network” → your current network service → “Details” → “Proxies.”
-
Select the node you want to test
In v2rayN, set the server you want to test as the active server on the main screen. In v2rayNG, select the target configuration and reconnect. Don’t assume a result in the speed-test list reflects the active connection.
-
Check the proxy mode
Test the browser with the system proxy before trying TUN. If TUN is on, disable it temporarily to narrow down the cause. In v2rayNG’s VPN mode, also check whether the app is excluded from the VPN.
-
Make a single test request
Clear the log display, then visit a fixed HTTPS page and check for a request entry for its domain. You can temporarily increase the log level to help diagnose the issue, but restore the normal level afterward.
-
Check the route and exit
If the request reaches the core but goes direct, check the active routing rules. You can briefly switch to global proxy mode and retry the same page. Restore your original routing rules afterward, and don’t change nodes at the same time.
You can also bypass system proxy settings from the command line and test the local proxy directly. This example applies only if 10808 provides SOCKS service; if it is an HTTP-only port, use the corresponding HTTP proxy options. On Windows, use curl.exe to avoid command aliases in some PowerShell environments.
curl.exe --proxy socks5h://127.0.0.1:10808 --connect-timeout 10 --max-time 20 -I https://example.com/
Result: Explicit proxy works — check proxy settings
If this command returns HTTP response headers but the same site fails in your browser, check the browser’s proxy settings, extensions, and system proxy first. Don’t change the UUID, TLS settings, or server port yet.
4. Subscription Status: A Successful Update Doesn’t Guarantee a Working Node
A subscription distributes configuration; it is not the proxy server itself. A successful subscription request only means the client retrieved content it could parse. Data limits, expiration, node changes, and server issues can still prevent connections. Conversely, existing nodes may keep working even if a subscription update fails, so test these separately.
- v2rayN: In “Subscription Group,” make sure you’re updating the right group, then select “Update subscription (without proxy).” If your current network can’t reach the subscription source but another node works, try “Update subscription (through proxy).” Menu wording may vary by version.
- v2rayNG: Open “Subscription group settings” from the side menu and check the address, then return to the main screen and select “Update subscription.” If the update requires a proxy, first confirm the active node works and check the subscription update proxy options in settings.
- Service account: Check the provider’s expiration date, remaining data allowance, and maintenance notices. Don’t skip the account status check just because a server note says “available.”
- Compare configurations: After updating, select the node again and check whether its remote address, port, or transport type changed. If you keep a screenshot of the old configuration, redact all credentials.
5. System Time and Transport: Check the Logs One Detail at a Time
A significantly incorrect system clock can cause certificate validity checks to fail and may also affect VMess time validation. On Windows, go to “Settings” → “Time & language” → “Date & time,” turn on automatic time setting, and sync now. On Android, search system settings for “Date & time” and enable automatic time. A different displayed time zone does not necessarily mean the clock is wrong; verify the actual date and time.
Next, compare the full configuration with the details from your provider. V2Ray is a name in the proxy protocol and core ecosystem; v2rayN is a client. That doesn’t mean every node works with any core or transport. v2rayNG uses the Xray core. If you’re reproducing the issue in v2flyNG, check the configuration against the capabilities of its v2fly core rather than comparing node names alone.
| Setting to check | Common mismatch | What to do |
|---|---|---|
| Address and remote port | Old domain, pre-migration port, or local port entered as the remote port | Import the latest subscription and compare it with your provider’s instructions |
| VMess / VLESS identity | Expired UUID, incomplete copy, or wrong protocol | Reimport the full configuration; don’t copy identity fields from another node |
| TLS and SNI | Server name mismatch, expired certificate, or incorrect system clock | Check serverName against the certificate domain, and keep certificate verification enabled |
| WebSocket | WebSocket path or Host mismatch | Check the path, capitalization, and Host exactly; don’t add a slash yourself |
| gRPC | Wrong serviceName or transport type | Restore the service name and TLS settings from the original configuration |
| VLESS + REALITY | Public key, shortId, serverName, or flow mismatch | Check the full set of parameters and core support; don’t apply standard TLS settings |
Error: x509: certificate has expired or is not yet valid
Cause: The client clock is wrong, or the server certificate is outside its validity period. Fix: Sync the system clock first. If the time is correct, report the certificate issue to your provider. Disabling certificate verification is not a fix.
Error: websocket: bad handshake
Cause: The WebSocket upgrade request did not receive the expected response. The path, Host, reverse proxy, or server configuration may not match. Fix: Compare each setting with the latest subscription, then ask the server maintainer to check the proxy configuration.
Error: i/o timeout
Cause: A network read or write timed out. This message alone can’t tell you whether the cause is the server, DNS, or destination website. Fix: Check the surrounding log entries to identify the destination and failure stage, then test the same node on another network.
6. Network and Server: Narrow It Down with Cross-Tests
After checking the local setup, investigate the remote end. On Windows, use this command to check remote TCP connectivity: replace example.com with the node server’s domain and 443 with the configured remote port. This is a connectivity example, not a working node.
Resolve-DnsName example.com
Test-NetConnection -ComputerName example.com -Port 443
Successful DNS resolution doesn’t guarantee the result is correct, and a successful TCP test doesn’t mean proxy authentication worked. If the logs specifically show a DNS resolution failure, check system DNS, client DNS, and the resolver path in use. Don’t change DNS, routing, and transport settings all at once just because you see a timeout.
- Switch networks on the same device: Test the same node and destination over Wi-Fi and mobile data. If it fails on only one network, check that network’s outbound restrictions, DNS, or connection.
- Switch nodes on the same network: If another node works, that narrows the issue to the original node or its route. It doesn’t prove the original server is shut down.
- Switch devices on the same node: If it works on a desktop but fails on Android, compare the configuration, app bypass list, system time, and core support before changing server settings.
- Only one website fails: Check the routing result for that domain and the destination site’s status. If other sites work through the proxy, investigate the destination site first.
Result: If it fails across devices and networks, ask the server maintainer to investigate
If the latest configuration fails on two devices and two independent networks, while other nodes work, send the maintainer redacted logs and ask them to check the listening port, firewall, certificate, reverse proxy, and outbound network. Reinstalling the client repeatedly is unlikely to fix a problem at this layer.
7. Common Questions and What to Include in a Report
TCPing works. Why does the real connection still time out?
TCPing only confirms that a connection to the port can be established. Check the core logs from the real connection test, then verify protocol identity, TLS, transport settings, and the test destination. Try another fixed destination in a browser or with an explicit proxy command to distinguish a test-site issue from a node issue.
v2rayNG says it’s connected, but no apps can access the internet. What should I check?
First, confirm the selected configuration and check the logs for outbound errors. Then see whether per-app proxy settings exclude the app you’re testing. Temporarily stop other VPN apps, reconnect, and test over both Wi-Fi and mobile data.
Do I need to enable TUN to fix a timeout?
No. TUN routes traffic from more apps; it can’t fix an incorrect UUID, remote port, or server certificate. First confirm the local proxy and node work, then troubleshoot apps that don’t follow the system proxy.
It works briefly after a restart, then disconnects again. What should I do?
Note when the connection drops and check whether it coincides with sleep, network switching, battery restrictions, or duplicate core processes. On Android, go to “Settings” → “Apps” → “v2rayNG” and check battery and background activity permissions. Options vary by device and Android version.
When reporting the issue to your provider, include the failure time and time zone, client and core versions, operating system, network type, test destination, and a few relevant log lines from before and after the failure. Don’t send a full subscription URL, UUID, or screenshot containing an access token. Redact server addresses and personal IP addresses as appropriate for the audience.
- Say whether the local listener is working and whether an explicit proxy request succeeds.
- Say whether the subscription updated, whether the account is active, and whether you recently changed the configuration.
- Include cross-test results: same node on different networks and different nodes on the same network.
- After fixing the issue, retest the original destination and restore any temporary log-level or routing changes.