V2Ray shows as connected, but websites won't load: a checklist for system proxy, DNS, and routing rules

Can't get online despite a connection? Check your system proxy, local ports, DNS, routing mode, and system clock—in that order.

At a glance

For when v2rayN is running and a node is selected, but your browser still times out. First test the local proxy and node connection with an explicit proxy request, then check the system proxy, DNS, routing rules, and TLS time requirements. On Android, also check VPN permissions and per-app routing. Change one setting at a time and record each result so you can pinpoint the cause.

1. Distinguish “running” from “working”

A running icon or kernel log output usually means only that the local process has started. A successful latency test doesn't guarantee that a website is reachable: a TCP probe, an actual HTTP request, and a browser visit test different parts of the connection. V2Ray/Xray is the core; v2rayN is the configuration and management interface. Your browser must also send requests to the correct local proxy.

Note the current node, routing mode, system proxy status, and local listening port. Then test a familiar HTTPS page that normally works. The three port numbers below illustrate their respective roles; they aren't default values for every version. Use the actual ports under Settings → Parameter Settings and the listening address shown in the startup log.

10808
Example SOCKS port used in this guide
10809
Example HTTP port used in this guide
443
Common port for HTTPS destinations

2. Pinpoint the failing layer with an explicit proxy request

Specifying a proxy explicitly eliminates uncertainty about whether your browser is using the system proxy. Run these commands in Windows PowerShell. Using curl.exe avoids conflicts with a command alias of the same name. The example requests https://example.com/; you can substitute a page you know is reachable. The 10-second limit is for connection setup, while 20 seconds is the total request timeout—not a speed measurement.

# First, check whether the example ports used in this guide are listening
Get-NetTCPConnection -State Listen -LocalPort 10808,10809 -ErrorAction SilentlyContinue

# Run only if 10808 is confirmed as a SOCKS or mixed port
curl.exe --proxy socks5h://127.0.0.1:10808 --connect-timeout 10 --max-time 20 -v -o NUL https://example.com/

# Run only if 10809 is confirmed as an HTTP or mixed port
curl.exe --proxy http://127.0.0.1:10809 --connect-timeout 10 --max-time 20 -v -o NUL https://example.com/

If your version uses a single mixed port, change both commands to the actual port. Don't enable an extra listener just to match the example. socks5h sends the destination domain to the proxy for handling, but the core may still resolve it according to routing rules. Check the logs to interpret either result.

Test resultWhat it meansNext step
Local connection refused immediatelyThe local listener isn't running, or the port is incorrectCheck the core startup log and whether another process is using the port
Proxy request receives an HTTP response from the destinationThe request made it through the proxyCheck the browser and system proxy settings
Request fails after CONNECT 200Only the HTTP proxy tunnel was establishedCheck the TLS handshake and subsequent response
Local proxy connection succeeds, then times outThe issue may be the node, DNS resolution, or outbound routingCompare with the core log entries from the same time

Bottom line: If the explicit request works, check the proxy settings first

If the same destination returns a page through an explicit proxy but fails in your browser, fix the system proxy or the browser's separate proxy settings first. Switching between VMess, VLESS, or transport types is usually not the right first step.

3. Match the system proxy to the local listening port

The Windows system proxy serves apps that honor that setting; it doesn't automatically handle all traffic. Browser extensions, app-specific proxy settings, and terminal environment variables can override it. For troubleshooting, close other apps that change proxy settings and temporarily disable TUN so only one traffic-routing method is active. If you rely on another VPN to reach a private network, save your work and check what may be affected first.

  1. Check the listener

    In v2rayN, open Settings → Parameter Settings and check the local listening ports. Depending on the version, they may be labeled SOCKS, HTTP, or mixed. Restart the core after making changes and confirm the log shows no startup errors.

  2. Set the proxy

    In v2rayN's main window, open the System Proxy menu and choose “Set system proxy automatically.” “Clear system proxy” does not route browser traffic through the proxy.

  3. Check Windows settings

    Open Windows Settings → Network & Internet → Proxy → Manual proxy setup. The address should usually be 127.0.0.1, and the port should match an HTTP or mixed listener—not a SOCKS-only listener.

  4. Check for overrides

    Temporarily disable browser proxy extensions. If your browser has separate network settings, set it to use the system proxy. Close and reopen the browser, test the page again, and compare the result with the explicit proxy command.

If an app supports SOCKS5, enter the actual SOCKS port in that app. Don't enter the node server address and remote port in Windows manual proxy settings; those settings need the local listener, not server details from your subscription. netsh winhttp show proxy displays the WinHTTP proxy and can't, on its own, confirm that your browser's system proxy is correct.

4. Check system DNS and core DNS separately

DNS problems generally fall into two categories: the node server's domain can't be resolved, or the destination website's domain can't be resolved. The first prevents the core from connecting to the node; the second may affect only certain websites. Browser secure DNS, Windows DNS, and core DNS may use different paths, so a successful nslookup doesn't prove that DNS resolution through the proxy is working.

# Check how the system resolver responds for the test domain
nslookup example.com

# Windows: clear the system cache after changing system DNS
ipconfig /flushdns

# Compare with the socks5h test above: this command resolves the destination domain locally first
curl.exe --proxy socks5://127.0.0.1:10808 --connect-timeout 10 --max-time 20 -v -o NUL https://example.com/

5. Check whether routing rules send requests the wrong way

In v2rayN, System Proxy determines how an app connects to the local proxy; Routing determines which outbound route the core uses after receiving a request. They're separate settings. Even when your browser is using the local port, a direct or block rule may still match the destination domain.

Note the current routing profile. In the main window's Routing menu, temporarily select a test profile that sends the destination through the proxy. Profile names vary by version, so inspect the rules instead of relying on the word “Global.” Keep any necessary local network rules, then restore the original profile after testing.

SymptomWhat to checkHow to verify
Works after switching to a test routing profileDomain rules, IP rules, and rule orderRestore the original profile and disable suspicious custom rules one at a time
Log shows directCheck whether a direct rule matches the destinationConfirm the log entry belongs to the current test request
Log shows blockAd-blocking or custom blocking rulesAdjust the rule only for the domain that was incorrectly blocked
Still times out through the proxyNode connection, server status, and protocol settingsKeep routing unchanged and compare with a known-working node

If the log level isn't detailed enough, temporarily increase it and reproduce the issue once, then restore it when you're done. Before sharing logs, redact subscription URLs, UUIDs, tokens, and sensitive server details. VMess and VLESS authentication details, transport type, TLS server name, and required REALITY parameters must match the server configuration. Randomly switching protocols won't fix the problem.

6. Use the exact error to check ports, time, and TLS

When an error occurs, note the time and save the surrounding log lines. The examples below are common system or network error messages; actual logs may include the destination address and additional context. Don't assume it's DNS based only on the final word “failed.”

Error: Address already in use

Cause: The local address or port you're trying to bind is already in use. Fix: Identify the process using it, close any duplicate client instances, or change the listening port and update the system proxy to match. Don't terminate an unfamiliar system process.

Error: Connection refused

Cause: The destination port refused the connection. This can happen at the local listener or the remote server. Fix: Check the address in the error. If it's 127.0.0.1, check the listener; if it's the node address, check the remote port and server status.

Error: no such host

Cause: A domain couldn't be resolved. Fix: Check whether the domain in the error is the node or the destination website, then troubleshoot node address resolution or core DNS resolution separately. Don't replace all DNS settings at once.

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

Cause: The system clock is incorrect, or the server certificate is genuinely outside its validity period. Fix: Sync the system clock first. If the error persists with the correct time, ask your service provider to fix the certificate. Don't disable certificate validation.

In Windows, go to Settings → Time & language → Date & time, turn on Set time automatically, and select Sync now. Check the date, year, and time zone as well. A displayed time zone error doesn't necessarily mean the system clock itself is wrong, but setting the time manually can introduce an actual clock offset. Accurate time is essential for TLS certificate checks and time-based authentication.

7. Android and other common cases

v2rayNG uses the Xray core, while v2flyNG uses the v2fly core. On Android, the VPN icon in the notification bar only confirms that the VPN service is running; it doesn't prove that every app's traffic is routed through it. First confirm VPN permission, then check the client's per-app routing list. Settings names may vary by device manufacturer.

v2rayNG shows a VPN icon, but the browser still can't connect?

In v2rayNG, open Settings → Per-app proxy and check whether the browser is excluded. Confirm whether the list is set to proxy selected apps or bypass selected apps. Note the original setting, temporarily turn off per-app proxy, reconnect, and test the same page.

Browser works on your PC, but terminal commands don't use the proxy?

Terminal tools don't always use the Windows system proxy. First run the explicit curl.exe --proxy test from this guide, then check the tool's own proxy settings and whether the HTTP_PROXY, HTTPS_PROXY, or ALL_PROXY environment variables still point to an old port.

Internet stops working only after enabling TUN?

Turn off TUN first and return to a baseline test using the local listener and system proxy. If that works, check the virtual network adapter, DNS interception, and routing conflicts with other VPNs. Don't enable multiple traffic-routing methods at once to test them together.

Regular websites stop working after you exit v2rayN?

Restart the client, choose Clear system proxy from the System Proxy menu, then exit. If the client won't start, go to Windows Settings → Network & Internet → Proxy and turn off any leftover manual proxy. If your organization manages the proxy, contact your administrator first.

On Android, also check Settings → Network & Internet → VPN for another connection that may be routing traffic. “Always-on VPN” or “Block connections without VPN” may prevent access even after the VPN disconnects. If the issue occurs only after the screen turns off, check battery optimization; that's different from pages failing immediately at startup.

Download v2rayN Choose a platform and installer