For Windows users whose node is selected and core appears to be running, but the browser keeps spinning. Follow these eight steps to isolate the problem across app routing, local listeners, node handshakes, DNS, and routing rules. Change one variable at a time and retest the same URL. No need to reinstall or rebuild your entire configuration.
Step 1: Distinguish a selected node, a running core, and a successful request
v2rayN is a graphical client; the selected core handles proxy requests. A highlighted node, an enabled system proxy, or a latency-test result does not by itself prove that the browser’s HTTPS request reached its destination through the node. A TCP latency test usually confirms only that an address and port are reachable; it does not verify authentication, TLS, REALITY, or the full path to the destination website.
Exit other apps that manage network traffic, and temporarily turn off TUN mode in v2rayN. Use “system proxy + local endpoint” as your baseline test. System proxy and TUN mode handle traffic differently; enabling both adds routing and DNS variables. If your network requires a corporate proxy or authentication, sign in to the network first. Don’t remove settings required by your organization.
- Temporarily clear the system proxy, then open a website that normally works without a proxy to confirm the underlying network is available.
- Select the node you’re troubleshooting, set it as the active server, then check the core startup log for configuration or listener errors.
- Note the client version, actual core name and version, test URL, and time. Keep them the same for follow-up tests.
If you still can’t access any websites after clearing the system proxy, check Wi-Fi, the gateway, network authentication, and system DNS first. Switching between VLESS, VMess, or subscription groups is unlikely to fix a basic network issue.
Step 2: Check the system proxy address and local endpoint
Open the v2rayN tray menu, select “System proxy,” then choose “Set system proxy.” Wording may vary slightly by version. The important part is that the Windows proxy server points to the active local endpoint—not just that a node is selected. Then go to Windows “Settings” → “Network & internet” → “Proxy” and check the manual proxy address and port.
10808 is an example, not a default port for every version. Check the local listener options under “Settings” → “Parameter settings,” then verify the startup log or actual configuration. Some versions have separate SOCKS and HTTP endpoints; others use a mixed endpoint. The Windows manual proxy needs an endpoint that accepts HTTP proxy requests. Don’t enter a port that supports SOCKS only.
- Use the local loopback address for the proxy—not a remote node’s domain name or a subscription URL.
- The local endpoint port and the node server port are different; they don’t need to match.
- Check whether an automatic configuration script or manual proxy setting left behind by another app is making the browser use an outdated proxy.
- Command-line tools and some apps don’t follow the Windows system proxy. They need a proxy configured separately, so their behavior alone doesn’t mean the node is down.
Step 3: Check for a listening port and process conflicts
The web page still won’t load if the system proxy is configured correctly but nothing is listening on the local port. Open PowerShell and run the command below. If your actual port isn’t 10808, replace the number in the command first.
netstat -ano | findstr ":10808"
Get-NetTCPConnection -LocalPort 10808 -State Listen
Look for the local address, the LISTENING state, and the process ID. If nothing is listening, check whether the core has exited. If there is a listener, make sure it belongs to the core launched by the current v2rayN instance—not another client instance. In Task Manager, open “Details” and match the PID. If needed, enable the “Command line” column to verify the program path.
bind: Only one usage of each socket address (protocol/network address/port) is normally permitted.
Cause and fix: Another process is already using the same address and port. Identify it, then close the duplicate instance or change the local endpoint port and update the system proxy to match.
Connection refused
Cause and fix: If the connection-refused destination is 127.0.0.1:10808, the local endpoint usually isn’t listening or the port is wrong. Restore the local listener before checking the remote node.
Don’t end unfamiliar system processes. After resolving the port conflict, restart the current core and check the listener again. Changing the system proxy without getting the core to bind the port successfully won’t fix the problem.
Step 4: Sync the clock and verify node handshake settings
If the local endpoint is working but all requests fail while connecting, check the node settings and device clock. In Windows 11, go to “Settings” → “Time & language” → “Date & time,” turn on automatic time setting, and click “Sync now.” Verify the actual date and time; changing the displayed time zone alone doesn’t ensure the system clock is accurate.
| Configuration type | Check together | Commonly missed |
|---|---|---|
| VMess | Address, port, user ID, transport, and security settings | A system clock that’s out of sync can affect authentication; node latency alone won’t catch it |
| VLESS + TLS | User ID, transport, server name, and flow settings | The connection address and TLS server name may differ |
| VLESS + REALITY | Server name, public key, shortId, fingerprint, and applicable flow | Settings must match the server; don’t apply a standard TLS configuration as-is |
| WebSocket transport | Path, Host, security layer, and port | A trailing slash or letter case in the path can also affect requests |
A successful subscription update means only that the configuration was fetched. It doesn’t mean the node is still online or that the active core supports every field. If fields are missing after import, check which core the client actually launches and whether the configuration format is supported, then ask the configuration provider. Check support for features such as REALITY against the relevant Xray version. V2Fly and Xray are not interchangeable cores.
- Reimport a node from a trusted configuration source and compare it with the old entry to catch fields missed during manual edits.
- Don’t treat disabling certificate verification as a general fix. For certificate errors, first check the clock, server name, and server certificate chain.
- If the same node works on another device, compare the actual settings and core versions—not just the node name.
Step 5: Separate DNS issues from proxy connection issues
A domain that won’t load doesn’t necessarily mean DNS is broken. The node’s domain name needs to resolve; a direct connection may use local DNS; and where a proxied destination is resolved depends on the core and outbound settings. These steps may use different upstream servers. Browser Secure DNS, Windows DNS, and core DNS are separate settings.
First, use Windows’ built-in curl.exe with an explicit proxy to bypass browser settings. The tests below have a 15-second timeout. They’re intended to show the response and where an error occurs—not to guarantee a specific status code or measure speed. Replace the port with a local endpoint that supports HTTP proxy requests.
curl.exe -I --connect-timeout 10 --max-time 15 --proxy http://127.0.0.1:10808 https://www.example.com/
Resolve-DnsName www.example.com
The first command tests a request through the specified endpoint; the second checks only Windows’ current system DNS resolution path and doesn’t confirm that core DNS is working. To compare local and proxy-side resolution with SOCKS, first confirm that the endpoint supports SOCKS, then run these commands:
curl.exe -I --max-time 15 --socks5 127.0.0.1:10808 https://www.example.com/
curl.exe -I --max-time 15 --socks5-hostname 127.0.0.1:10808 https://www.example.com/
Result: Only proxy-side resolution works — check the local DNS path first
With the same destination and node, if local resolution fails but proxy-side resolution works, check system DNS and local routing first. Don’t switch protocols right away. This result identifies the resolution path for this test only; it doesn’t mean every app is avoiding local DNS lookups.
After changing DNS settings, run ipconfig /flushdns to clear the Windows DNS cache, then restart the browser and core to clear their caches too. Don’t casually test an HTTPS site using its IP address: the certificate name, SNI, and virtual host may change, introducing new errors.
Step 6: Check routing rules and the default outbound
If the same node works in an explicit-proxy test but only some domains fail in the browser, routing may be sending those requests through a direct or blocked outbound. Open v2rayN’s routing settings and check the active rule set, match order, and default outbound. Menu locations vary by version; look for “Routing settings” or the routing configuration entry in the interface.
- Note the name of the active routing configuration and back up any custom rules first.
- Temporarily select a routing mode that sends destination requests through the proxy outbound, then retest the same URL. “Set system proxy” alone doesn’t mean every request goes through the proxy.
- If that fixes the issue, restore the original rules and check domain rules, IP rules, block rules, and the fallback outbound.
- Restore custom rules one group at a time until the issue returns. Then identify and adjust the specific matching rule.
Domain strategy also determines when DNS resolution happens. AsIs, IPIfNonMatch, and IPOnDemand use different resolution timings; “resolve more aggressively” doesn’t mean “more reliable.” When an IP rule needs a resolved address, DNS results affect outbound selection. Resolution errors and overly broad rules can combine to send requests through the wrong outbound.
Routing rules apply only after a request reaches the core. If an app bypasses the system proxy, changing core routing won’t affect it. Once you’ve isolated the issue, restore an appropriate routing mode and make sure access to local and work networks still works.
Step 7: Rule out browser extensions and separate proxy settings
If curl.exe with an explicit proxy gets a response from the destination but the browser fails, focus on the browser. Open the same URL in a temporary browser profile to preserve the current setup; this is easier than clearing all browsing history. Private browsing isn’t necessarily extension-free—some extensions are allowed to run there.
- Proxy extensions: Temporarily disable proxy-switching extensions so they can’t override the Windows system proxy or keep using an old port.
- Separate proxy settings: In Firefox, go to “Settings” → “General” → “Network Settings” → “Settings” and make sure there isn’t a manual proxy pointing to an inactive endpoint.
- Secure DNS: Note the current mode, then temporarily compare it with the system DNS resolution path. Don’t change core DNS and browser DNS at the same time.
- Cache and connections: Fully exit the browser process and reopen it. Refreshing the tab alone may keep using an existing connection or cached result.
- Security software: Check whether it’s blocking the core process or local proxy connections. Review logs and add a targeted exception if needed; don’t leave protection disabled.
If only one website fails, test other HTTPS sites for comparison. The site itself may be down, or the issue may involve account restrictions, limits on the exit IP, or a certificate error. One site alone doesn’t tell you whether the node is working overall. If you receive an HTTP error status from the website, that usually means the request reached a server or intermediary capable of returning a response.
Step 8: Match logs to the test time, then compare networks
Leave deeper log analysis until last. Note when you open the web page, then check the nearby core output. For normal use, leave logging at warning. For troubleshooting, temporarily raise it to info, or briefly use debug if needed. Higher log levels may include destination domains and connection details; restore the original setting when you’re done.
failed to dial
Cause and fix: This indicates a dial attempt failed, but the phrase alone doesn’t identify why. Check the nested error for the destination address and any timeout, refused, or resolution message to distinguish a node connection issue from a destination website issue.
context deadline exceeded
Cause and fix: A stage exceeded its timeout. Check the surrounding log entries to see whether DNS resolution, connection, or the handshake timed out, then test the same node on another network for comparison.
x509: certificate has expired or is not yet valid
Cause and fix: The certificate validity period doesn’t match the current time. Sync the device clock first; if the issue persists, check the server certificate’s validity period.
context canceled
Cause and fix: The request was canceled, possibly because you closed the page or switched nodes. Investigate the first preceding error only if the access problem continues.
For the next comparison, change just one condition: keep the same computer and node, but use a mobile hotspot; or stay on the same network and try a node you’ve confirmed works. The first test can reveal restrictions on the original network; the second can help identify a node-side issue. Don’t switch networks, protocols, DNS, and cores all at once. If the problem goes away, you won’t know what fixed it.
Final check: Retest with the same endpoint, rules, and URL
Restore your intended system proxy and routing settings, then test once with an explicit proxy command and once in the browser. When asking for help, include the version, port, time, and redacted logs. Remove subscription URLs, user IDs, and other authentication details so troubleshooting can continue from the confirmed findings.