Getting a subscription working on Windows comes down to three things being true at once: the client recognises your subscription link, the system lets it create a virtual network adapter, and the route you picked actually works on the site you want. If any one of them is off, the symptom is always the same — “connected, but nothing loads”. This Windows VPN setup tutorial splits the process into five steps, each with a checkpoint you can verify yourself. Finish one before moving to the next, and when you get stuck you'll know exactly which link in the chain to look at.
Before you start: confirm three things
The setup itself isn't complicated — most trouble comes from the preparation stage. Confirm the three items below before you begin and you'll save most of the troubleshooting later.
System version. Use Windows 10 or Windows 11 while it's still supported, and finish installing system updates. The client has to install a virtual adapter driver and a background service; driver signing policy on older builds blocks this outright, and the symptom is an installer that “finishes” while the main window never opens.
Account and subscription. VPNAF sign-up only needs a username and password — no email address required. Once you're in the dashboard you'll see the subscription link, data usage and expiry date; the subscription link is the only credential the import step needs, so copy it in full to a text editor first.
Current network state. Both installation and the first connection need working internet. If another network tool is running on the machine, quit it first — when two tools try to take over the virtual adapter at once, neither is guaranteed to connect.
- ✅ System updated to the current build, and your account has administrator rights
- ✅ Signed in to the dashboard, subscription link copied in full to a local text file
- ✅ Other network tools and older client versions fully closed
- ✅ Current exit region noted down so you can confirm the switch later
Install the client: get the package, allow it, check the checkpoint
Get the client from the download entry in your dashboard — there is exactly one Windows installer. Avoid installers re-hosted on third-party sites: the client writes a system service and takes over the network stack, so an unknown package is the riskiest option, and when something goes wrong you can't tell whether it's the route or the installer.
Two system prompts during installation
The first is the SmartScreen block. Newly released or rarely downloaded installers trigger “Windows protected your PC” — click “More info”, then “Run anyway”. If the installer came from your dashboard, this is expected.
The second is the firewall prompt. The first time it connects, Windows asks whether to allow the app to communicate — tick “Private networks” and allow. If you hit Cancel by mistake, open Windows Security → Firewall & network protection → Allow an app through firewall, re-tick the client and reconnect.
The checkpoint for this step
The client icon appears in the tray; the main window opens and shows a disconnected state; the settings include entries for subscription, routes and start with Windows. If all three are there, the installation is clean and you can move on.
Import the subscription: links, protocols and what to do when parsing fails
The subscription link is a URL with credentials baked in. The server packages the routes available to that account into a node list, and the client pulls it and parses it into a selectable route list. The link contains your account identifier and works like a password — don't paste it into public groups or commit it to a code repository.
Three ways to import
- Paste the subscription link. Open the client's subscription or profile page, add a new entry, paste the link into the field, save and hit update. This is the usual method, and it's also how later route changes get synced.
- Import from clipboard. Copy the link first, then choose “Import from clipboard” in the client — no manual pasting, and no stray spaces picked up along the way.
- Add a single profile manually. Only worth it when you've been given single-node parameters; common protocols include WireGuard, IKEv2, Shadowsocks, VMess, VLESS, Trojan, Hysteria2 and TUIC. Manual profiles don't follow subscription updates, so you have to edit them yourself when nodes change — not recommended for everyday use.
Checkpoint after importing
- ✅ The route list is populated and grouped by region, no longer empty
- ✅ The update time shows just now, meaning the pull succeeded rather than reading a stale cache
- ✅ Data usage in the dashboard matches what the client shows
- ❌ If it says the link is invalid: first check whether a line break truncated it or trailing parameters were lost; if it still fails, reset the subscription in the dashboard and import again
A leaked subscription link hands over your account's data allowance. If you suspect a leak, reset the subscription in the dashboard — the old link stops working immediately — then update once in the client. No reinstall needed.
Choosing routes: direct, relay and dedicated lines compared
The region in the route list decides where you exit; the route type decides how your data gets there. A single region usually carries several types, so understanding the difference is much faster than trying them one by one.
| Route type | How the data travels | Best for | Watch out for |
|---|---|---|---|
| Direct | Connects straight from your local network to the overseas exit | Quick lookups and tasks where latency doesn't matter | Cross-border link quality varies with ISP and time of day |
| Relay | Enters a relay entry point first, which forwards to the overseas exit | Unstable handshakes on direct connections, or when you need a fixed entry point | The relay leg congests too — switch entry points at peak hours |
| IEPL dedicated line | Leaves over a carrier dedicated line, without going through the public international gateway | Always-on sessions, meetings, live streams, gaming | Costly, so it's usually only available in popular regions |
Fix the order you choose in, so you're not clicking randomly through the list every time:
- Start with the region where the target site is located — get the region wrong and nothing else you tune will help.
- Within a region, prefer dedicated lines, then relay, then direct.
- Re-test at peak hours and keep the two or three most stable routes as backups — never just one.
Split-tunnel rules and DNS settings
Split-tunnel rules decide which traffic goes through the route and which goes direct. Global mode is the least fuss, but traffic to mainland China sites also takes the long way round and slows down; rule-based routing judges by domain and IP lists and is the recommended everyday setting; direct mode is only for when you want to switch the route off temporarily.
DNS is the other switch people overlook. Let DNS queries follow the route, otherwise resolution can still come from your local ISP — the classic symptom is “connected, but pages won't load”, or a cached local page appearing instead. Turn on the remote DNS option in the client and hand resolution to the route exit.
Verify it works: four must-check items
“Connected” is only a status light; it doesn't mean traffic is actually leaving through the route. Confirm the four items below one by one before you start using it normally.
- ✅ The exit location matches the route you picked: check on any IP location lookup page and refresh twice to see whether it's stable
- ✅ DNS resolution goes through the route: on a DNS leak test page, confirm the resolver isn't your local ISP
- ✅ The browser isn't exposing your local address: the public address shown by a WebRTC leak test should match the route exit
- ✅ The target site opens and you can sign in — not a cached page or a regional notice page
- ✅ Disconnect and reconnect once, and the results above still hold — this is the step most people skip
Stopping as soon as you see “Connected” is the most common misjudgement. The virtual adapter may only be carrying part of your traffic: split-tunnel rules may have put the target domain on the direct side, or DNS may still be local. The status is green while your traffic is still using the local network.
Auto-start and everyday settings
Once verification passes, set these switches once and you'll barely need to open the client again:
- Start with Windows + auto-connect. Tick both in the client's general settings and you won't have to click connect after boot.
- Kill switch. Blocks traffic if the tunnel drops unexpectedly, so there's no unprotected window; the trade-off is that you have to wait for the reconnect before going back online.
- Subscription auto-update. The client has to re-pull the list after route changes, so enable auto-update or update manually once a week.
- Multiple devices. The account isn't limited by device count — a desktop and a laptop can be online at the same time; just import the subscription once on each device.
- How to quit. Disconnect before closing the client, so a leftover virtual adapter state doesn't break the next connection after boot.
On data: monthly plans reset on the same day each month from activation, and mid-cycle upgrades are prorated by the remaining days; data packs last until they're used up and never expire. Monthly plans start at ¥9.9 and include 60GB, usually enough for light use; if you watch live streams for hours or move files often, look at a higher tier or add a data pack.
Common sticking points
The table below covers more than 90% of the problems you'll hit during setup. Work through it as symptom → cause → what to try first; it's faster than reinstalling over and over.
| Symptom | Likely cause | What to try, in order |
|---|---|---|
| Import says the link is invalid | The link was truncated by a line break, or it has been reset in the dashboard | Copy it again in full; if it still fails, reset the subscription in the dashboard and re-import |
| Shows connected but pages won't load | DNS is still local, or split-tunnel rules put the target domain on the direct side | Turn on remote DNS first, then check the split-tunnel rules and move the target domain to the routed side |
| Pages load but video keeps buffering | The route is congested, or the exit region doesn't match the site | Switch to another route in the same region; re-test at peak hours and keep the two best performers |
| You have to connect manually after every boot | Start with Windows and auto-connect aren't ticked | Tick them in general settings, save, then reboot once to confirm |
| Blocked by the system after installation | SmartScreen wasn't allowed through, or the firewall isn't permitting the app | Allow the app through the firewall; when reinstalling, keep the existing configuration — no need to clear the subscription |
Summary: the checkpoint matters more than “Connected”
The checkpoints across the five steps are where this process earns its keep. After installing, look at the tray and the main window; after importing, look at the route list and update time; when choosing a route, check that region and type match your use case; when verifying, check that exit, DNS and WebRTC all agree; finally set up auto-start and the kill switch. The whole walkthrough takes ten to fifteen minutes, and after that every boot comes up ready.
If one step keeps failing, work out whether the problem is the client, the subscription or the route: if the same subscription imports fine on another device, the problem is the client; if neither device works, go back to the dashboard and check the subscription is still valid; if the subscription is fine and only one route is slow, just switch routes. Split it up this way and you won't need to reinstall the system or keep fiddling.