v2rayN FAQ and Troubleshooting

Locate the configuration layer from the symptoms. Coverage includes subscription imports, node connections, system proxy, and TUN permissions, with checks you can perform in sequence for each issue.

4 issue categories 16 troubleshooting guides Windows · macOS · Android · Linux

Core concepts

Start by separating the client, subscription, node, and traffic-handling method. Mixing up these concepts can send later troubleshooting to the wrong layer.

How should you choose between v2rayN, v2rayNG, and v2flyNG?

Use v2rayN on Windows, macOS, and Linux desktops. On Android, v2rayNG with the Xray core is the preferred choice; use v2flyNG when you need the V2Fly core. Their interfaces and configuration paths differ, but subscription URLs can usually be reused. Before switching clients, record the current routing mode, DNS settings, and subscription groups so runtime parameters are not lost when importing nodes.

What are subscriptions, nodes, and configuration files?

A subscription is an updatable set of server configuration entries, a node is one specific connection record, and a configuration file contains complete runtime settings such as inbounds, outbounds, routing, and DNS. In normal use, import the subscription first, then select an active node from the generated list. Manual configuration is useful for testing individual parameters and should not be mixed with auto-updating entries in a subscription group.

What is the difference between system proxy mode and TUN mode?

System proxy mode changes the operating system’s proxy settings and mainly handles browsers and apps that follow them. TUN mode uses a virtual network interface to process a broader range of traffic. Start with system proxy mode to verify the node and subscription, then enable TUN only if application compatibility requires it. Troubleshooting both modes at once adds variables, so avoid switching repeatedly while the connection is failing.

Why do REALITY nodes require such consistent parameters?

The protocol, security layer, transport, server name, public key, shortId, and flow in a REALITY configuration must match the server. Any field rewritten, truncated, or omitted by a subscription converter can cause the handshake to fail. Compare these fields with the original configuration first, then check the local system clock. Do not replace only the address and port while continuing to use outdated parameters.

Installation and setup

Package architecture, subscription responses, and system permissions are the three most common variables during initial setup.

What should I do if no nodes are imported after pasting a subscription URL?

In the client’s subscription group, first make sure the URL has no leading or trailing spaces and that the group is enabled. Run an update and check the logs for the HTTP status, parsing errors, or certificate messages. If the URL returns a login page, error page, or regular webpage in a browser, the client cannot recognize it as subscription data. Once the URL is confirmed accessible, check whether its format is supported by the current client.

What should I do when a subscription update fails but the old nodes remain?

Old nodes only show that the previous update is still stored locally; they do not mean the subscription is currently working. Record the response status and failure time from the logs, then check the subscription’s validity period, system time, system proxy, and DNS. If only one group fails, edit that group and save the URL again. If all groups fail at once, check the network environment and the client’s proxy path first.

How do I choose between arm64 and universal Android packages?

Most mainstream Android phones released after 2015 use arm64, so the arm64 package is usually the best choice and has a smaller footprint. Use the universal package if the device architecture is unknown, the device is older, or arm64 installation fails. Both packages provide essentially the same features; the difference is the range of processor architectures they include, not the subscription protocol.

What should I do if TUN reports insufficient permissions or fails to create a virtual interface?

Fully exit the client, grant the network extension, administrator, or virtual-interface permissions required by the platform, and start it again. If other virtual networking tools are installed, quit them first to avoid conflicts over interfaces, routing tables, or DNS. If TUN still fails, temporarily disable it and use system proxy mode to verify the node, then continue based on the interface name and permission messages in the logs.

Usage tips

Build a verifiable minimal connection first, then gradually add rule-based routing, DNS changes, and broader traffic handling.

How should I choose a default node after importing a subscription?

Update the subscription, confirm the node’s group, and run a real connection test. A latency test reflects only the test target and network conditions at that moment, so it does not prove full usability by itself. Select a node, set it as the active server, enable the system proxy, and test it with sites you regularly use. If you have many groups, use clear purpose-based names to avoid selecting an expired or test node after an update.

When should I use global, rule, or direct mode?

Global mode sends requests within the handled scope through the current proxy and is useful for quickly validating a node. Rule mode chooses proxy or direct access based on domains, IPs, or rule sets and is best for everyday use. Direct mode temporarily bypasses the proxy. When troubleshooting, start with global mode to reduce rule-related variables, then switch back to rule mode and review match logs after confirming the node works.

Why must I set a node as the active server again after editing it?

Some clients save edits to the node list while the running core continues using the configuration generated at startup. After changing the address, port, protocol parameters, or flow, select the node again and, if necessary, stop and restart the connection so the runtime configuration is regenerated. The startup time and outbound name in the logs can confirm whether the new configuration was loaded.

Where should I start when adjusting DNS settings?

Treat DNS as a separate variable only after the node connects but domain access behaves abnormally. Keep the client’s default configuration first and test domain access separately from access to a known IP. If only domain access fails, check DNS query logs, system DNS, and TUN DNS takeover status. Do not change multiple resolvers, routing rules, and FakeDNS settings at the same time, or it will be difficult to identify the cause.

Troubleshooting

Connection issues usually fall into five layers: network reachability, protocol handshake, traffic handling, DNS, and local ports.

What order should I follow when a node test times out?

First verify the system date, time, and time zone, then update the subscription and confirm the node has not expired. Next check whether the server address and port accept connections, whether the local firewall is blocking traffic, and whether all protocol parameters are present. Finally, disable extra routing rules and retry with a single node and system proxy. If the log stops during connection, the issue is usually network or port related; if it stops during the handshake, recheck the security-layer parameters.

What should I do when the client says it is connected but webpages will not open?

First confirm that the active node was actually loaded by the running core. Then check that the system proxy is enabled and the browser is configured to use system settings. Test domains and IP addresses separately to determine whether DNS is involved. If only some sites fail, review routing matches. If every request fails, temporarily switch to global mode, disable TUN, and retry. Change only one setting at a time so the logs reveal which layer is failing.

Why does an app connect directly even though the system proxy is enabled?

Some apps use their own proxy settings or ignore the operating system proxy, so they may connect directly even when the system proxy is enabled. Check for a proxy option inside the app and make sure it is not explicitly set to bypass the proxy. Also verify that the system proxy address and port match the client’s current listening port. To handle traffic that ignores the system proxy, evaluate TUN mode only after ordinary connections are confirmed to work.

How should I handle a port-in-use error in the logs?

A port-in-use error means another process is already using the local HTTP, SOCKS, or API port the client wants to listen on. Quit duplicate client instances and other proxy tools, then reconnect. If the conflict remains, choose an unused local port in the settings and update the port in the browser or system proxy as well. Restart the core after making the change and confirm that the logs show the new listening address.

Troubleshooting order

Confirm the inputs first, verify the connection next, and handle traffic interception last. Keeping the order fixed makes logs comparable.

  1. 01

    Check the local environment

    Confirm the system time, time zone, network connection, and the client’s runtime permissions. Fully quit duplicate processes and temporarily close other network tools that may alter the routing table or occupy local ports.

  2. 02

    Refresh the subscription input

    Check the subscription URL, group status, and update time. After updating, confirm that node fields are complete, especially the protocol, security layer, transport, server name, public key, and flow.

  3. 03

    Establish a minimal connection

    Select a single node and test it with system proxy and global mode. Do not enable complex routing, additional DNS options, or TUN yet; keep the connection path easy to read.

  4. 04

    Use the logs to identify the layer

    For connection-stage failures, check the address, port, and network. For handshake failures, check the protocol parameters. If the connection succeeds but domains fail, check DNS. If only a specific app behaves abnormally, check how proxy traffic is being handled.

  5. 05

    Restore features one at a time

    Once the basic connection is stable, restore rule mode, custom DNS, and TUN in sequence. Run the same access test after each change and keep the logs for the corresponding time period.