System Proxy Not Working? Troubleshoot Browsers and Terminals

If your browser bypasses the proxy, check extensions and proxy overrides. For terminals, set proxy environment variables. Follow these checks for each.

At a glance

Use this guide when v2rayN is set to use the system proxy, but your browser cannot reach a site or your terminal still connects directly. First test the local proxy and node with an explicit proxy request, then check browser settings, terminal environment variables, and routing logs separately. The examples use 127.0.0.1:10808 as a local HTTP or mixed-protocol proxy. Replace it with the address and port your client actually listens on before running any commands.

1. Understand System Proxy, App Proxy, and Routing

v2rayN’s “Set system proxy” option mainly updates the proxy settings that applications can read from the operating system. It does not take over every network connection on your device. Browsers usually read these settings, but command-line tools, background services, and some apps with their own networking stack may ignore them entirely. So if the browser works but the terminal fails, first consider how each app connects—not a failed node.

App proxy settings Local proxy listener Core routing rules Outbound connection Destination site

The system proxy affects only the first step in this chain. Once a request reaches the Xray or V2Ray core, routing rules determine whether it goes direct, through a proxy, or gets blocked. Even if a browser connects to the local port, a site matched by a direct-connection rule will still use your local network. An unchanged public IP alone does not prove that the system proxy is broken.

SettingApplies toCheck first
Operating system proxyApps that read system settingsAddress, port, bypass list, PAC
Browser-specific proxyThat browser or profileExtensions, manual proxy, managed policies
Terminal environment variablesCurrent process and child processes that support these variablesVariable names, protocol, process inheritance
Core routingRequests that have reached the coreMatching rules and selected outbound

TUN is a separate traffic-capture method, not another name for the system proxy. To keep variables to a minimum, this guide assumes TUN is disabled. If your network depends on TUN, note the current settings first, then isolate-test only when a connection interruption is acceptable. Don’t change TUN, DNS, and routing at the same time, or it will be difficult to tell which change mattered.

2. Check the Local Port with an Explicit Proxy Request

In v2rayN, open “Settings” → “Parameter Settings” and check the local listener options. Then review the listener details in the core startup log. Option group names may vary between versions, so use the interface and logs as your source of truth. The numbers below are examples for troubleshooting, not universal defaults. If a port provides SOCKS only, it cannot be used as an HTTP proxy.

127.0.0.1
Loopback address
10808
Example HTTP/mixed-protocol port used in this guide
15 seconds
Maximum timeout for one test

In Windows PowerShell, check the listening port first, then run a request with the proxy specified explicitly. Use curl.exe to avoid PowerShell environments where the curl alias runs a different tool. On macOS or Linux, replace curl.exe in the second command below with curl.

Get-NetTCPConnection -State Listen -LocalPort 10808

curl.exe --noproxy "" --proxy http://127.0.0.1:10808 --connect-timeout 5 --max-time 15 -v https://example.com/ -o NUL

--noproxy "" clears the bypass list for this test so an existing NO_PROXY setting won’t interfere. On macOS and Linux, change the output redirection target to /dev/null. The example domain is for checking connectivity; also retest the site that actually fails. Success with one site does not mean every route or destination port is working.

Takeaway: Check the app after an explicit proxy test succeeds

If an explicit proxy request to the same destination works but the browser or terminal’s default request fails, focus on that app’s proxy configuration. Leave the verified node and port unchanged for now.

3. Troubleshoot a Browser That Bypasses the Proxy

Keep v2rayN running with a working node selected. From the tray menu, choose “System Proxy” → “Set system proxy” to apply the settings. Then check what the operating system actually saved instead of relying only on the tray status. Other proxy apps, browser extensions, or organization policies may overwrite the settings afterward.

  1. Check system settings

    On Windows 11, open “Settings” → “Network & internet” → “Proxy” and check the address and port under “Use a proxy server.” On macOS, open “System Settings” → “Network” → your active connection → “Details” → “Proxies.” Desktop settings vary across Linux distributions; in GNOME, check “Settings” → “Network” → “Network Proxy.”

  2. Check the browser’s proxy settings

    In Chrome, open “Settings” → “System” → “Open your computer’s proxy settings.” In Firefox, open “Settings” → “General” → “Network Settings” → “Settings” and check whether “Use system proxy settings” is selected. Choosing “No proxy” or setting a manual proxy means Firefox won’t follow the system settings as expected.

  3. Temporarily disable proxy extensions

    In Chrome, open “Extensions” → “Manage Extensions” and temporarily turn off extensions that control the proxy. Then test with a fresh browser profile. Incognito windows may still inherit policies or run extensions that are allowed in incognito, so they are not a fully isolated test environment.

  4. Check bypass rules

    Check the system proxy exceptions, the “Do not use proxy” list in the browser’s manual proxy settings, and whether an automatic configuration script is enabled. PAC scripts can direct specific destinations to connect directly. Don’t assume PAC mode proxies every site without checking the rules.

  5. Restart and retest

    Close all browser windows, quit any background processes, and restart the browser. Visit the same full URL you used for the command-line test, and watch the v2rayN logs. In Chrome, open chrome://policy in the address bar to check for organization-managed proxy policies. If the device is managed, contact your administrator.

If the browser request never appears in the core logs, check the browser’s proxy settings first. However, missing log entries are meaningful only if access logging is enabled at a suitable log level. If the logs show the destination going direct, the issue is the routing decision, not the system proxy toggle. If the request reaches the proxy outbound and then fails, check the node connection and destination status.

4. Test Terminal Proxy Variables and One-Off Options Separately

There is no universal convention for terminal tools to “follow the system proxy.” For tools that support proxy environment variables, set them in the current terminal session. For tools with a command-line proxy option, an explicit one-off setting is easier to troubleshoot. Variables are passed only to child processes started afterward; already-running editor terminals and background tasks won’t update automatically.

Windows PowerShell: Set variables for the current session

$env:HTTP_PROXY = "http://127.0.0.1:10808"
$env:HTTPS_PROXY = "http://127.0.0.1:10808"
$env:NO_PROXY = "localhost,127.0.0.1"

curl.exe --connect-timeout 5 --max-time 15 -v https://example.com/ -o NUL

Get-ChildItem Env: | Where-Object Name -Match 'proxy'

In HTTPS_PROXY, http:// describes the connection from the terminal to the local proxy—not the protocol used by the destination URL. When accessing an HTTPS site, an HTTP proxy typically creates a tunnel with CONNECT, so don’t change the variable to https://127.0.0.1:10808 just because the destination uses HTTPS. That value may work only if the local listener actually provides a TLS proxy.

macOS and Linux: Watch the variable name’s capitalization

export http_proxy='http://127.0.0.1:10808'
export https_proxy='http://127.0.0.1:10808'
export no_proxy='localhost,127.0.0.1'

curl --connect-timeout 5 --max-time 15 -v https://example.com/ -o /dev/null

env | grep -i proxy

In case-sensitive environments, curl deliberately reads only lowercase http_proxy for HTTP proxies, while HTTPS proxy variables support the corresponding uppercase and lowercase forms. Other tools may follow different conventions, so check their documentation. If uppercase and lowercase versions of the same variable are both set to different values, remove the conflict before adding anything else.

If an explicit --proxy works but setting variables does not, check whether the tool supports those variables, whether it has its own proxy settings, and whether the request matches a bypass rule. Windows WinHTTP settings are separate from the desktop system proxy. Don’t change the global WinHTTP configuration just to fix one terminal tool.

5. Pinpoint the Failure from the Actual Error

The error text is more useful for troubleshooting than “the page won’t open.” The examples below show common messages; wording varies by curl version, operating system, and browser language. Note whether the failure happens during the local connection, CONNECT, TLS, or destination response, then change the relevant setting.

curl: (7) Failed to connect to 127.0.0.1 port 10808

Cause and fix: The local proxy listener is not accepting connections. Make sure the v2rayN core is running, then check the actual listening port and process. If another program is using the port, resolve the conflict and update the app’s proxy settings to match.

ERR_PROXY_CONNECTION_FAILED

Cause and fix: The browser can’t connect to the configured proxy. Check the address saved in system settings and extensions, and rule out an old port, incorrect proxy host, or stopped core. First, run an explicit curl test through the same listener.

curl: (5) Could not resolve proxy

Cause and fix: The hostname in the proxy address could not be resolved, or the proxy URL is invalid. Check for extra characters in the environment variable. First try the confirmed working address http://127.0.0.1:10808 to rule out proxy hostname resolution.

curl: (60) SSL certificate problem: unable to get local issuer certificate

Cause and fix: The trust store used by curl couldn’t build the certificate chain; TLS inspection on a managed network may also be involved. Check the system clock, certificate source, and curl’s certificate store configuration. Don’t leave certificate verification disabled as a workaround.

curl: (28) Connection timed out

Cause and fix: The connection or response did not complete within the specified time. This error alone doesn’t identify where the failure occurred. Use -v to find the last successful stage, then check the core logs to distinguish a local listener issue from a node outbound or destination timeout.

If the browser works but the terminal reports a certificate error, don’t replace the node right away. Browsers and command-line tools may use different certificate trust stores. Likewise, if the terminal works but the browser reports a proxy connection failure, compare the local ports they use before concluding that a protocol is unavailable.

6. Restore Settings and Keep a Minimal Troubleshooting Record

Once you’ve found the cause, keep only the settings you need. If your workflow requires proxy environment variables, add them to the relevant shell startup file and check whether they affect local development services. After testing, use the commands below to remove the variables set in this guide. If a variable already had a value before testing, restore it instead of deleting it.

Clear variables from the current session

# Windows PowerShell
Remove-Item Env:HTTP_PROXY, Env:HTTPS_PROXY, Env:NO_PROXY -ErrorAction SilentlyContinue

# macOS、Linux shell
unset http_proxy https_proxy no_proxy

This won’t clear settings saved elsewhere, such as tool-specific proxy settings, variables with different capitalization, shell startup files, or already-running child processes. Re-enable any extensions disabled for the browser test one at a time and retest. If the issue returns after restoring one, you’ve found what was overriding the proxy.

Takeaway: Use differences in the same request to narrow down the fix

If an explicit proxy request works, check the app’s proxy settings. If the request reaches the core but takes the wrong route, check the routing rules. If the proxy outbound is selected but the connection fails, check the node and network. Change one layer at a time and retest the same URL.

Download v2rayNDesktop and Android clients