Understand the difference between cores, clients, and subscriptions before deciding what to update or change. Similar names don’t mean identical features, and a successful import doesn’t guarantee that every connection requirement is met.
Project V and the core ecosystem
Project V is a useful starting point for understanding the V2Ray ecosystem. Its proxy core handles protocols, transports, routing, and connections. The V2Fly community continues maintaining V2Ray-related projects, while Xray has developed its own core and feature set from related technical foundations. People often use V2Ray as a general name for the ecosystem, but feature availability depends on which core the client runs and whether that core implements the option.
VMess, VLESS, and Trojan are protocols; WebSocket and gRPC are transport methods; TLS and REALITY relate to connection security and handshakes. These terms refer to different layers, so any one of them alone can’t tell you whether a configuration is complete. Connection settings must match the server. When editing them manually, identify whether you’re changing the protocol, transport, or security options; don’t combine fields from unrelated guides.
Graphical clients and proxy cores
v2rayN, v2rayNG, and v2flyNG are open-source graphical clients. Their interfaces let you manage servers, subscription URLs, and common settings, then convert that information into configuration the core can read. They aren’t three skins for the same program: v2rayN is for desktop environments, v2rayNG primarily provides an Android configuration interface for the Xray core, and v2flyNG is an Android alternative for the V2Fly core ecosystem.
This layered architecture also determines the troubleshooting order. If the window won’t open, check installation and runtime requirements. If the interface works but the core won’t start, check the logs, listening ports, and generated configuration. If the core is running but a server won’t connect, check the remote settings and network conditions. Treating a successful launch as proof of a successful connection can hide the real problem. When moving between cores, also check that the target client supports the protocol and advanced options you use.
Open-source licenses and configuration privacy
Open source means the software’s code is made available under its license and can be used, modified, and distributed under that license’s terms. Projects in the ecosystem may use different licenses; for example, the V2Ray core maintained by V2Fly and the Xray core use MPL 2.0. Client projects have their own license terms, so don’t assume a core’s license applies to every GUI, dependency, or bundled resource. Read the relevant license files before modifying or redistributing anything.
Open-source licensing and subscription service quality are separate issues. Protect subscription URLs, server credentials, and local configuration. Hide full subscription links in screenshots, and don’t share exported configuration publicly. Before using a subscription conversion service, consider that it may be able to read your entire configuration. First check whether your client can import the original format; use a converter only if needed, rather than treating format conversion as the default fix for every import failure.
Updates and routine maintenance
Client, core, subscription, and routing resource updates address different things. Client updates usually affect the interface and configuration generation; core updates affect protocol implementation and runtime behavior; subscription updates refresh servers from their source; and rule or domain resource updates can change routing results. When something goes wrong, note recent changes and avoid updating everything at once, or it’ll be hard to tell what changed the behavior.
Good routine maintenance starts with saving your configuration. Before upgrading, note the system proxy, listening ports, and routing choices. If your backup contains subscription URLs or credentials, store it securely. After upgrading, first check that the core starts with your existing settings, then make a real request, and finally verify custom routing. If only one app has problems, compare its proxy path with your browser’s. If all requests fail, check the local service and selected server.
System proxy, routing, and TUN: what each does
The system proxy determines which apps hand requests to the client. Routing rules determine which outbound path requests take after reaching the core. TUN captures traffic through a virtual network interface. These concepts often appear in the same guide, but they aren’t interchangeable. If an app connects directly with the system proxy enabled, it may not be reading system settings. If access fails with TUN enabled, DNS resolution, adapter routes, or other networking tools may be involved.
Start by testing a basic connection with the system proxy, then adjust routing as needed, and only then consider enabling TUN. After each change, use the same app to visit the same destination and check logs for that time. This makes comparisons more meaningful. Logs may contain server details, so remove sensitive information before asking for help while preserving the error type, sequence of events, and relevant settings.