V2Ray System Proxy vs. Global and Bypass Mainland China Modes: Choose the Right Proxy Setup

Learn what the system proxy controls, how Global and Bypass Mainland China route traffic, and which settings work best for common use cases.

At a glance

The system proxy controls how apps hand connections to the client; Global and Bypass Mainland China control where those connections go next. This guide is for users who have imported a node but aren’t sure how to combine proxy settings. First, separate app access from routing, then configure desktop browsing, command-line tools, and per-app routing on Android. Finally, use ports, logs, and side-by-side tests to find what isn’t working.

System Proxy vs. Routing Modes: Two Separate Controls

Selecting a node in v2rayN doesn’t mean every app is using it. The client must start a local proxy listener, and apps must send connections to it through the system proxy, manual proxy settings, TUN, or another method. Once traffic reaches the core, routing rules determine whether it uses a proxy outbound, goes direct, or gets blocked.

So “Set system proxy” and “Global” aren’t alternatives. The former usually changes the operating system’s proxy settings; the latter is typically a routing preset provided by the client. The V2Ray or Xray core applies the actual rules, while the client determines the mode names and preset contents shown in its interface.

SettingWhat it controlsWhat it doesn’t do
System proxyProvides local proxy settings to apps that honor themDoesn’t guarantee that every process or protocol is routed through the client
Global routingUsually sends connections that reach the core through the selected proxy outboundDoesn’t automatically connect apps that weren’t routed to the client
Bypass Mainland China routingSelects direct or proxy routing based on domains, IPs, and rule orderCan’t guarantee that every domain is classified correctly
TUN accessRoutes eligible IP traffic through a virtual network interfaceIsn’t the same as Global routing and doesn’t replace DNS or outbound rules

Troubleshooting order: Confirm access first, then check routing

If a request never reaches the client, switching between Global and Bypass Mainland China ten times won’t change its route. First, test the local listener with an explicit proxy request, then compare both routing modes using the same app.

System Proxy Coverage: Browsers, Terminals, and TUN

On Windows, check the manual proxy settings under Settings → Network & Internet → Proxy. In v2rayN, the usual path is right-click the tray icon → System Proxy → Set system proxy. Labels may vary between versions, so follow the options shown in your client. After setup, the system proxy address and port should match the client’s active listener.

Browsers that honor the system proxy usually use this route, but apps can have their own proxy settings. Command-line tools may read only command-line options or environment variables. The system proxy’s bypass list can also send some addresses around the local listener. If one app works, that doesn’t prove another app is connected.

127.0.0.1
Example loopback address
10808
Example SOCKS listener port used below
10809
Example HTTP listener port used below

These values are examples, not defaults for every version. In v2rayN, look under Settings → Parameters for local listener port options. Some versions use a mixed listener, in which case HTTP and SOCKS may share a port. Don’t copy the examples and then assume a connection failure is caused by the node.

Global vs. Bypass Mainland China: Choosing a Daily Routing Mode

Global usually sends business connections that reach the core through the proxy outbound. It’s useful for short-term troubleshooting, testing a node, or routing all relevant traffic to services that require a proxy. It doesn’t mean all traffic from the device goes through the proxy, nor does it automatically send every operating system DNS query through the node. Client presets may still keep exceptions, such as direct connections to local addresses.

Bypass Mainland China typically combines rules for mainland Chinese domains and IPs with a proxy outbound as the default: connections matching mainland China criteria go direct, while the rest use the proxy. Check the actual rules in the active preset to see whether it also includes direct access to local networks, ad blocking, or other exceptions; don’t infer these from the mode name alone.

System Proxy On + Bypass Mainland China

Recommended

A good starting point for mixed access from mainland China. Common local services keep their direct connection, while traffic that needs a proxy is routed to the node. Add specific domain rules if a service is classified incorrectly.

Best for: work in mainland China, everyday browsing, and switching between local and international services

System Proxy On + Global

Reduces interference from routing rules, making it easier to check whether the selected node works. Local services may also use the node, which can increase latency, change the apparent region, or trigger additional sign-in checks.

Best for: briefly troubleshooting routing rules or routing all traffic to sites that require a proxy

System Proxy Off + Manual Proxy in Apps

Enter the local proxy settings only in the apps that need them. After traffic reaches the core, you can still choose Global or Bypass Mainland China. Turning off the system proxy doesn’t stop the local listener or prevent manually configured apps from using it.

Best for: proxying only command-line tools, test programs, or a specific browser profile

Whether a node uses VMess or VLESS doesn’t change how these two layers work. The protocol defines how the client communicates with the server; the system proxy controls how apps connect to the client; routing determines which outbound handles each connection. Subscription updates mainly refresh node details and aren’t a general fix for local connection issues.

Bypass Mainland China Isn’t Matching: Check Rule Order and DNS

Common routing configurations evaluate rules in order. If a broad proxy rule appears before the mainland China direct rules, later conditions may never be reached. For services deployed across regions or using a shared CDN, IP geolocation alone may not produce the expected result. Check the service domain, DNS results, and actual destination address together.

  1. Check app access. Make a new request and confirm that the local listener receives it. System proxy exceptions and an app’s own direct-connection settings can bypass the core entirely.
  2. Check whether the domain is visible. If an app supplies only a resolved IP address, domain rules may not be available for matching. Traffic sniffing can provide domain information for some protocols, but it won’t cover every connection.
  3. Check rule order. Put specific domain exceptions before broad matches and verify that the target outbound tag exists. Back up custom rules before changing them, and edit one at a time.
  4. Check the resolution strategy. The core’s domainStrategy affects whether IP matching conditions are added for domains during routing. It isn’t a system DNS switch, and its meaning can’t be carried over directly to another core’s configuration format.
  5. Check rule data files. If you use conditions such as geosite:cn or geoip:cn, make sure the required rule data is available. Resource versions and category coverage can both affect matches.

Consider DNS alongside the traffic route. Incorrect local resolution may send connections to unreachable addresses, while remote resolution may not suit services that should connect directly in mainland China. Record the original settings first, then change either DNS or routing one item at a time. Changing the node, DNS, and mode all at once makes it hard to identify the cause.

Desktop and Android: Same Routing, Different Ways to Connect

Desktop clients typically use the system proxy or TUN. On Android, v2rayNG usually creates a local virtual interface through VpnService to capture traffic, then routes it through the Xray core. v2flyNG uses the V2Fly core; check the client you’re using for its rule interface and supported protocols rather than assuming it has all the options found in another client.

Setup: Choose Which Apps to Route, Then Select an Outbound

Desktop: v2rayN
  • Select a working node and confirm the local listener port.
  • For everyday browsing, start with the system proxy and Bypass Mainland China.
  • Set an explicit HTTP or SOCKS listener in command-line tools as needed.
  • If you need TUN, test DNS, permissions, and direct-route exceptions separately.
Android: v2rayNG
  • Approve the system VPN connection when connecting for the first time.
  • In Settings, check the per-app proxy options and what each app list includes.
  • Tell apart “proxy selected apps only” from “bypass selected apps.”
  • Apply the selected routing rules after the app is included in the captured traffic.

Per-app lists determine which apps connect to the client; Bypass Mainland China determines how connections are routed after they arrive. Neither setting replaces the other.

For example, an Android app excluded from traffic capture may still connect directly even when routing is set to Global. Conversely, an app included in the capture scope won’t necessarily send every connection through the node: direct rules in Bypass Mainland China still apply. After changing the per-app list, stop and restart the connection, then reopen the app to test.

Testing and Troubleshooting: Compare the Same Request

Choose a target that reliably reproduces the issue, then keep the node fixed while comparing results. The command-line examples below assume the two local listeners described earlier. Use them only if the client actually provides HTTP and SOCKS services on those ports. The example domain is for illustrating request syntax; for troubleshooting, replace it with the site where the problem occurs.

# HTTP listener: use the port configured in your client
curl --proxy http://127.0.0.1:10809 --connect-timeout 10 --max-time 30 --head https://example.com/

# SOCKS listener: resolve the destination domain through the proxy
curl --proxy socks5h://127.0.0.1:10808 --connect-timeout 10 --max-time 30 --head https://example.com/

The 10-second value is the connection timeout; 30 seconds is the limit for the entire request. Neither is a measured speed. Unlike local DNS resolution, socks5h resolves the domain through the proxy, so keep that difference in mind when comparing results. An HTTP error status may still mean the connection succeeded. Check the response and logs rather than treating every non-success status as a node failure.

  1. Keep the node fixed and specify the proxy explicitly. If the local port connection fails, check that the core is running, the port is correct, and no other process is using it.
  2. Keep the target the same and switch routing modes. If Global works but Bypass Mainland China doesn’t, check direct-routing conditions, domain classification, and DNS results first. Also rule out a temporary issue with the destination service.
  3. Test the app after confirming the explicit proxy works. If the same target works in a terminal but not in a browser, check the browser’s active proxy settings, extensions, and system bypass list.
  4. Start a new connection and check again. Existing long-lived connections may keep using the old route. After changing rules, make a new request and restart the target app if needed. If logging is off, temporarily enable access logs, then restore your usual log level once you’ve found the issue.

Global is selected. Why is my terminal still using the same route?

Command-line tools may not read the system proxy. First, connect explicitly with the --proxy option above, replacing the port with the one configured in your client. If it works, configure the tool’s own proxy settings or environment variables. Switching routing modes alone won’t connect the terminal to the client.

Why are local services slower in Bypass Mainland China mode?

First check whether connections to the service are actually using a direct route. If they’re going through the proxy, check the specific domain rules and their order. If they’re direct, investigate local DNS and network conditions. When adding an exception, target the service domain rather than allowing a large range of shared addresses.

Why do some apps still use the node after I turn off the system proxy?

Check whether the app has its own local proxy configured and whether TUN is still running. The system proxy switch affects only apps that use that route. It doesn’t clear an app’s proxy settings or stop a virtual interface from capturing traffic.

My browser stops working after I quit the client. What should I check?

In Windows Settings → Network & Internet → Proxy, check whether the system still points to a local port that is no longer listening. You can restart v2rayN, then use Tray menu → System Proxy → Clear system proxy. Also check for independent proxy settings in the browser.

Keep a reliable setup; change rules only to address specific issues

For everyday use, start with “System Proxy + Bypass Mainland China,” and use Global for comparison. If an explicit proxy request also fails, go back to the listener and node checks. Consider TUN only when you need broader traffic capture, rather than enabling every option at once.

For more on the terminology, see the Glossary. For the full setup sequence, see the User Guide. Recording a reproducible target, the actual port, and the matched outbound is more useful for troubleshooting than simply noting that “Global is on.”

Download Clients