System proxy settings determine whether apps send requests to the client; routing determines where the client sends requests it receives. If you’re new to v2rayN or v2rayNG, understand these two layers first. Start with Bypass China for everyday use, switch to Global briefly to compare when something goes wrong, then check the connection log to confirm the result—instead of repeatedly toggling the same setting.
System Proxy vs. Routing Modes: One Controls the Entry, the Other the Exit
On desktop, v2rayN starts the core and opens a local proxy listener. Apps such as browsers can send requests to this endpoint. On Windows, “Set system proxy automatically” updates the system proxy settings, but whether an app follows them depends on the app. Some command-line tools, games, and apps with their own networking stack won’t use them automatically.
Routing rules come into play only after a request reaches the core. Based on the destination domain, IP address, port, and other conditions, the core selects a proxy, direct, or blocked outbound. So “system proxy enabled” doesn’t mean every request goes through a remote server, and selecting “Global” doesn’t mean the entire device’s network traffic is captured.
| Configuration layer | What it does | What it cannot replace |
|---|---|---|
| System proxy | Sends apps that follow system settings to the local proxy endpoint | Cannot guarantee that every app or all UDP traffic is captured |
| Routing mode | Selects an outbound for requests that have reached the core | Cannot pull requests into the core if they never reached it |
| TUN / VPN capture | Receives device traffic at the network layer when it meets the capture criteria | Cannot guarantee node support for every protocol or replace routing rules |
Global, Bypass China, and Direct: How Traffic Flows
Here, “Global” means the client’s routing preset, not device-wide capture at the system level. It generally sends ordinary requests that reach the core through the proxy outbound, while retaining necessary exceptions such as LAN traffic and connections to the node server. To see where a particular address goes, check the active rules and connection log.
Bypass China
RecommendedPreset domain and IP rules send destinations in mainland China directly, while other destinations that don’t match a rule usually go through the proxy. This lets you use mainland China work services alongside sites that need a proxy. Rule data isn’t a live geographic map, so some sites may need custom handling.
Best for: Everyday browsing, mainland China work services, and services outside China
Global
Sends most business requests that reach the core through the proxy, minimizing the effect of split-tunneling rules during tests. Mainland China destinations may also be routed through the node and back, adding network hops and using node bandwidth.
Best for: Briefly troubleshooting routing issues or apps that require a consistent outbound
Direct
Sends requests that reach the core directly to their destinations over your local network. The client can keep running and apps can continue connecting to its local endpoint, but their traffic no longer passes through a remote proxy node.
Best for: Comparing against your local network or when you don’t need a remote proxy
“Bypass China” doesn’t route traffic based on a page’s display language, nor does it send every Chinese-language domain direct. Rules often rely on data such as geosite:cn and geoip:cn; domain rule coverage, CDN addresses, and DNS resolution can all affect the match. VMess and VLESS are proxy protocols, not counterparts to these three routing modes.
v2rayN Workflow: Set Up the Entry, Choose a Route, Then Test
The steps below use common menu labels from the Chinese-language Windows desktop interface. Buttons and preset names may differ by version. If you can’t find the same item, check the actual routing configuration rather than guessing from a similar label. Before you begin, select a working node and make sure the core is running. Successfully importing a subscription only means the configuration was added—it doesn’t confirm that the node connects.
-
Check the listener
Go to “Settings” → “Preferences” and review the local listener ports and other settings. Note the actual ports, and check the startup log for listener errors such as “address already in use.”
-
Enable the entry
At the bottom of the main window, under “System proxy,” select “Set system proxy automatically.” This lets apps that follow the system proxy use the client. “Do not change system proxy” doesn’t mean the proxy is off—it means the client leaves the current system settings unchanged.
-
Choose a routing preset
At the bottom of the main window, select the Bypass China preset under “Routing.” To review the rules, go to “Settings” → “Routing settings” and confirm that direct rules for destinations in mainland China appear before the default proxy rule.
-
Test each route separately
Visit a known direct-access service in mainland China and a destination that requires a proxy. Check the connection log for the destination and outbound tag. Close existing page connections or restart the browser before testing so reused connections don’t hide the effect of the change.
-
Restore your settings
After testing, switch back to your everyday routing preset. Before stopping the local proxy service, select “Clear system proxy” under “System proxy,” then exit the client. This prevents the system from pointing to a listener that is no longer running.
Ports and Rule Fields: Map the Traffic Path
The local address and port are evidence of the traffic entry point. The values below illustrate a setup with separate SOCKS and HTTP listeners; they aren’t guaranteed defaults for every v2rayN version. If your version uses a mixed listener port, use the values from your actual configuration instead of copying this example.
For example, if an app is manually configured to use the HTTP proxy 127.0.0.1:10809, it may continue using the client even after you clear the system proxy. Conversely, enabling the system proxy may not change an app’s traffic path if it is set to connect directly. Make sure the proxy type matches too: don’t enter an HTTP proxy address in a field that accepts only SOCKS.
This V2Ray/Xray-style routing snippet is not a complete, runnable configuration. It assumes the outbound list already contains tags named direct and proxy, and that the core can read the corresponding rule data. For client-managed configurations, make changes in the interface; manually editing generated files may be overwritten the next time the client starts.
{
"routing": {
"domainStrategy": "IPIfNonMatch",
"rules": [
{
"type": "field",
"domain": ["geosite:cn"],
"outboundTag": "direct"
},
{
"type": "field",
"ip": ["geoip:private", "geoip:cn"],
"outboundTag": "direct"
},
{
"type": "field",
"network": "tcp,udp",
"outboundTag": "proxy"
}
]
}
}
outboundTagmust exactly match an outbound’stag. The tag name itself doesn’t create proxy or direct functionality.- Rules are matched in order. If the broad catch-all rule at the end is moved to the top, the mainland China direct rules below it will never handle their matching requests.
IPIfNonMatchallows the core to resolve an IP and try IP rules when no domain rule matches; it does not capture every DNS query on the system.network: "tcp,udp"defines which traffic the rule can match. It doesn’t mean the current proxy protocol, node transport, or app entry point necessarily supports UDP.
Desktop and Android: Choose the Right Setup for Your Platform
For everyday use, start with Bypass China and add rules for specific apps as needed. Don’t leave everything in Global just because one site is having trouble. The main difference between desktop and Android is how requests enter the core; once they’re in, you still need to check domain and IP matches and the selected outbound.
Recommended setup: Start with Bypass China and check how each app connects
Desktop: v2rayN
- Set your browser to use the system proxy and choose Bypass China for routing.
- For tools that don’t follow the system proxy, configure their own HTTP or SOCKS proxy first.
- Consider TUN mode and its permission requirements only when you need broader traffic capture.
- Keep LAN services on a direct connection where possible; check both system proxy exceptions and core routing rules.
Android:v2rayNG
- Start the service and confirm system VPN authorization. Selecting a node alone doesn’t start the service.
- Review the preset or custom rules under “Routing settings”; use the options in your current version.
- If per-app proxying is enabled, confirm that the target app is included in the proxy scope.
- Distinguish between “bypass VPN for an app” and “route directly after traffic enters the core.” They happen at different layers.
Check which traffic reaches the client before changing routes. Outbound rules won’t help if the app’s requests never enter the core.
Company intranets, printers, and router admin pages usually need direct access over the local network. If they stop working in Global mode, first check private IP rules and system proxy exceptions instead of immediately switching nodes. For services that require a fixed outbound, also check DNS, IPv6, and the app’s own networking behavior. The word “Global” alone doesn’t guarantee that every connection uses the same outbound.
Still having trouble after switching modes? Troubleshoot by symptom
Global is enabled, but one app still isn’t using the proxy?
First check whether the client connection log shows the app’s destination. If there’s no entry, review the app’s own proxy settings. On desktop, you can enter the current HTTP or SOCKS listener address manually; on Android, check the per-app proxy scope. If the request never arrived, don’t change the routing rules yet.
A site won’t open with Bypass China, but works with Global?
Keep the same node, revisit the same destination, and compare the outbound tags. If Bypass China routes it direct, check the rules for the domain and its resolved IP. To add an exception, put a proxy rule for the specific domain before any broader direct rule. Don’t start by routing an entire IP range through the proxy.
The browser still reports a proxy error after switching to Direct?
Direct routing still requires the local core to receive requests. If the core is stopped while the browser still points to 127.0.0.1:10809, the connection will fail. Restart the core, or clear the system proxy and remove the browser’s manual proxy setting, then test again.
A mainland China site is using the proxy. Does that mean the rules are broken?
Check the matched domain, resolved address, and rule order first. The site may use a CDN outside mainland China or may not be covered by the current domain rules. Once you’ve confirmed it can connect directly, add a narrowly scoped direct rule. After updating rule data, establish a new connection instead of relying on an old, reused one.
The outbound doesn’t change after switching modes. What should you do?
Close old connections from the test page, confirm the client has reloaded its configuration, then send a new request. An IP-check page shows the route for that one request; it can’t prove that every app uses the same route. Use the client log to investigate—it’s more reliable than repeatedly refreshing a page.
Everyday setup and final checks
For everyday work and browsing, start by confirming the entry point and selecting Bypass China. Use Global as a temporary comparison: keep the node, destination, and app the same, and change only the routing mode to narrow down the cause. If both modes fail, check the listener, node connection, DNS, and app setup instead of cycling through routing presets.
- Everyday use: Choose Bypass China and add a specific domain rule if a site is routed incorrectly.
- Troubleshooting routing: Switch to Global temporarily, note the destination and outbound tag, then restore your usual mode after testing.
- Check your local network: Use Direct routing. To bypass the client entirely, also remove the app or system proxy settings.
- Exit the client: Clear any leftover system proxy settings first so they don’t point to a closed port.
Check the entry and exit separately, and choosing a mode no longer means guessing at a toggle. The traffic path is clear when the log shows the destination, the rules explain the outbound, and the app’s proxy settings match the listener address.