This checklist is for cases where nodes are imported and the v2rayN core starts successfully, but webpages or terminal commands still fail. First confirm that the local proxy port is listening, then test browsers and command-line tools separately, and finally check DNS, routing rules, and the remote node. This helps identify whether the issue is in the app, system proxy, local inbound, or remote outbound connection.
Establish a reproducible local proxy baseline
“System proxy enabled” only means the operating system has saved a proxy address. It does not prove that v2rayN’s local port is working or that every app reads those settings. A useful diagnosis should confirm three things: the core is running, the local inbound port is listening, and the test app is actually sending requests to that port.
Using a common v2rayN 7.x configuration as an example, the HTTP proxy may listen on 127.0.0.1:10809, while the SOCKS proxy may listen on 127.0.0.1:10808. These are typical examples only; use the local listening settings shown in the client. After an upgrade, backup import, or manual port change, ports from older guides may no longer apply.
- On the v2rayN main screen, confirm that the target node is selected as the active server and that the core is not stuck in a failed-start or restart loop.
- Open “Settings” → “Parameters”. Note the local HTTP and SOCKS listening ports and the listening address. If the menu labels differ by version, look for a page containing “local port” or “inbound settings”.
- From the tray menu, select the enabled state corresponding to “Set system proxy”. Do not choose “Clear system proxy” or “Keep system proxy unchanged”. After switching, close and reopen the browser used for testing.
- Temporarily select a node that can complete a latency test and switch routing to an easy-to-verify proxy mode. Restore the original routing rules after the baseline test passes.
Browser path: confirm that the system proxy is actually being used
Most desktop browsers read the operating system proxy by default, but a browser may retain its own proxy policy, extension settings, or an older background process. Refreshing a page after changing the system proxy is not always enough because background processes may continue using settings read at startup. Fully exit and reopen the browser to rule out this cached state.
Use a regular window for testing, pause extensions that can change proxy behavior, and choose an address you have not opened before. If ordinary pages load but a specific domain fails, the local proxy path is probably working. Next check routing, DNS resolution, and the remote destination instead of repeatedly toggling the system proxy.
| Observed result | Most likely problem area | Next step |
|---|---|---|
| Every webpage immediately reports a refused connection | Local port is not listening or the wrong port is configured | Verify the v2rayN local port and check the core startup log |
| The page times out after waiting for a long time | Node outbound connection, network reachability, or routing rules | Switch to a known-good node and check outbound timeout entries |
| One browser works while another does not | Browser-specific proxy settings or a background process | Select “Use system proxy”, then fully exit and reopen the browser |
| The domain fails, but direct access to its test IP responds | DNS lookup path or domain rules | Check the client DNS settings and domain routing rules |
| The browser works, but terminal commands fail when connecting directly | The terminal tool does not read the system proxy | Set proxy environment variables for the current terminal |
Conclusion: a working browser does not mean every program is proxied
A successful browser test proves only that the “browser → system proxy → local inbound → remote outbound” path works. Terminals, background services, and programs that manage their own network connections still need their proxy source checked separately.
What to check when the browser still connects directly
- Open the browser’s network settings and confirm that “Use system proxy” is selected rather than an old manually entered address.
- Check that the system proxy address is
127.0.0.1and that its port matches the current v2rayN HTTP port. - Disable extensions that may override proxy settings, then repeat the test in a regular window.
- Confirm that the system time and time zone are accurate. A large clock difference can cause TLS connections to fail and may look like a proxy problem.
- Check the v2rayN runtime log. If refreshing the page produces no new connection entry at all, the request usually never reached the local proxy.
Terminal path: specify the proxy with environment variables or explicit options
A command-line terminal is only a container for launching programs; it does not automatically send every network connection through the system proxy. The specific tool determines whether a proxy is used: some read HTTP_PROXY and HTTPS_PROXY, some accept only command-line options, and others require their own configuration file. So “the browser works but the terminal times out” usually means they are taking different network paths, not that the node suddenly failed.
For tools that support HTTP proxy environment variables, start by setting them temporarily in the current terminal session. Keep the proxy URL scheme as http://; even when the destination is an HTTPS site, the tool uses the HTTP proxy to establish a CONNECT tunnel. The examples below use 10809; replace it with the actual port shown by the client before running them.
Temporary Windows PowerShell setup
$env:HTTP_PROXY="http://127.0.0.1:10809"
$env:HTTPS_PROXY="http://127.0.0.1:10809"
$env:NO_PROXY="localhost,127.0.0.1"
These three lines affect only the current PowerShell process and child processes launched afterward. The settings disappear when the window closes, making them useful for troubleshooting but unsuitable as a permanent solution. To view the current value, run $env:HTTPS_PROXY. To clear it, use Remove-Item Env:HTTP_PROXY and Remove-Item Env:HTTPS_PROXY.
Temporary Windows Command Prompt setup
set HTTP_PROXY=http://127.0.0.1:10809
set HTTPS_PROXY=http://127.0.0.1:10809
set NO_PROXY=localhost,127.0.0.1
Temporary setup for the current macOS or Linux shell
export HTTP_PROXY="http://127.0.0.1:10809"
export HTTPS_PROXY="http://127.0.0.1:10809"
export NO_PROXY="localhost,127.0.0.1"
If the tool supports SOCKS5, use an explicit option to test port 10808. In socks5h, the letter h means the proxy resolves the destination domain. This helps distinguish local DNS failures from proxy-path failures. Not every program reads ALL_PROXY, so an explicit option is usually better for the first test.
curl -v --proxy socks5h://127.0.0.1:10808 https://example.com/
curl -v --proxy http://127.0.0.1:10809 https://example.com/
- Explicit proxy command succeeds, but the regular command fails: the tool does not read the system proxy. Keep the command option or configure proxy environment variables.
- HTTP proxy succeeds, but SOCKS5 fails: verify the SOCKS port and local inbound type; do not swap the two ports.
- Both explicit proxy tests fail: return to v2rayN and check the listening status, active node, and runtime log.
- The command connects but the download breaks partway through: investigate remote connection resets, node stability, and restrictions imposed by the destination service instead of checking only the local port.
Use the actual error to locate the failing layer
Detailed terminal output is more useful than “unable to access”. With curl -v, first check whether it connects to 127.0.0.1 on the expected port, then check whether the proxy successfully establishes a tunnel to the destination. If the first step fails, the problem is local; if the local connection succeeds before a timeout, the issue has usually moved to routing or outbound connectivity.
Error: curl: (7) Failed to connect to 127.0.0.1 port 10809
Cause and fix: The local HTTP port is not listening, or the command uses the wrong port. Open “Settings” → “Parameters”, verify the port, and confirm that the v2rayN core started successfully.
Error: curl: (5) Could not resolve proxy: 127.0.0.1:10809
Cause and fix: The proxy variable format may be incorrect, causing the tool to treat the entire value as a proxy hostname. Set it to http://127.0.0.1:10809 and remove extra quotation marks, spaces, or duplicate protocol prefixes.
Error: Proxy CONNECT aborted
Cause and fix: The HTTP proxy received the request, but the tunnel was not established. Confirm that the port is not a SOCKS port, then check the v2rayN outbound log and active node.
Error: connection refused
Cause and fix: The destination actively refused the connection. If the refused address is 127.0.0.1, check the local listener. If the log shows that the remote server refused it, verify the node address, port, and protocol parameters.
Error: context deadline exceeded
Cause and fix: The request did not finish within the allotted time. First switch to another known-good node, then check DNS, packet loss, and whether routing incorrectly sends the destination through a direct outbound.
How to read the runtime log
- Inbound: Does a new connection from the local machine appear when the test command runs? No entry at all means the app is not using the proxy or the port is wrong.
- Routing: Is the destination domain or IP sent to the proxy, direct, or blocked outbound? In split-routing mode, the matched rule matters more than node latency.
- Outbound: Look for connection timeouts, refused connections, DNS resolution failures, or invalid authentication parameters. These errors are the ones directly associated with the remote node.
- Return: Does the tunnel get reset soon after it is established? If it happens only with a specific destination, also consider that service’s connection policy.
Browser works but some commands fail: check DNS and split routing
The same domain may use different resolution paths in a browser and a terminal. A browser may use its own secure DNS settings, while terminal tools usually call the operating system resolver. With socks5://, resolution may happen locally; with socks5h://, the proxy resolves the domain. Different resolution locations can produce different addresses and routing results.
Split-routing rules can also create the impression that some programs work while others do not. The V2Ray or Xray core selects an outbound based on the domain, IP, port, and inbound tag. If the destination domain matches a direct rule, the request may leave through the direct connection even though the app is connected to the local proxy. The system proxy has not failed; the routing decision needs correction.
- First change the test destination to a stable, confirmed-accessible address so a single-site issue is not mistaken for a proxy failure.
- Test
socks5h://127.0.0.1:10808andhttp://127.0.0.1:10809once each, then compare whether only the local-resolution path fails. - In the v2rayN routing settings, check which rule matches the destination domain, then temporarily switch to a simpler proxy mode for comparison.
- If the failure occurs only after custom rules are enabled, check domain suffixes, IP ranges, and rule order one by one. An earlier rule may intercept the request first.
- After changing DNS or routing, restart the core and open a new terminal window to avoid interference from old connections and environment variables.
Conclusion: first determine whether the request reached the local inbound
When the runtime log shows no new connection, check the app’s proxy settings. When there is an inbound connection but no usable outbound, check routing and the node. This boundary produces a more reliable diagnosis than repeatedly changing nodes.
Common issues and recovery steps
After testing, roll back temporary changes so old variables, old ports, and new settings do not conflict the next time you start. This is especially important for environment variables saved persistently: even after v2rayN exits, command-line tools may keep trying to connect to the old local port, resulting in repeated connection refusals.
The system proxy switch is enabled. Why does the browser still connect directly?
Fully exit the browser, then confirm that its network settings use “Use system proxy”. Watch the v2rayN log while refreshing the page. If no new inbound entry appears, the request still has not reached the local proxy.
The browser works. Why does curl keep timing out?
First run a command with --proxy http://127.0.0.1:10809. After the explicit proxy works, set HTTP_PROXY and HTTPS_PROXY for the current terminal.
Can HTTP and SOCKS ports be used interchangeably?
No. An HTTP client must connect to an HTTP inbound, while a SOCKS5 client must connect to a SOCKS inbound. If the example ports are 10809 and 10808, always use the actual values configured in the client.
What should I do if the terminal loses network access after closing v2rayN?
Clear the proxy environment variables saved in the current session or system, then open a new terminal. If the tool has its own proxy configuration, also remove entries pointing to the old 127.0.0.1 port.
Only one domain will not open. Do I need to reinstall the client?
Usually not. Check the domain’s DNS result and matched routing rule first, then compare with a simple proxy mode. If other destinations work, the local listener and basic proxy path are generally fine.
Final cleanup checklist
- Restore the temporary global proxy mode to the original split-routing configuration.
- Clear the
HTTP_PROXY,HTTPS_PROXY, orALL_PROXYenvironment variables used only for testing. - Confirm that the system proxy port still matches the current local HTTP port in v2rayN.
- Keep a text record of the working node, port numbers, test commands, and key errors so the next diagnosis can resume at the failing layer.
- If switching nodes restores access, keep monitoring for a while to distinguish a temporary network fluctuation from a node configuration problem.