📘 Step-by-Step Guide · Every Platform

Get connected to the cross-border network in three minutes

Pick your device and follow the steps. Once you sign in, importing and connecting is a one-tap process on the "Connection Info" page.

🍎 iPhone / iPad
1

Install the client

Search the App Store for "Cisco Secure Client" and install it (available in China).
2

Enable External Control · required

Open Cisco → Settings → "External Control" → set it to "Enabled". Skip this and the one-tap certificate import silently fails! One-time setup.
3

Register & sign in

Register with your email (you'll automatically get 24 hours free), then sign in here.
4

Create the connection first

Open the "Connection Info" page and, as prompted, first create a new connection in Secure Client; when iOS asks to allow the configuration, approve it and enter your device passcode (not your account password).
5

Then import the certificate

Back on "Connection Info", tap "One-tap import" to finish the import (nothing happens? External Control is probably off); keep the connection Certificate on Automatic or pick the one you imported.
6

Connect

Flip the switch in Secure Client. If the first attempt fails, that is normal — tap it once more and it connects password-free; an "Untrusted Server" prompt is expected, just tap Continue.
⚠️ On iPhone, always create the connection first, then import the certificate; the wrong order triggers an import-failed error — a known iOS requirement.
🤖 Android
1

Install the client

Download "Cisco Secure Client" from the Connection Info page / Download Center (Google Play is often unreachable in mainland China — use our download). If Android warns about "unknown sources", allow this source. For permanent password-free use, or if Cisco will not install, switch to OpenConnect on the same page.
2

Enable External Control · required

Open Cisco → menu / Settings → "External Control" → set it to "Enabled". It is off by default, and without it tapping a line on the website does nothing at all — the number-one Android pitfall. One-time setup.
3

Sign up and sign in

Register with your email (24 hours free) and sign in here.
4

Tap a line to connect

Back on the "Connection Info" page, just tap the line you want → Cisco launches with your username and password filled in automatically; approve the first-time connection prompt and you are online (Android always uses Global).
5

Dropping after a while?

On Chinese-brand phones, exempt Cisco from battery optimization / allow background running; on Samsung turn off "Smart network switch" — otherwise it drops once the screen is off.
6

Cannot connect? Check this first

Do you still have another acceleration app running? Quit it completely (not just "disconnect" — close it from the background). Android allows only one such app at a time, and it hijacks name resolution so the connection fails instantly.
🪟 Windows
1

Install the client

From the Connection Info page / Download Center get AnyLink (account & password, fastest to set up) or Cisco Secure Client (certificate, password-free); OpenConnect-GUI is also available.
2

Sign in for the details

Sign in here, open "Connection Info", pick Global / PAC, and copy both the server address and the Secret.
3

Create the connection · four fields

In AnyLink fill in, in order: Host (server address), Secret, Username (email) and Password (connection password). ⚠️ The Secret is required — leave it out and the connection fails; this is the number-one desktop pitfall.
4

Connect

Click connect. AnyLink remembers the password, so later reconnects are one click.
5

Want it password-free?

Use Cisco Secure Client instead: on "Connection Info" expand "Advanced · certificate" and download the .p12 → double-click to import (store location "Current User", certificate store "Personal"; just press Enter at the password prompt) → paste the certificate address into Cisco (it is not the same as the server address) and connect without a password.
💻 macOS
1

Install the client

From the Connection Info page / Download Center get AnyLink (account & password, Apple Silicon only) or Cisco Secure Client (certificate, password-free, works on both Intel and Apple Silicon); an OpenConnect GUI (Apple Silicon only) is also available.
2

Sign in for the details

Sign in, open "Connection Info", pick Global / PAC, and copy both the server address and the Secret.
3

Create the connection · four fields

In AnyLink fill in, in order: Host (server address), Secret, Username (email) and Password (connection password). ⚠️ The Secret is required — leave it out and the connection fails.
4

Intel Mac / want it password-free?

Use Cisco Secure Client: on "Connection Info" expand "Advanced · certificate", download the .p12 → double-click to import it into the login keychain (just press Enter at the password prompt) → paste the certificate address into Cisco. The openconnect CLI also works.
🐧 Linux
1

Install the client

openconnect ships in the official repositories of every mainstream distribution — pick the line for your system:
Debian / Ubuntusudo apt update && sudo apt install -y openconnect
Fedorasudo dnf install -y openconnect
Arch / Manjarosudo pacman -S openconnect
Alpinesudo apk add openconnect
On RHEL / Rocky / AlmaLinux enable EPEL first. Run openconnect --version to confirm.
2

Sign in for your connection details

Sign in and open "Connection Info". Note four things: Username (your registered email), Connection password (not your website login password), Secret, and the server address of the line you want (it looks like somestring.domain:port). The Global / PAC choice is stored on your account — after switching, disconnect and reconnect once for it to take effect.
3

Build the full address and connect · the step people get stuck on

The command line needs the full address including the suffix: append the Secret to the server address to form https://SERVER-ADDRESS/?SECRET. ⚠️ Leave the suffix off and the server refuses the request outright, which simply looks like "cannot connect". Shortcut: on "Connection Info" expand "Advanced · certificate" — the certificate address there already carries the suffix. Replace the two placeholders below with your own values:
Connectsudo openconnect --protocol=anyconnect --user='your@email' "https://SERVER-ADDRESS/?SECRET"
Enter your connection password when prompted. ⚠️ Wrap the whole address in quotes — the ? is a shell wildcard, and without quotes zsh fails with no matches found before the command even runs.
4

Disconnecting and running in the background

In the foreground press Ctrl + C to disconnect. ⚠️ Never use kill -9 — only a clean exit restores your routing and name-resolution settings.
To run it in the background:
Backgroundecho 'CONNECTION-PASSWORD' | sudo openconnect --protocol=anyconnect --user='your@email' --passwd-on-stdin --background --pid-file=/run/oc.pid "https://SERVER-ADDRESS/?SECRET"
Stopsudo kill $(cat /run/oc.pid)
Note this leaves the password in your shell history; use read -s into a variable if that matters to you.
5

Password-free connection (optional)

On "Connection Info" expand "Advanced · certificate" → download the .p12 → run:
Certificatesudo openconnect --protocol=anyconnect --certificate=/absolute/path/downloaded.p12 "https://CERTIFICATE-ADDRESS"
Normally you will not be asked for a passphrase. If you do see Enter PKCS#12 pass phrase:, just press Enter (the passphrase is empty) — both behaviours are normal. The download link is valid for 30 minutes; the certificate itself also expires, after which you download a fresh one from the same page.
6

Cannot connect? Check in this order

① Refused immediately by the server → the /?SECRET suffix is missing or was copied wrong;
② Terminal says no matches found or the address is mangled → you forgot the quotes;
③ Permission error / cannot create the network device → add sudo;
④ Shows connected but nothing loads → some minimal systems lack the companion network-configuration script; installing from your distribution's official repository normally includes it;
⑤ Want a different line → swap in another address from "Connection Info"; everything else stays the same.
📶 OpenWrt Router
1

Check your hardware and firmware first

OpenWrt officially recommends 16MB storage / 128MB RAM or better; 16/64 is the absolute minimum, and 4/32 devices lost support long ago — RAM is the harder limit. SSH into the router and run:
Versioncat /etc/openwrt_release
Package managerwhich apk opkg
24.10 and earlier use opkg, 25.12 and later use apk. The two command sets are not interchangeable.
2

Install the packages

Pick the set that matches the previous step:
opkg (24.10 and earlier)opkg update && opkg install openconnect ca-bundle
apk (25.12 and later)apk update && apk add openconnect ca-bundle
ca-bundle is the system root-certificate store; most firmware already includes it, and without it you get "cannot verify server certificate". ⚠️ Do not use apk upgrade to bulk-upgrade packages — OpenWrt explicitly warns this can brick the device because of incomplete dependency data.
3

Create the interface and fill in the parameters

Run these one by one (the interface is named occ; replace the placeholders with values from "Connection Info"):
uci set network.occ=interface
uci set network.occ.proto='openconnect'
your addressuci set network.occ.uri='https://SERVER-ADDRESS/?SECRET'
your emailuci set network.occ.username='your@email'
your passworduci set network.occ.password='CONNECTION-PASSWORD'
do not skipuci set network.occ.interface='wan'
commituci commit network
⚠️ Two things you must not skip: ① the address must start with https:// and keep the trailing /?SECRET — miss either half and it will not connect; ② the interface 'wan' line is required — it pins a dedicated route to the server itself over your broadband port, without which a single drop leaves you unable to reconnect.
You can also use LuCI (install luci-proto-openconnect, then service rpcd restart), but that form has no field for line ⑥, so you would return to the command line anyway.
4

Firewall / address translation · skip this and your LAN goes nowhere

Add the interface to the existing wan zone (it already enables outbound address translation and MSS clamping, both prerequisites for LAN devices):
uci rename firewall.@zone[0]='lan'
uci rename firewall.@zone[1]='wan'
uci add_list firewall.wan.network='occ'
uci commit firewall && service firewall restart
⚠️ Classic symptom of skipping this: the router itself is online, but every phone and laptop on the LAN is dead. If you insist on a separate zone you must add masq='1', mtu_fix='1' and a lan→zone forwarding rule — all three (mtu_fix is the one that fixes "small pages load, large files and image-heavy sites stall").
5

Apply, autostart and manual control

Nothing to configure for name resolution: once connected, the resolver addresses pushed by the line are written into the system automatically and picked up by the router. Apply the configuration:
Applyservice network restart
Up / downifup occ # use ifdown occ to disconnect
Retry longer after a drop (seconds)uci set network.occ.reconnect_timeout='300' && uci commit network
The interface starts automatically at boot; a firmware upgrade preserves the configuration.
6

Troubleshooting

Four commands cover most cases:
Connection loglogread -e openconnect
Is it runningpgrep -f -a openconnect
Routingip route show
Read back configuci show network; uci show firewall
The three most common problems: ① the log shows the server refusing you → the address is missing the https:// prefix or the trailing /?SECRET; ② "cannot verify server certificate" → install ca-bundle, and make sure you have not entered any server-certificate fingerprint (that disables the system trust chain, and since our certificate is renewed automatically, a pinned fingerprint breaks on renewal day); ③ unstable line or large transfers stalling → force plain TCP: uci set network.occ.no_dtls='1'; uci commit network; ifup occ.
⚠️ The router setup builds on OpenWrt community packages: we do not ship our own router firmware and have not verified this on individual models, so treat it as a self-service route for advanced users. Routers also support Global mode only — "PAC (direct for domestic sites)" does not work on OpenWrt and fails silently (the firmware's configuration script ignores the exclusion entries pushed by the server and falls back to Global). Use a computer or phone if you need split routing. Because a router runs unattended, use the account-and-password method, not the certificate (certificates expire and would silently stop working).

Sign in for one-tap import

After you register, head to "Connection Info" in your account to import your certificate and connect in a single tap. Need a screenshot walkthrough? Our support team is here to help.

Sign In / Register