This guide is for v2rayNG Android users whose status bar says connected but web pages won't load. Work through five stages in order; each step gives exact menu paths and pass/fail criteria so you can follow along directly.
First, Understand the Difference Between 'Connected' and 'Actually Working'
When v2rayNG shows 'Connected', it only means Android's VpnService has been authorized and started, and the traffic tunnel is established. Whether the node handshake succeeded, DNS is working, or routing rules allow the traffic—none of that is included in this status. The starting point: don't skip node testing just because the status bar says connected.
To check whether a node is actually usable, look at the latency number on the left side of the node card on the main screen. A specific millisecond value (e.g., 256ms) means the TCP handshake succeeded; 'Failed' or 'Timeout' means the node is currently unavailable—the problem is on the node side, and further client tweaks won't help.
Execute the following five steps in order. After each step, retest before moving on to avoid changing multiple variables at once, which makes it impossible to isolate the root cause.
Step 1: System Proxy and VPN Authorization Status
v2rayNG uses VPN mode to take over traffic by default, so you don't need to configure a proxy in system Wi-Fi settings. If you previously set a manual Wi-Fi proxy (e.g., pointing to a LAN address like 192.168.1.100:10809), that proxy intercepts requests before the VPN does—and since the target proxy doesn't exist, you get 'connected but can't open pages'.
Check path: System Settings → Network & Internet → Wi-Fi → gear icon next to the current network → Proxy → set to 'None'. Also make sure the v2rayNG 'Connected' notification stays in the notification shade; if it disappears, the system has reclaimed the VpnService.
Turn Off Manual Proxy
In system Wi-Fi settings, change 'Proxy' to 'None', save, then reopen v2rayNG.
Confirm the Notification Stays
Pull down the notification shade and confirm v2rayNG shows 'Connected' with the key icon. If the notification is collapsed, expand it to check.
Remove Battery Restriction
System Settings → Apps → v2rayNG → Battery → select 'Unrestricted' to prevent it from being killed in the background.
Restart the VPN Service
On the v2rayNG main screen, turn the connection off and on, wait 3 seconds, and let VpnService re-establish the tunnel.
After completing the four steps above, open a browser and visit a test page. If pages still won't load, move on to node connectivity checks.
Step 2: Verify Node Connectivity
There are two types of node tests. 'Test Latency' only performs a TCP handshake—it's fast but doesn't reflect HTTP usability. 'Real Connection Test' actually requests the generate_204 test address through the node; a 204 response is the only pass. Use 'Real Connection Test' as the reference during troubleshooting.
Steps: tap the three dots on the right of the node card on the main screen → Real Connection Test. If the result shows 'Success' with latency under 500ms, the node side is largely ruled out. If it shows 'Failed', switch to another node and test again to distinguish a single-node failure from a global one.
Error: failed to find an available destination
Cause & fix: The outbound server address failed to resolve—check the node address spelling and port, then update the subscription and restart the core.
Error: connection refused
Cause & fix: The target port is not listening—compare against the port numbers provided by your provider (commonly 443, 8443, 2053) and confirm the port isn't blocked.
Error: TLS handshake timeout
Cause & fix: TLS handshake timed out—make sure the 'TLS' toggle is on, set allowInsecure as required by your provider, then try switching the TLS version.
To view logs: main screen top-left menu → 'View Logs'. Search for the keywords failed, refused, timeout, and match the resulting lines against the error cards above to pinpoint the exact configuration item.
Step 3: Routing Mode and Per-App Proxy
v2rayNG's default routing mode is 'Bypass LAN and Mainland China Addresses': mainland China IPs and LAN traffic go direct, everything else goes through the node. If the rule base classifies a target domain as a mainland address, or the resolved IP's geolocation is misjudged, the request goes direct—resulting in 'node is fine, but web pages time out'.
Troubleshooting: main screen top-left menu → 'Routing Settings' → temporarily switch routing mode to 'Global', save, restart the core, then visit the target page. If it opens in Global mode but not in the default mode, the issue is in the routing rules.
| Routing Mode | Traffic Direction | Use in Troubleshooting |
|---|---|---|
| Bypass LAN and Mainland China Addresses | Mainland China IPs and LAN traffic go direct; everything else goes through the node | Default for daily use |
| Global Routing | All traffic goes through the node | Isolating routing rule issues |
| Smart Routing | Matches the rule base; unmatched traffic goes direct | Fallback when the rule base is outdated |
Per-app proxy can also cause 'connected but effectively not connected': main screen top-left menu → 'Per-App Proxy' → when 'Proxy only apps in the list' is checked, unselected apps go direct. Your browser must be in the proxy list; Chinese apps like WeChat and Alipay should stay on the direct list.
When 'Pre-resolve Domain' is enabled, v2rayNG resolves and caches results using the local DNS before the VPN is established. If the local DNS is poisoned, the cached IPs are wrong. Turn this off during troubleshooting, then re-enable it as needed once connectivity is confirmed.
Step 4: Check DNS Resolution
If the node is reachable, routing is global, and pages still won't load, check DNS next. v2rayNG's DNS settings are at main screen top-left menu → 'DNS Settings', with options including '1.1.1.1', 'Google DNS', and 'Local DNS'.
Troubleshooting: switch DNS from 'Local DNS' to '1.1.1.1', save, restart the core, then visit the target page. If it opens after the switch, the original resolution path was hijacked or poisoned; if it still won't open, check the logs.
2026/08/09 10:23:45 [Warning] failed to handle request > dial tcp: lookup www.gstatic.com on 10.0.0.1:53: no such host
2026/08/09 10:24:02 [Info] [TCP] dialing to tcp:203.0.113.10:443
2026/08/09 10:24:07 [Warning] [TCP] connection to tcp:203.0.113.10:443 failed: context deadline exceeded
Lines starting with lookup in the logs point to a DNS-layer problem; lines with dialing followed by failed point to a node-link problem. If both appear, fix DNS first, then test the node.
Step 5: Browser Cache and Client Reset
After the first four steps pass, the fault is narrowed down to the device side. Start by clearing the browser cache: Browser Settings → Privacy and Security → Clear Browsing Data → check 'Cached images and files' and 'Cookies and other site data', then reload the page.
Some Android browsers have a built-in 'Secure DNS' (DoH) feature that bypasses the system and sends resolution requests to a DoH server. When the DoH server is unreachable, the browser spins and times out while other apps work fine. During troubleshooting, turn off Secure DNS in the browser settings and revert to system resolution.
- First, save your subscription URL: main screen top-left menu → 'Subscription Settings' → edit the relevant group and copy the original subscription link.
- Clear app data: System Settings → Apps → v2rayNG → Storage → Clear data.
- Re-import the subscription: open v2rayNG → subscription group → '+' in the top-right corner → paste the subscription link → Update.
- Update the Xray core: check the core version in 'Settings'; if it's noticeably outdated, update it and then restart the client.
After all steps, do a final check: start v2rayNG → Real Connection Test → open a browser and visit a test page. If it still fails, copy the key lines from the log page and match them against the error cards in Step 2.
Quick Answers to Common Questions
Latency test passes but the real connection test fails?
The latency test only verifies the TCP handshake; it can't detect TLS handshake or HTTP-layer failures. Rely on the 'Real Connection Test' result, and if it fails, check the TLS toggle and allowInsecure settings.
Global mode works but the default mode doesn't?
The routing rules classified the target domain as a mainland China direct connection. Update the subscription and rule base and retry, or add the app for that domain to the per-app proxy list.
Switching nodes makes it stop working?
The old node's connection wasn't released. Close v2rayNG and reopen it so the new node can establish a fresh session.
It disconnects after ten minutes and the notification disappears?
The system killed the background process. In app settings, change the battery policy to 'Unrestricted' and lock v2rayNG in the system's recent apps view.
Subscription update times out?
Connect to any working node first, then in the subscription group settings check 'Update through proxy' and retry.