This checklist is for v2rayN, v2rayNG, or v2flyNG when the client shows it is running and may even return latency results, but browsers and apps still cannot connect. Focus on whether traffic reaches the local proxy, whether the listening port works, whether routing is blocking domains, whether DNS returns valid addresses, and whether TUN or another proxy is competing for the system network entry point.
First, clarify what “connected” actually means
A changed tray icon or a startup-complete message in the log only confirms that the core process loaded its configuration. It does not mean browser traffic is using the proxy or that the remote node is forwarding traffic successfully. The full path includes the app, system proxy or VPN interface, local listening port, routing rules, DNS, and outbound node. A failure at any point can leave the interface looking normal while webpages remain unreachable.
Start with a minimal test: close every extra proxy tool and keep only one V2Ray client running; select a known-working node; use the same browser to open a regular webpage and a webpage that requires a proxy. If regular webpages also fail, check the local port, system proxy, and TUN first. If regular webpages work but specific sites fail, focus on routing, DNS, node protocol parameters, and remote reachability.
Step 1: Check the system proxy and local listening port
The most common desktop issue is that the core is running while the system proxy remains disabled. v2rayN’s local port receives requests from browsers and apps; the system proxy tells programs that support it to send requests to that port. Both must point to the same values that are actually listening—do not rely on assumed default ports.
If the browser has a separate proxy configuration, make sure it is not still pointing to an old port. For example, if the client has changed to 127.0.0.1:10818 while a browser extension still uses 127.0.0.1:10808, requests will go to a nonexistent listener. Corporate network tools, debugging proxies, and older clients may also be using the same port.
Check the running status
In the v2rayN main window, confirm that the intended server is selected and the core log shows a completed startup without repeated restarts or an immediate exit.
Check the listening port
Open “Settings” → “Parameter Settings” → “Basic Settings” and note the local SOCKS or mixed-proxy port. 10808 is common, but use the value shown in the current interface.
Enable the system proxy
In the main window, open “System Proxy” and select “Auto Configure System Proxy”. Then confirm that the system proxy settings point to
127.0.0.1and the current port.Rule out port conflicts
Exit other proxy and network debugging programs, then restart v2rayN. If the log still reports a bind failure, change the local port to 10818 and start it again.
Restart the app and test
Fully exit the browser and reopen it so an old connection pool does not keep reusing direct connections. Test a regular webpage first, followed by the target address that requires a proxy.
Error: failed to listen TCP on 127.0.0.1:10808
Cause and fix: The local port could not be opened for listening, usually because another process is using it. Close duplicate client instances, or go to “Settings” → “Parameter Settings”, choose an unused port, and restart the core.
Error: bind: Only one usage of each socket address is normally permitted
Cause and fix: A listener already exists on the same address and port. Check whether two v2rayN instances are running, then exit debugging proxies, older clients, or local services using 10808.
Error: proxy server is refusing connections
Cause and fix: The browser tried to connect to the proxy, but no service is available on that port. Recheck that the system proxy port exactly matches the client’s listening port.
Step 2: Return routing to a verifiable state
Routing rules determine whether a request uses the proxy, connects directly, or is blocked. Expired rule sets, incorrect custom domains, and reversed priorities can all send a target site to the wrong outbound route. During troubleshooting, avoid changing several rule groups at once. Start with a clearly defined mode, then use the logs to see which rule ultimately matched the target domain.
In v2rayN, open “Settings” → “Routing Settings”, temporarily select the basic rule set provided by the client, and disable recently added custom rules. If “Global Proxy” works but “Bypass local networks and common direct domains” does not, the node and port are probably fine; focus on split-routing rules, domain categories, and DNS results.
- Global Proxy works, rule mode fails: Check whether the target domain was incorrectly assigned to a direct outbound route, especially custom suffix rules and regular expressions.
- Global Proxy also fails: Go back to the local port, node protocol parameters, TLS time, and remote network checks instead of repeatedly changing routing.
- Only LAN addresses fail: Confirm that private addresses are not being sent through the proxy. Printers, router admin pages, and shared devices should normally use a direct connection.
- Only some subdomains fail: A webpage may call several API domains. Use the core log to identify the specific host that failed instead of adding only the main site domain.
Conclusion: use Global mode only for diagnosis
If Global Proxy restores access, the local listener and node outbound route are basically working. Fix the rules rather than relying on Global mode long term. Restore custom rules one at a time to identify the rule causing incorrect routing.
Step 3: Check DNS resolution and system time
DNS failures usually appear in three ways: the domain cannot be resolved, it resolves to an unreachable address, or DNS requests are routed incorrectly. If connecting directly to a server address works but using its domain fails, the problem is probably DNS. If the node server itself uses a domain, DNS failure can stop the core before it establishes the outbound connection.
First check the system date, time zone, and automatic time synchronization. An incorrect clock can affect TLS certificate validation and make an otherwise valid subscription configuration fail during the handshake. Then clear the system DNS cache and temporarily disable encrypted DNS configured separately in the browser so test requests use one resolution path.
Synchronize system time
Open system “Settings” → “Time & language” → “Date & time”, enable automatic time and time-zone settings, then sync immediately.
Review resolution logs
Reconnect to the node and open the core log. Search for
lookup,DNS,no such host, ortimeout, and record the failed domain.Clear the cache
Flush the system DNS cache using the normal troubleshooting procedure, then quit and reopen the browser so it does not keep using an old cached address.
Use one resolution path
During troubleshooting, keep one DNS configuration active. Do not enable client DNS, browser-specific DNS, and DNS takeover by another network tool at the same time.
ipconfig /flushdns
nslookup example.com
netstat -ano | findstr 10808
The first command clears the Windows DNS cache; the second checks whether the current system resolver can return an address; the third checks whether 10808 is listening. If the client uses a different port, replace it with the value shown in “Parameter Settings”. Command output does not prove the full path works, but it quickly separates “nothing is listening” from “DNS resolution failed”.
Error: failed to find an available destination
Cause and fix: The core did not receive a usable destination address. Common causes include failed domain resolution or no valid address remaining after routing filters. Check the spelling of the node server domain, unify the DNS configuration, and restart the core.
Error: lookup server.example: no such host
Cause and fix: The current DNS resolver reports that the domain does not exist. Confirm that the subscription did not truncate the server address, switch to a working resolver, and update the subscription again.
Error: context deadline exceeded
Cause and fix: The connection or resolution did not finish within the allowed time. First determine whether the log entry occurred during DNS or the outbound handshake, then check local packet loss, the node port, and transport parameters.
Step 4: Rule out TUN, VPN interfaces, and firewall conflicts
TUN mode creates a virtual network interface and also routes traffic from programs that do not read the system proxy. Its wider coverage makes conflicts more likely with other VPN interfaces, virtual machine adapters, enterprise security software, or firewall rules. A typical sign is that webpages work with the system proxy but all connectivity stops as soon as TUN is enabled, or that abnormal routes remain after the client is closed.
First disable TUN and keep only the regular system proxy. If access returns, the node configuration is not the primary issue. Then check whether the virtual interface was created successfully, whether the default route is being controlled twice, and whether DNS still points to a virtual interface that has stopped. Do not enable two network tools that can modify the default route.
- Exit any program that creates a virtual network adapter or modifies the default route, leaving only the current client running.
- In v2rayN, disable TUN mode and re-enable “Auto Configure System Proxy”, then verify basic browser access.
- Check that the firewall allows the v2rayN main program and its current core to access private and public networks.
- If you recently upgraded the client, restart the system so old virtual interfaces, routing tables, and locked processes are fully released.
- After restoring TUN, watch the log again. Confirm that the inbound type has changed and check whether the failure occurs during DNS forwarding.
Error: failed to create TUN interface
Cause and fix: The virtual interface could not be created, possibly because of insufficient permissions, a driver problem, or a conflicting interface name. Close other virtual networking tools, restart the system, and enable TUN with the appropriate permissions.
Error: access is denied
Cause and fix: The client lacks the permissions required to modify the network adapter or routes. Disable TUN first to test regular proxy mode, then check system permissions and security-software block logs.
Conclusion: get the regular proxy working before TUN
If connectivity returns after TUN is disabled, focus on the virtual interface, routing table, and DNS takeover. Repeatedly switching VMess or VLESS nodes is unlikely to fix a conflict at the local network entry point.
Step 5: Check VPN permissions and app routing on Android
v2rayNG uses the Xray core, while v2flyNG uses the v2fly core. On Android, both typically take over traffic through the system VPN interface. A VPN icon in the status bar only means the interface was requested; it does not prove every app was included correctly. If the browser works but one app does not, check app routing first. If no apps work, check VPN permissions, node parameters, DNS, and battery background restrictions.
Configurations such as VMess and VLESS must keep the server address, port, user identifier, transport, TLS, and path parameters consistent. After a subscription update, the server parameters may have changed while the old configuration remains selectable in the list; the connection then times out during the handshake. Update the subscription and select the refreshed entry instead of copying and modifying the old node.
Recreate the VPN interface
Stop the current connection, wait for the VPN icon to disappear from the status bar, then start the connection again and confirm that the system authorization dialog was accepted.
Disable app routing
Open the client’s “Settings” → “Per-app proxy”. Temporarily disable whitelist or blacklist rules during troubleshooting so the browser and test app use the same path.
Update the subscription
Run an update from the subscription group, confirm that the number and names of nodes have refreshed, then select an updated node for the connection test.
Verify node parameters
Check the server port, transport, TLS, SNI, Host, and path. Make sure parameters from another node were not mixed into the current configuration.
Allow background activity
In the system app settings, allow the client to remain active in the background so battery policies do not pause the VPN process after the screen turns off.
The node shows a latency result—why do webpages still not load?
A latency test and a browser session do not necessarily use the same path. Stop and reconnect, disable per-app proxy rules, and check whether browser traffic appears in the core log.
Regular websites work, but some domains keep loading—what should I do?
Switch to Global Proxy for comparison. If Global mode restores access, check the routing rule matched by the domain and the DNS address returned. If Global mode also fails, recheck the node transport and TLS parameters.
Everything times out after updating the subscription—what should I do?
Confirm that the device clock is accurate, update the subscription once more, and select a newly generated node. If old nodes remain in the list, check the group and update time before testing; do not keep testing expired entries.
What if only one app cannot connect?
Open “Settings” → “Per-app proxy” and check whether the app is excluded. Disable split routing during troubleshooting, then add app rules one at a time after access returns.
What if the connection stops working after the screen has been locked for a while?
Set the battery policy for v2rayNG or v2flyNG to allow background activity, and allow the VPN to run continuously. Reconnect, lock the screen for 5 minutes, and confirm that the VPN icon remains in the status bar.
A 10-minute troubleshooting sequence: change one variable at a time
The fastest approach is not repeatedly switching nodes. Keep the node unchanged and check the traffic path from the nearest point outward. Retest and record the result after each step. Once access returns, the only variable just changed identifies the likely fault. If you change the node, port, DNS, and routing together, even a recovery will not reveal the real cause, and the entire process may be repeated next time.
- Minute 1: Close other proxy tools and confirm that only one client instance is running.
- Minute 2: Check the system proxy address, the client’s local listening port, and the browser proxy port.
- Minutes 3–4: Switch to Global Proxy for comparison and use the result to determine whether split routing is the issue.
- Minutes 5–6: Synchronize system time and review DNS, lookup, and timeout entries in the log.
- Minutes 7–8: Disable TUN or per-app proxy rules and test through the simplest system-proxy or VPN path.
- Minute 9: Update the subscription and verify the VMess or VLESS port, transport, TLS, SNI, and path.
- Minute 10: Restart the client and test app, save the key logs, then decide whether to switch nodes.
Final check: identify where the traffic stops
No local inbound record: check the system proxy, VPN permissions, and port. Inbound traffic with no outbound traffic: check routing and DNS. Outbound traffic with repeated handshake failures: recheck node parameters, system time, and remote reachability.