System Proxy Set but Not Working? Troubleshoot Browsers and Command-Line Tools Separately

System proxy settings work in browsers but not in terminals. This guide shows how to verify the browser proxy path and configure terminal environment variables separately.

At a glance

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.

127.0.0.1
Local loopback address
10809
Common HTTP port example
10808
Common SOCKS port example
3 layers
Application, inbound, outbound
  1. 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.
  2. 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”.
  3. 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.
  4. 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

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/

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

  1. 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.
  2. 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.
  3. 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.
  4. 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.

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

  1. Restore the temporary global proxy mode to the original split-routing configuration.
  2. Clear the HTTP_PROXY, HTTPS_PROXY, or ALL_PROXY environment variables used only for testing.
  3. Confirm that the system proxy port still matches the current local HTTP port in v2rayN.
  4. 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.
  5. If switching nodes restores access, keep monitoring for a while to distinguish a temporary network fluctuation from a node configuration problem.
Download v2rayNView installation packages for four platforms