For desktop users whose v2rayN client is running and a server is selected, but websites still won’t load. First check whether browser requests reach the local core, then investigate routing, DNS resolution, and the remote connection. Change one setting at a time and retest the same URL. Port checks, command-line requests, and logs can help distinguish a system proxy issue from a core startup failure or an unavailable server—without repeatedly reinstalling the client.
1. Check the system proxy—not just the connection status
First, check whether System Proxy is set to “Automatically configure system proxy.” A running client, a visible server name, or even a successful latency test doesn’t mean your browser is using the proxy. v2rayN is the configuration and management interface; the core actually accepts local requests and connects to the remote server. Check both the application’s proxy settings and the core’s status.
The menu labels below reflect common Chinese-language interfaces. Their locations may vary between desktop versions. If you can’t find an option in the bottom bar, right-click the v2rayN icon in the taskbar notification area and look for the same menu item. Note your current settings, temporarily turn off TUN mode, and test the system proxy path on its own to avoid overlapping proxy methods.
-
Test a direct connection
In v2rayN, choose System Proxy → Clear System Proxy, then open a website you can normally reach directly. If that fails too, check your computer’s internet connection, Wi-Fi sign-in, or upstream network first.
-
Select the active server
Select the server you want in the main window, right-click it, and choose Set as active server. Wait for the core to start. If the log at the bottom immediately shows a startup error, check the port in the next section.
-
Turn on the system proxy
Select System Proxy → Automatically configure system proxy. In Windows, open Settings → Network & Internet → Proxy and confirm the proxy address points to your local machine and the port matches the client’s inbound settings.
-
Check for a separate proxy
Check your browser extensions and its own proxy settings. If a separate proxy is configured, disable it, fully quit and reopen the browser, then retest the same URL.
2. Check the local port and core listener
The port in the system proxy settings must match the port the core is actually listening on. In v2rayN, open Settings → Parameter Settings and find the local inbound address, port, and protocol. Depending on the version, these may be under Core: Basic Settings or an inbound-related tab. Don’t enter the remote server’s port in the system proxy settings.
These commands are for Windows PowerShell. Assume the client’s HTTP or mixed inbound port is 10808; if yours is different, replace the number in the commands. If you only have a SOCKS inbound, don’t use the HTTP proxy test shown here.
Test-NetConnection 127.0.0.1 -Port 10808
netstat -ano | findstr ":10808"
curl.exe -I --connect-timeout 10 --max-time 20 -x http://127.0.0.1:10808 https://www.example.com/
TcpTestSucceeded : Trueonly means the local port accepts connections. It doesn’t confirm that the remote server, DNS, or destination website is working.- In
netstat, find theLISTENINGentry and note the PID in the last column. Then check the process in Task Manager’s Details tab. Don’t end an unknown process based only on its port number. - An HTTP status code from a proxy request means the request received a response. A
403may be due to the website’s policies, not a local port problem. Seeing only200 Connection establisheddoesn’t confirm that the subsequent TLS handshake and web request succeeded. - If the port isn’t listening, check the client logs for startup errors. If another local proxy process is using the port, quit the duplicate process or change the inbound port and update the system proxy settings.
If the command works, check how the app connects to the proxy
If a request explicitly routed through the local proxy succeeds but the browser fails on the same URL, check the browser, system proxy, and extension settings first. Changing subscriptions or DNS repeatedly won’t usually fix a mismatch in how the browser reaches the proxy.
3. Check whether routing sends requests the wrong way
Once the local port is working, check Routing. Routing rules tell the core whether to send a request through the proxy, connect directly, or block it. A browser request reaching the core doesn’t guarantee it goes through the selected server; custom rules may send a domain direct or block it.
- Note your current routing configuration. If the interface offers a Global or Global Proxy preset, switch to it temporarily and retest the same URL. This changes routing; it doesn’t enable TUN mode.
- If global proxy works but your original mode doesn’t, switch back and check whether a custom direct, block, or overly broad domain-suffix rule matches the target domain.
- If the logs can show routing details, find the target domain by request time and check which outbound tag was used. If the logs don’t include this information, don’t assume the selected server name tells you which route the request took.
- After correcting a rule, restore the original mode. Then test one website that should connect directly and another that should use the proxy to make sure you haven’t introduced a new routing problem.
4. Distinguish system DNS, core DNS, and server hostname resolution
DNS translates domain names into IP addresses. Check at least two types of hostname: the remote server’s domain and the website you’re trying to open. If the server hostname can’t resolve, the core may be unable to connect at all. A website lookup failure may affect only certain sites. System DNS and core DNS may also use different settings.
On Windows, use the commands below to check system DNS results and clear the system cache. The second command clears only the local system DNS cache; it doesn’t reset the core configuration or automatically clear the browser’s DNS cache.
Resolve-DnsName www.example.com
ipconfig /flushdns
- System lookup succeeds: This only confirms that the current system resolver returned a result. It doesn’t prove the core uses the same DNS path or that the result will work on your network.
- Server hostname lookup fails: First check the server address for typos, then inspect the DNS path used to establish the proxy connection. If the resolver can only be reached through a proxy that hasn’t connected yet, you may have a startup dependency loop.
- Change DNS: In Settings → DNS Settings, check the option for the core you’re using. In some versions, DNS settings are under Parameter Settings. Save the original value, change one group of settings at a time, then save and restart the core as prompted.
- Don’t replace the website URL with its IP: HTTPS sites usually rely on the domain name for certificate verification and site selection. If the IP address doesn’t work, that alone isn’t reliable evidence of a DNS problem.
If you’ve confirmed there’s a SOCKS inbound, you can use the command below to send the destination domain through the SOCKS proxy so it can be resolved over the proxy connection. The 10808 value must still match your actual SOCKS or mixed inbound port. Compare this with a direct system lookup, but don’t use it alone to determine where every part of DNS resolution happens.
curl.exe -I --connect-timeout 10 --max-time 20 --socks5-hostname 127.0.0.1:10808 https://www.example.com/
5. Use the exact log messages to diagnose server and handshake issues
Once you’ve checked the proxy entry point, port, routing, and DNS, test the server. Check the log at the bottom of the client or open the Logs view. Note the time of one request, then reproduce the issue once. The errors below are examples; surrounding details vary by core and operating system. Don’t draw conclusions from the last word alone.
Error: bind: address already in use
Cause and fix: The core can’t bind to a local address or port because it’s already in use. Identify the process using the port, quit any duplicate client, or change the local inbound port. Then reapply the system proxy settings.
Error: connection refused
Cause and fix: The target endpoint refused the connection. Check whether the error points to a local or remote address. For a local address, check the listener; for a remote address, verify the server port and service status. Don’t assume every refused connection is a DNS problem.
Error: lookup …: no such host
Cause and fix: A domain name didn’t resolve to a usable result. The omitted text is the domain that was queried. First determine whether it’s the server or the website, then check the spelling, DNS settings, and resolver connectivity.
Error: i/o timeout
Cause and fix: A network operation timed out. Use the destination address to determine whether the delay occurred during DNS lookup, the remote connection, or response reading. Compare with another known-good server; this message alone doesn’t mean your account has expired.
Error: x509: certificate has expired or is not yet valid
Cause and fix: Certificate validity checks failed, possibly because of the local clock or the server certificate. Correct the time under System Settings → Date & Time. If the time is correct and the error persists, ask your service provider to check the certificate. Don’t disable certificate verification.
When testing another server, keep the routing and test URL the same; change only the active server. A TCP latency result usually means only that a connection to a port received a response. It doesn’t confirm that protocol authentication, the TLS handshake, and the web request all succeeded. Client availability or connectivity tests may also use a different destination from the website you’re trying to access.
- If only one server fails, check for subscription updates, available data, expiration, and service announcements.
- If all servers suddenly fail, compare using another network—for example, temporarily connect your computer to a mobile hotspot. Don’t change the core and DNS at the same time during the test.
- VLESS and VMess use different configuration fields. REALITY servers also require the matching public key, server name, and other provider-supplied parameters. Don’t leave unknown fields blank or guess their values.
- In Settings → Parameter Settings, check whether the selected core supports the configuration. Switching cores isn’t a universal fix. Note the original setting first, then check the startup logs.
6. Common symptoms and recovery checks
Why is the latency only a few dozen milliseconds, but websites still won’t load?
A latency test may not include a complete web request. First run a command that explicitly uses the local proxy, then check the logs from the same time. If the port is reachable but the handshake fails, verify the protocol settings, system time, and server status instead of continuing to sort servers by latency.
Only one website won’t load. Should I reinstall?
Don’t reinstall yet. Keep the current server and test another website, then temporarily switch to global proxy and retry the original site. If other sites work, check the target site’s status, domain rules, DNS, and any access restrictions based on your proxy exit location.
The browser works, but other apps don’t. What should I check?
First, look for Use system proxy or a separate proxy setting in the app’s network preferences. If it supports manual proxy settings, enter the local address and actual inbound port, and select the correct HTTP or SOCKS type. Command-line tools may need separate configuration; don’t assume they all use the system proxy.
After I quit the client, even regular websites won’t load. Why?
Reopen v2rayN, select System Proxy → Clear System Proxy, then quit the client. If it won’t start, check the system network settings for a manual proxy still pointing to a stopped local port. Note the original value before changing it so you don’t overwrite a proxy required by your workplace network.
Which settings should I keep after troubleshooting?
Keep any change you’ve verified works. Restore temporary routing and logging changes, and undo DNS changes that didn’t help. If you used TUN mode, first confirm the system proxy works, then re-enable TUN and test it separately to avoid interference from overlapping proxy methods.
After the fix, use the same browser to reopen the URL that failed, then test a site that should connect directly. If you need help, note the client and core versions, operating system, time of failure, test method, and relevant error lines. Before sharing, redact subscription URLs, user identifiers, and authentication parameters. Don’t post your full subscription or configuration to ask for troubleshooting advice.