The system proxy determines whether an app sends requests to v2rayN; the routing mode determines which outbound route the core uses. For everyday browsing, start with “Set system proxy” and “Bypass China.” Switch to Global temporarily to troubleshoot routing, or use a manual proxy when only specific apps should connect. The sections below cover the entry point, outbound route, and how to verify both.
The system proxy is the entry point; routing mode selects the outbound route
Selecting a node in v2rayN only chooses an available proxy server. It doesn’t automatically route every app through the proxy. Browsers usually read the operating system’s proxy settings, while some terminal tools, games, and apps that manage their own network connections need separate proxy settings or another way to capture traffic.
The system proxy usually points to a listening address on your device. Once a request reaches the local port, the core applies routing rules to send it through the selected proxy node, connect directly over your local network, or block it. So “system proxy is set” doesn’t mean “every request goes through a remote node.”
- App entry point: The browser reads the system proxy, or an app connects explicitly to a local HTTP or SOCKS port.
- Core routing: Rules select a route based on the domain, destination IP, port, and other conditions.
- Outbound action: The connection uses a proxy outbound, a direct outbound, or a blocked outbound.
Set, clear, or leave the system proxy unchanged
In the Windows version of v2rayN, look for “System proxy” at the bottom of the main window or in the tray menu. Check the options “Set system proxy,” “Clear system proxy,” and “Do not change system proxy.” The exact location may vary by interface, but these options change system settings—not the core’s routing rules.
| System proxy option | What it does | Check before using |
|---|---|---|
| Set system proxy | Points the system proxy to the client’s local listening address | The core is running, and the address and port match |
| Clear system proxy | Removes the related system proxy settings so apps that follow them can connect normally | Whether manual proxy settings in apps or environment variables are still in place |
| Do not change system proxy | The client leaves the current system proxy state untouched | Whether a proxy address was already set on the system |
“Do not change” does not mean “off.” If the system was already pointing to a local port, that address may remain active. To restore a normal connection, clear the system proxy explicitly and check for proxy settings in browser extensions or individual apps.
On macOS, check the active settings under System Settings → Network → your current network service → Details → Proxies. Don’t rely on a Windows menu screenshot to determine the status on another platform. If automatic setup fails, grant the required system permissions and then check the proxy address again.
How Global, Bypass China, and Direct handle traffic
Routing modes only handle traffic that has reached the core. The three common presets below reflect different goals, but imported or edited rules may include exceptions such as direct connections to private IPs or ad blocking. Check the active rules and logs to confirm the actual outbound route.
Bypass China
RecommendedRequests matching mainland China domain or IP lists go through a direct outbound; other requests usually go through the proxy. The result depends on the rule set, match order, and DNS resolution—not the language of the website.
Best for: Everyday use when you need both mainland China services and sites that require a proxy.
Global
Routes as much traffic entering the core as possible through the proxy outbound. It won’t capture apps that aren’t using the proxy, and some presets may retain exceptions such as direct connections to private IPs.
Best for: Temporarily checking whether a node works or whether routing rules are causing an access problem.
Direct
Routes traffic entering the core directly over your local network. Requests may still pass through the local listening port; they simply don’t use a remote proxy node. This is different from clearing the system proxy.
Best for: Keeping an app’s proxy settings in place while testing whether your local network can reach a destination directly.
How to test: Keep the entry point the same and change only the routing mode
If a site works in Global mode but fails in Bypass China, first check which rule matches the domain and what address DNS returns. Don’t immediately reinstall the client or reimport the entire subscription.
Setups for everyday browsing and individual apps
First decide which apps need a proxy, then choose an entry method. Changing the routing mode alone won’t make an app that never connects to a local port start using the proxy. Conversely, a browser connected to a local port may still bypass the remote node because of a direct routing rule.
Two entry methods: choose based on which apps need a proxy
Apps that follow system settings, such as browsers
- Start the core and select an available node.
- Set “System proxy” to “Set system proxy.”
- Start with “Bypass China” routing, then adjust based on the rules that match.
- Turn off any separate proxy setting in the browser to avoid conflicting entry points.
Use a proxy for just one app
- Clear the system proxy first and confirm other apps connect normally.
- Enter the local proxy address and the matching protocol in the app.
- If needed, set the client to “Do not change system proxy.”
- You can still use Bypass China routing, or switch to Global temporarily for a specific task.
Both setups use core routing. The difference is how an app reaches the local port—not a change to the node protocol.
For a local printer, router admin page, or company intranet, check the private IP rules too. A domain used by an internal service may not be covered by public rule sets. Add a precise domain or subnet rule for direct access if needed, and place it before any broader rule that would override it.
Verify the setup with the listening port and logs
Open Settings → Parameter settings and check the local listening options against the information shown in the main window. The addresses and ports below are troubleshooting examples, not fixed defaults for every version. Use them only if the corresponding SOCKS or mixed-protocol listener is enabled on your device.
- Check that the core starts: If the logs show an address-in-use error or a configuration load failure, resolve that first. Pointing the system proxy to a port with no listener will only cause connection failures.
- Check the protocol: If the app is set to SOCKS5, the port must accept SOCKS connections. An HTTP-only listener cannot be used as a SOCKS proxy. A mixed-protocol listener can support both, but check the actual settings.
- Send a request explicitly: Run the command below in a terminal with curl installed. On Windows, use
curl.exeto avoid command alias differences. Replace the example port with the one used on your device. - Check the outbound route: Find the corresponding connection’s outbound marker in the core logs. If the log level is too low, temporarily increase it, reproduce the issue, then restore it. Remove node credentials before sharing logs.
curl --socks5-hostname 127.0.0.1:10808 --connect-timeout 10 -I https://www.example.com/
This command explicitly uses the SOCKS entry point and doesn’t rely on the system proxy. The --socks5-hostname option sends the destination hostname to the SOCKS server for resolution. The request still follows v2rayN’s routing mode, so success only confirms that the route from this entry point to the destination works—it doesn’t prove that traffic went through a remote node.
Keep the destination and entry point the same: test Global first, then Bypass China, and note the outbound route for each. Don’t change the node, DNS, and routing mode at the same time; even if access starts working, you won’t know which change fixed it.
If Bypass China routes incorrectly, check DNS and rule order
Routing doesn’t classify traffic by website name or page content. When an app passes a domain to the core, domain rules may match it; when it passes only an IP address, the core has different information to work with. Sniffing may reveal a domain for some connections, but it isn’t guaranteed to work with every protocol or encryption method.
- Check rule order: Core routing rules are usually checked from top to bottom, and the first match determines the outbound route. If a broad rule such as “proxy everything” comes first, later rules for direct connections to specific domains may never take effect.
- Check rule data: Configurations that rely on GeoSite or GeoIP need the corresponding rule data to be available. Updating node subscriptions and updating routing data are separate tasks; refreshing a subscription won’t automatically fix every routing category.
- Check the domain strategy: In Xray routing,
AsIsdoesn’t resolve a domain just to match its IP.IPIfNonMatchattempts resolution after the domain fails to match a rule, allowing IP rules to be checked next. Neither option controls the system proxy. - Check the DNS path: A browser’s encrypted DNS, an app’s own resolver, and the core’s DNS may return different addresses. First confirm whether the app passes a domain or an IP, then consider changing the core’s DNS settings.
Node protocols such as VMess and VLESS don’t determine whether a particular site uses a proxy or connects directly. The protocol handles communication between the client and server; routing selects the outbound. A node’s connection settings are used for a request only when routing selects the proxy outbound.
Common questions about system proxy and routing modes
Why hasn’t an app’s outbound route changed after switching to Global?
First check whether the app is connecting to the local proxy port. Review the app’s own network settings and compare with an explicit SOCKS request. If the explicit request uses the proxy but there’s no corresponding log for the app, fix the entry point rather than changing routing rules again.
Can I quit v2rayN after switching to Direct?
Clear the system proxy before quitting. Direct mode may still depend on the local core to receive and forward requests. If the system still points to a local port, quitting stops that port from listening, and browsers that follow the system settings may lose connectivity.
Why can’t my browser open websites even though the latency test succeeded?
A latency test doesn’t cover the browser’s full connection path. First check that the core is listening, then verify which port the system proxy points to. Next, compare Global and Bypass China for the same destination. Also check node authentication, TLS time requirements, and the specific errors in the logs.
Why does my terminal still use a proxy after I clear the system proxy?
Check the terminal environment for HTTP_PROXY, HTTPS_PROXY, and ALL_PROXY, as well as proxy options passed to the command itself. Clearing the system proxy won’t remove these settings. After changing environment variables, you may also need to reopen the terminal.
If Bypass China fails but Global works, should I just keep using Global?
You can use Global temporarily to finish the task, then investigate the failing domain’s rule match and DNS result. Add a precise proxy rule only for domains that need one, and retest local network and mainland China services. Avoid changing the routing for all traffic to fix a single site.