V2Ray Connected but Websites Won’t Load? A 12-Step Troubleshooting Checklist

Follow 12 checks across local settings, node status, routing rules, and DNS to pinpoint the cause with clear fixes.

At a glance

This guide covers cases where v2rayN shows “Started” or v2rayNG shows “Connected”, but the browser still times out, some websites fail to open, or no apps can access the internet. Start at the local proxy entry point, then check node handshakes, routing, and DNS. There is no need to repeatedly delete subscriptions; after 12 checks, the fault should narrow down to the client, node parameters, rules, or DNS path.

First identify the failing layer

A connected status only means the client submitted a start command to the core. It does not prove that browser traffic entered the proxy or that the remote node completed its handshake. A complete request typically passes through the application, system proxy or TUN, routing, proxy outbound, and DNS resolution. Failure at any point may look like a webpage spinning forever.

Before starting, standardize the test: stop active downloads, keep one browser window open, and test with a known-accessible ordinary HTTPS website. Do not change the node, routing mode, and DNS at the same time. Change one variable per test, reload the same page afterward, and record the result.

Browser requestLocal proxy entryRouting rule matchNode connectionDNS address responseTarget site response

Use two comparisons to narrow the scope. First, access a local-network address with the system proxy off, then enable the proxy and access the same address. Second, switch between the current node and another confirmed working node. If every node fails, suspect the local entry point, routing, or DNS. If only one node fails, check that node’s status and configuration fields first.

Layer 1: Three checks for local settings

The local layer sends application traffic into the core. The most common issues are a disabled system proxy, a listening port occupied by another program, or a browser-specific proxy setting overriding the system configuration. In v2rayN 7.x, confirm both the core status and system proxy status after startup instead of relying only on the taskbar icon.

  1. Check 1: Verify that the system proxy is actually enabled. In the v2rayN main window, make sure the system proxy mode is not “Clear system proxy”. Then open Windows “Settings” → “Network & Internet” → “Proxy” and check whether the manual proxy points to the local machine. The common listening address is 127.0.0.1; use the local port shown in the current v2rayN log or under “Settings” → “Parameter settings”. Older configurations often use 10808 for SOCKS and 10809 for HTTP, but do not assume the ports remain unchanged after an upgrade or configuration migration.
  2. Check 2: Confirm that the core is listening on the expected port. On Windows, test the local port in PowerShell. If TcpTestSucceeded is False, the browser may have a proxy address configured but no local process is available to accept the connection. Exit v2rayN completely and start it again. If the issue persists, check the log for port conflicts and choose an unused port under “Settings” → “Parameter settings”.
  3. Check 3: Rule out an application-level proxy override. Some browsers and developer tools use their own proxy address. If the system proxy is 127.0.0.1:10809 but the application still points to the inactive 127.0.0.1:7890, requests will not reach the current core. Set the application to “Use system proxy”, restart it, and test again. For command-line tools, also check for stale HTTP or SOCKS proxy values in the environment variables.
Test-NetConnection 127.0.0.1 -Port 10808
Test-NetConnection 127.0.0.1 -Port 10809

Error: failed to listen TCP on 127.0.0.1:10808

Cause and fix: The local port is occupied by another process — exit the old core process, or change the local listening port under “Settings” → “Parameter settings” and restart.

Error: connectex: No connection could be made because the target machine actively refused it

Cause and fix: No service is listening on the local port used by the application — verify that the system proxy port matches the inbound port shown in the core log.

On Android, v2rayNG or v2flyNG uses the system VPN interface as the local entry point. If the status quickly returns to disconnected after you tap connect, stop other network tools that are using the VPN interface and authorize the connection again. If the status stays connected but only certain apps fail, check whether those apps are listed under the bypass rules in per-app proxy settings.

Conclusion: Don’t switch nodes when the local port is failing

If connections to 127.0.0.1 all fail, traffic has not reached the remote node. Updating the subscription or changing VMess and VLESS parameters will not fix a local listening problem.

Layer 2: Three checks for node status and handshake parameters

Once the local port works, determine whether the node can establish a TCP, TLS, or other transport-layer connection. A latency test is not proof of end-to-end availability, but it quickly distinguishes an unreachable address from a request failure after the handshake. Check the test type as well: ICMP, TCP, or real connection latency alone cannot replace a complete webpage request.

  1. Check 4: Test connectivity to the node address and port. In the v2rayN node list, select the current node and run a real connection latency test. On a typical home network, results may range from several dozen to several hundred milliseconds. If three consecutive tests time out and the log stops at the server-connection stage, verify the server domain and port. Temporarily set the timeout threshold to 5000 milliseconds and test again to avoid mistaking high latency for total inaccessibility.
  2. Check 5: Correct the system time and inspect the TLS handshake. TLS certificate validation depends on the device clock. A difference of just a few minutes can make a certificate appear not yet valid or expired. In Windows, open “Settings” → “Time & language” → “Date & time”, enable automatic time setting, and sync immediately. On Android, open the system date and time settings and enable network-provided time. After syncing, stop the core completely and reconnect.
  3. Check 6: Verify every node configuration field. For VMess, check the address, port, user ID, transport, TLS, and path. For VLESS, also verify flow, security type, server name, and the Reality public-key parameters supplied by the node configuration. Slashes in the WebSocket path, capitalization in the gRPC serviceName, and the TLS server name must match exactly. Do not add fields based on the protocol name; use the actual server configuration or the latest subscription data.
Observed result More likely cause Next action
All nodes time out Local network restriction, DNS, or client entry-point issue Compare with another network, then continue with the DNS checks
Only one node times out Abnormal node address, port, or service status Update the subscription and verify that node’s fields
TCP reachable but TLS fails Time, SNI, or certificate-chain issue Sync the clock and verify the server name
Latency is normal but the page is blank Routing, DNS, or target-site response issue Review domain matching and DNS logs

Error: context deadline exceeded

Cause and fix: The connection or handshake did not finish within the configured time — test the node address and port, compare with another network, and update the subscription or contact the configuration provider if only this node fails.

Error: remote error: tls: handshake failure

Cause and fix: The TLS parameters do not match the server — sync the system clock and verify the TLS switch, server name, and transport parameters.

Error: failed to find an available destination

Cause and fix: The outbound server address cannot be resolved or no usable destination is available — check the node address for typos, switch to a working DNS server, and restart the core.

Layer 3: Three checks for routing

When the node handshake succeeds but websites still fail, focus on routing rules. The V2Ray and Xray cores select an outbound based on the domain, IP, port, network type, and inbound tag. If a rule sends the target to direct or block instead of the intended outbound, the interface can still show a healthy connection because the node itself has not disconnected.

  1. Check 7: Switch to the simplest proxy mode for comparison. Temporarily route all traffic through the proxy and reopen the failing website. If it immediately works, the node and local entry point are healthy and the issue is in the routing rules. Restore the original mode after testing and inspect the matching rules one by one; do not rely on comparison mode indefinitely to hide a rule error.
  2. Check 8: Check whether GeoIP and GeoSite data are missing or outdated. Custom rules often reference geoip:cn, geosite:cn, or other category sets. If the data files are missing, the core may report a rule-loading failure. If they are outdated, new domains may fall through to the default rule. In v2rayN, update the Geo files through the main-window update checker, restart the core, and confirm that the log contains no resource-loading errors. On Android, use the data-update entry provided by the client and reconnect afterward.
  3. Check 9: Check domain sniffing and rule priority. If the browser request is resolved to an IP first while the rules only match domains, the target may bypass the intended outbound. With domain sniffing enabled, the core can recover the domain from the HTTP Host or TLS Server Name for routing, although some LAN services are unsuitable for sniffing. First check whether the failing site appears as a domain or IP in the log, then adjust sniffing. Custom rules usually match from top to bottom, so a broad direct rule should not appear before a more specific proxy rule.
Domain rule: domain:example.com
Suffix rule: domainSuffix:example.com
Exact match: full:service.example.com
Port range: 80,443
Fallback action: proxy / direct / block

Only one website won’t open. Do I need to change the node?

Search for the domain in the core log and confirm whether it was sent to proxy, direct, or block. When other sites work, fix the matching rule or DNS result first instead of deleting the entire subscription.

The site works in global proxy mode. How should I fix it?

Restore the original routing mode, add the failing domain to an explicit proxy rule, and place it before broad direct rules. Restart the core and verify the final outbound tag in the log.

Why does the old rule still match after updating Geo data?

Stop and restart the core completely, then confirm that the log loaded the new file path. If the client keeps multiple configurations, verify that the active routing profile is the one you just edited.

A LAN address is inaccessible after being proxied. What should I do?

Add high-priority direct rules for private address ranges and local domains, and check whether domain sniffing rewrote the LAN request as an external domain.

Conclusion: Global mode working while split routing fails is clear evidence

If access returns simply by switching routing modes on the same node and network, there is no need to change protocol parameters. Focus on rule order, Geo data, and the final outbound tag.

Layer 4: Three checks for DNS resolution

DNS failures often look like this: the node has latency and IP addresses connect, but domain-based websites do not open. The homepage may work while images or login APIs time out because different subdomains return different addresses. Distinguish between resolving the node server domain and resolving the target domain: the first prevents the node from connecting; the second fails after the node is already connected.

  1. Check 10: Confirm that the DNS server itself is reachable. If the configuration uses a resolver accessible only through the proxy but routes DNS queries directly, queries may time out continuously. Conversely, sending all local-domain lookups to a remote resolver may return addresses unsuitable for the current network. Temporarily use system DNS for comparison. Then separate local and proxy DNS paths and watch query times in the log. Ordinary queries should usually return within tens to hundreds of milliseconds; repeated delays over 2000 milliseconds indicate a problem.
  2. Check 11: Clear caches and verify the scope of FakeDNS. The browser, system, and core may each cache resolution results. After changing DNS, tests may still use an old address unless the relevant processes are restarted. On Windows, close the browser, clear the system DNS cache, and restart v2rayN. With TUN and FakeDNS, ensure the virtual address pool is used only within the corresponding traffic path. If an app receives a virtual address but bypasses TUN and connects directly, the connection will fail.
  3. Check 12: Check IPv4 and IPv6 results. Some networks resolve AAAA records but lack a stable IPv6 route. The browser may try an unreachable address first and wait for a timeout. If the log shows IPv6 being tried first and falling back to IPv4 only after several seconds, temporarily prefer IPv4 for comparison. Once confirmed, fix local IPv6 connectivity or keep the lookup strategy suited to the current environment; do not blame every resolution issue on the node.
Test symptom How to interpret it Fix direction
IP works, domain fails The target-domain resolution path is failing Check the DNS server and query outbound
The node domain cannot be resolved Failure occurs before the proxy is established Configure a directly reachable bootstrap DNS for the node address
Some subdomains time out Cache or split-routing results differ Clear the cache and inspect each domain match
Wait a few seconds before fallback IPv6 fails before falling back to IPv4 Compare with an IPv4-preferred strategy

Error: failed to lookup ip for domain

Cause and fix: The target domain did not return a usable address — check DNS reachability, the query outbound, and the domain strategy, clear the cache, and test again.

Error: server misbehaving

Cause and fix: The upstream DNS server returned an abnormal response or an unusable format — switch to a resolver reachable on the current network and make sure the query was not routed to a blocked outbound.

Error: network is unreachable

Cause and fix: The resolution result points to an address family with no usable route on the device — check IPv6 connectivity or temporarily prefer IPv4 for comparison.

Narrow down the fault and retest

After completing all 12 checks, do not use a single working homepage as the only recovery criterion. Test at least one ordinary HTTPS page and one page that loads resources from multiple subdomains, then run a subscription update. On desktop, restart the browser; on Android, disconnect and reconnect once to confirm that the system proxy or VPN interface can be rebuilt reliably.

If the local port works, multiple nodes pass real connection tests, and global proxy mode provides access while the original split-routing mode fails, the problem is clearly in the routing layer. If the node domain cannot be resolved or the log shows a lookup error before connection establishment, handle bootstrap DNS first. If only one node fails its handshake across different networks, verify that node’s configuration and service status.

It works briefly after restarting the client, then fails again?

Record the logs from both the recovery and failure times, focusing on DNS responses, port listening, and routing matches. Recurring failures are often related to expired caches, network changes, or upstream DNS timeouts.

The browser works, but command-line tools still time out?

Command-line tools may not automatically read the system proxy. Check their proxy environment variables or explicit proxy arguments and verify that the address and port match v2rayN’s current listening values.

v2rayNG shows connected, but only some apps have no network access?

Open per-app proxy settings and check whether those apps are excluded. Also confirm that battery-saving rules are not restricting v2rayNG in the background, then disconnect and reconnect after making changes.

The old node parameters did not change after updating the subscription?

Confirm that you updated the subscription group currently in use and check whether an option to preserve local changes is enabled. Select the updated node again, then inspect the actual address and port in the core log.

Should I reset all settings immediately?

Export the current configuration and complete the layered checks first. Rebuild the configuration only after confirming that multiple local settings conflict and their source cannot be identified, so you do not lose working routing or subscription settings.

Client Guides View download options for each platform