Cảnh báo mạngNhà mạng Trung Quốc bóp băng thông giờ cao điểm

Happ, v2rayN or NekoBox: Choosing a Client and Fixing Connection Errors

A VLESS Reality configuration is identical across platforms, but the client applications are not. Every operating system has a few options, and picking the wrong one produces confusing errors that users usually blame on the service.

This article does not repeat the installation steps — those are in the setup guide. It covers two things: choosing the right client for your device, and reading failure symptoms to locate the actual cause.

Choosing a client by platform

iPhone and iPad

Happ Proxy Utility is the default choice. Compact interface, subscription link import, and crucially still present on the international App Store. Shadowrocket and Streisand are also good but paid, and periodically pulled from some regions.

Android

Happ has an Android build and is the simplest option if you already know the iOS version. v2rayNG and NekoBox are more capable, exposing every parameter, which helps when you need custom routing.

On Chinese handsets such as Xiaomi, Huawei or Oppo, open battery management and remove restrictions for the VPN app. These ROMs aggressively kill background applications, which drops the connection a few minutes after the screen locks.

Windows

v2rayN is the de facto standard. It runs on the Xray core, supports VLESS Reality fully, and offers a TUN mode that routes the whole system.

Note that Windows Defender and some antivirus products flag v2rayN. The reason is that it creates a virtual network adapter and changes the system proxy, which superficially resembles malware behaviour. Download from the official GitHub repository and add an exclusion.

macOS

V2RayXS or the macOS build of Happ for basic use. FlClash and Clash Verge when you need complex routing rules, for example sending work traffic through the tunnel and everything else direct.

Reading failure symptoms

This is the most useful part. Each failure mode has a fairly distinctive cause, and telling them apart saves hours of trial and error.

SymptomUsual causeFix
Import fails, server list stays emptyLink truncated when copied, or expiredPaste the full link again, check the final characters
Reports connected but no page loadsRouting mode wrong, or DNS still using a domestic resolverSwitch to TUN or Global mode, set DNS to 1.1.1.1
Connects for a few minutes, then drops repeatedlyConcurrent IP limit exceeded, or the OS killed the background appDisconnect other devices, remove battery restrictions
Slow in the evening, normal next morningInternational gateway congestion at peak hourNothing to fix client-side; this is an infrastructure characteristic
No handshake at all, on any networkServer IP blocked, or wrong port in the configContact your provider; the server needs changing
Works on Wi-Fi but not on mobile dataMTU differs between the two networksLower MTU in the client settings, try 1400

The three most common failures

Failure 1 — "Connected" but nothing loads

The most frequent problem, and almost always routing rather than the server. The client built the tunnel, but your browser traffic is not entering it.

  1. Switch the client to Global or TUN mode instead of Rule mode. Rule mode only routes domains on a list, and the default list is rarely complete.
  2. Set the DNS inside the client to 1.1.1.1 or 8.8.8.8. If DNS still resolves through a domestic Chinese server, you keep receiving poisoned addresses.
  3. On Windows, verify the client actually set the system proxy: Settings, Network and Internet, Proxy.

Failure 2 — Dropping every few minutes

If the connection is stable and then cuts out at regular intervals, the first suspect is the concurrent IP limit. Providers cap devices, and Chinese mobile networks rotate public IP addresses frequently, so one device gets counted as several.

Disconnect every other device, keep one, and watch for 30 minutes. If it becomes stable, you have your answer.

The second cause is the operating system suspending the app. On Android, set the app to unrestricted in battery settings. On iOS, enable Background App Refresh.

Failure 3 — Works at home, fails on office or campus Wi-Fi

Corporate and dormitory networks often add their own filtering, independent of the national firewall. Some block every port except 80 and 443; others filter by SNI.

If your configuration uses a non-standard port, ask your provider whether a server is available on port 443. Reality on 443 looks exactly like HTTPS and passes most internal filters.

Verifying the connection really works

Do not rely on the VPN icon in the status bar. It only tells you a tunnel exists, not that traffic is going through it.

  1. Open ipinfo.io and check the address and location shown. A Chinese location means traffic is not using the tunnel.
  2. Open a site that is definitely blocked, such as google.com. If it loads, you are through.
  3. Check for DNS leaks at dnsleaktest.com. Chinese resolvers in the result mean the DNS settings in your client need fixing.

Common questions

More answers on the FAQ page.

Frequently asked questions

Does the subscription link need periodic updating?

No. The link stays the same for the life of your subscription, including across renewals. The client reloads the latest configuration from that same link. You only re-enter it after reinstalling the app or changing device.

Should I use Global, Rule or TUN mode?

TUN routes all system traffic and is the most reliable; use it where supported. Global routes everything through the proxy but only applies to applications that honour the system proxy. Rule routes only listed domains, which is faster but misses things.

Can I use the same link on several devices?

Yes, as long as you stay within the simultaneous device limit of your plan. The link belongs to the account, not to a specific machine.

Windows Defender flags v2rayN. Is it safe?

This is a well-known false positive. v2rayN creates a virtual network adapter and modifies the system proxy, which superficially resembles malware. Download it from the project's official GitHub repository and add a Defender exclusion.

More articles