How to Fix System Proxy Not Working: Troubleshoot Browsers and Command-Line Tools Separately

System proxy enabled but traffic bypasses the client? Browsers and terminals handle proxy settings differently. This guide provides separate checks and fixes for both.

At a Glance

This guide is for cases where v2rayN shows a healthy node connection and system proxy is enabled, but browsers or command-line tools still connect directly, time out, or fail to load pages. Troubleshooting has three layers: confirm the local proxy port is listening, check whether the application reads system proxy settings, then inspect DNS, routing rules, and terminal environment variables. These steps identify whether the issue is in the client, local proxy settings, or the application itself.

First, identify which traffic the system proxy affects

“v2rayN is running” and “application traffic is using the proxy” are two different things. After starting the Xray core, v2rayN creates SOCKS, HTTP, or mixed inbound ports on the local loopback address; the system proxy then writes one of those ports into the operating system settings. Only applications that actively read those settings send requests to the local port. A connected node only shows that the client has a working outbound path—it does not prove that browsers, terminals, or other programs are using it.

In a common v2rayN 7.x setup, the local SOCKS port may be 127.0.0.1:10808, while the HTTP port may be 127.0.0.1:10809. Always use the local listener settings under “Settings” → “Parameter Settings” as the source of truth; if you changed the starting port, update your test commands too. Sending an HTTP request to a SOCKS port, or entering a SOCKS address as an HTTP address, will appear as a connection failure.

Application sends requestReads proxy settingsConnects to local portMatches routing rulesProxies traffic through node
Application type Settings typically read Where to check first
Chromium-based browsers Usually follow the Windows system proxy, but enterprise policies or browser extensions may override it Windows “Network & Internet” → “Proxy”
Firefox Can use the system proxy or store a separate proxy configuration Browser “Settings” → “Network settings”
PowerShell, curl, and package managers Depends on the tool: it may read environment variables or command-line options, so do not assume it follows system settings automatically HTTP_PROXY, HTTPS_PROXY, and tool-specific settings
v2rayNG、v2flyNG Uses Android’s system VPN service to capture traffic from selected apps In-app proxy switches, per-app settings, and routing rules

Bottom line: first check whether the application reaches the local port

Whenever the browser and terminal produce different results, check each tool’s proxy entry point first instead of repeatedly switching nodes. With the same node, subscription, and protocol settings, whether the application reads proxy settings is the most common dividing line.

Verify that v2rayN’s local port is available

Before checking the browser, rule out a local port that is not listening, a port conflict, or a core that failed to start. Switch v2rayN to the node you intend to use, then check the main window or runtime log for a successful startup message and confirm the current core type. The core handles VMess, VLESS, and other node parameters; the system proxy cannot fix an incorrect server address, port, transport, or user ID.

  1. Confirm that the core started

    Select a node in the v2rayN main window, set it as the active server, and open the runtime log. Normally, the log shows core startup and local inbound listener messages. If the window keeps showing restarts or exits, fix the configuration error reported in the log first.

  2. Check the listening ports

    Go to “Settings” → “Parameter Settings” and note the local SOCKS and HTTP ports. This guide uses SOCKS 10808 and HTTP 10809; do not copy these numbers if they differ from your interface.

  3. Set the system proxy

    Open v2rayN’s “System Proxy” menu and choose the option to configure the system proxy automatically. Then open Windows “Settings” → “Network & Internet” → “Proxy” and confirm that the address is 127.0.0.1 and the port matches the client’s current HTTP listener.

  4. Test the loopback connection

    Run Test-NetConnection 127.0.0.1 -Port 10809 in PowerShell. The result should show TcpTestSucceeded as True. If it is False, the issue is still with the local listener or a port conflict.

  5. Run an explicit proxy test

    Run curl.exe --proxy http://127.0.0.1:10809 -I https://example.com. In a normal local test, loopback connection setup is usually under 0.01 seconds; the time to receive the remote response depends on the node route.

Error: curl: (7) Failed to connect to 127.0.0.1 port 10809

Cause and fix: Nothing is listening on the specified port. Common causes include a core that did not start, an incorrect HTTP port, or another program occupying the port. Return to “Settings” → “Parameter Settings,” verify the port, restart the core, and test again.

Error: failed to start app/proxyman/inbound: failed to listen TCP

Cause and fix: The local listener port is already in use. Close the program occupying it, or choose an unused port in Parameter Settings—for example, change the HTTP port from 10809 to 10909—then update the system proxy to use the new port.

Browser troubleshooting sequence

If an explicit curl request through the proxy succeeds but the browser still connects directly, the node and local port are probably working. Focus next on how the browser obtains proxy settings. Fully quit and reopen the browser to avoid an old process retaining its connection pool or startup proxy state. Closing one tab is usually not enough to rebuild every network process.

Chromium-based browsers usually use the Windows system proxy, but standalone proxy extensions, managed policies, and startup parameters can override it. Firefox lets you choose “No proxy,” “Use system proxy settings,” or “Manual proxy configuration” in its own network settings. If only Firefox fails, open “Settings” → “General” → “Network Settings,” choose the system proxy, or enter the current v2rayN HTTP and SOCKS addresses manually.

Error: ERR_PROXY_CONNECTION_FAILED

Cause and fix: The browser tried to use the proxy but could not connect to the configured local address. Compare the Windows system proxy port with v2rayN’s HTTP listener port, and confirm that the core process is still running.

Error: ERR_TUNNEL_CONNECTION_FAILED

Cause and fix: The browser reached the HTTP proxy, but the HTTPS tunnel could not be established. First run an explicit curl request through the same port, then check the runtime log for node timeouts, TLS parameter errors, or routing blocks.

Error: PR_CONNECT_RESET_ERROR

Cause and fix: The connection was reset during setup, so this message alone does not prove that the system proxy is broken. Set Firefox to use the system proxy, retry, and check the v2rayN log to confirm whether the request reached the core.

Why does one browser work while another fails?

Compare where each browser gets its proxy settings. One may follow the Windows system proxy while the other stores a manual port. Change the standalone configuration to 127.0.0.1 and the current HTTP port, fully quit both browsers, and test again.

What if the browser still shows a direct connection after disabling extensions?

Check whether the browser shortcut includes proxy startup parameters, and inspect the system proxy bypass list. Then run an explicit curl proxy test. If the explicit test succeeds while the browser fails, continue with browser policies and profile settings.

System proxy enabled, but local network pages no longer open?

Keep local addresses in the system proxy bypass list, or configure v2rayN routing rules to send private addresses directly. Common private ranges include 10.0.0.0/8, 172.16.0.0/12, and 192.168.0.0/16.

Does the proxy disappear after restarting the browser?

Check whether v2rayN’s system proxy mode is set to “Do not change system proxy,” and confirm whether exiting the client clears the system settings. For regular use, select automatic system proxy configuration again after starting the client.

Command-line tools need separate proxy configuration

Command-line tools cannot all be assumed to read the system proxy automatically. In the same terminal, curl, PowerShell modules, runtime package managers, and standalone download programs may follow different rules. The most reliable approach is to pass the proxy address explicitly to one command first, then decide whether to set environment variables for the current session. This prevents tool configuration issues from being mistaken for v2rayN node failures.

Use v2rayN’s HTTP listener for an HTTP proxy address, such as http://127.0.0.1:10809. For SOCKS, use socks5h://127.0.0.1:10808; socks5h tells the proxy to resolve the destination domain, which can avoid mismatches between local DNS resolution and proxy-side results. Check each tool’s own proxy options to confirm that this format is supported.

# PowerShell: affects only programs started afterward in the current window
$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"

# Explicitly test the HTTP proxy
curl.exe --proxy http://127.0.0.1:10809 -I https://example.com

# Explicitly test SOCKS and let the proxy resolve the domain
curl.exe --proxy socks5h://127.0.0.1:10808 -I https://example.com
:: Windows Command Prompt: affects only the current window
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

# macOS or Linux shell: affects only the current session
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
Symptom Assessment Action
Browser works, curl connects directly curl is not using the system proxy Use --proxy or set an environment variable for the current session
Explicit HTTP proxy works, environment variable fails The variable name, scope, or tool-specific reading rule is incorrect Set both uppercase variables and any variables required by the tool, then restart the relevant terminal process
HTTP port fails, SOCKS port works The HTTP inbound port is incorrect or not listening Check Parameter Settings; do not mix up 10808 and 10809
The local address is also being proxied A bypass configuration is missing Set NO_PROXY=localhost,127.0.0.1

Error: curl: (5) Could not resolve proxy: 127.0.0.1:10809

Cause and fix: The proxy variable may be malformed—for example, the address and protocol may have been split into an unrecognized value. Set the variable to http://127.0.0.1:10809 in full, remove extra quotes and spaces, and reopen the terminal.

Error: curl: (97) connection to proxy closed

Cause and fix: This commonly means the proxy protocol does not match the port type. An HTTP address must use the HTTP port, while a SOCKS address must use the SOCKS port. Verify both, then run the two explicit tests separately.

Bottom line: use explicit parameters as the terminal baseline

If a single command with --proxy succeeds, the local port and node path are working. Fix the environment variables or the specific tool configuration instead of changing subscriptions, protocols, or routing rules again.

If the port works but access still fails, check DNS and routing

A reachable local port only proves that the application reached the proxy entry point. After entering Xray, the request still passes through domain resolution, route matching, and proxy egress. If a rule sends the target through a direct outbound, external results may still reflect the local network. If the node server hostname cannot be resolved, every request routed through that node may time out. Watch the runtime log while reproducing the issue instead of relying only on the browser error page.

Reduce the test to one node, one browser, and one explicit curl command. Temporarily disable complex custom routing, keep private addresses direct, and send all other test requests through proxy egress. If this restores access, the issue is usually in rule order, domain sets, or the outbound tag. If it still fails, verify that the subscription’s server address, port, VMess or VLESS user parameters, TLS, and transport method match the server.

  1. Find the test timestamp in the v2rayN runtime log and confirm that the target domain or address appears.
  2. If the request appears but shows a direct connection, check the outbound tag matched by the routing rules and the rule priority.
  3. If you see timeout, distinguish a timeout connecting to the node server from one connecting to the final destination.
  4. If domain resolution fails, verify the node server address and switch to a working DNS configuration before restarting the core.
  5. If no request appears at all, return to the application’s proxy settings. Do not change node protocol parameters first.

Error: failed to find an available destination

Cause and fix: The core did not obtain a usable destination address, possibly because domain resolution failed or the routing result is unavailable. Check the node server address, DNS configuration, and routing outbound tag, then restart the core.

Error: dial tcp: i/o timeout

Cause and fix: The TCP connection to the node server or final destination exceeded the wait time. First try another node from the same subscription, then verify the server port, local system time, and whether the network permits the connection.

Error: invalid user

Cause and fix: The server rejected the node identity parameters. This commonly happens when subscription data has expired or a user identifier was entered incorrectly during manual editing. It is unrelated to the system proxy switch; update the relevant subscription group and select the node again.

Choose the fix based on the test result

After troubleshooting, there is no need to change every setting at once. Keep one known-good node and let the test results guide the next step: a failed loopback port test points to the core or port; an explicit proxy that works while the browser fails points to the browser’s proxy source; a working browser with a failing terminal points to command options and environment variables; if every application reaches the log but outbound traffic fails, inspect DNS, routing, and node settings.

System proxy still shows the old port after changing it?

First clear the system proxy from v2rayN’s “System Proxy” menu, then select automatic configuration again. Next open Windows “Settings” → “Network & Internet” → “Proxy” and confirm that the new port has been written.

Can’t any websites open after exiting v2rayN?

The system may still point to a local proxy port that the client no longer listens on. Restart the client, or clear the proxy from its system proxy menu, then confirm that the Windows manual proxy is disabled.

Only one terminal tool refuses to work?

Check whether the tool supports HTTP_PROXY, HTTPS_PROXY, or its own proxy options. If curl succeeds with an explicit proxy, the issue is isolated to that tool’s configuration; reinstalling v2rayN is unnecessary.

Everything started timing out after updating the subscription?

Manually refresh the relevant subscription group, select a node again, and check the runtime log. If the local port still accepts connections but multiple nodes time out at once, compare the subscription parameters, system time, and current network environment.

Does Android also require a 127.0.0.1 port?

Usually, no desktop system proxy steps need to be copied over. v2rayNG and v2flyNG use Android’s VPN service to capture traffic; check the app connection status, per-app proxy settings, routing mode, and runtime log.

Final diagnosis: isolate the failing layer with three tests

Run a local port test, an explicit proxy request, and an in-application request in that order. If a step fails, fix that layer before continuing. When the first two succeed but the third fails, inspect only the specific application. This sequence avoids repeatedly changing routes when the port is wrong and prevents deleting a working node when the terminal simply lacks proxy settings.

Download the client View all four platform versions