Cross-platform clients

Site VPN Setup for iOS, Android, Windows, macOS, and Linux

Plan consistent Site VPN onboarding across mobile, desktop, and Linux systems with unique keys, narrow routes, DNS tests, and revocation.

Keep the network design shared and the onboarding steps platform-specific

Every client profile should answer the same questions: which device owns this key, which private address is assigned, which gateway is used, which destinations travel through the tunnel, which resolver answers private names, and when the access should be reviewed. The operating-system interface may differ, but the underlying identity and route inventory should remain consistent.

Create one peer per device. A unique key lets an operator revoke a lost phone without interrupting a laptop or automated server. Use descriptive profile names that identify the environment and purpose. Avoid a generic “VPN” label when a user may also have employer, home, travel, and support tunnels installed.

iOS and iPadOS

Test Wi-Fi-to-cellular roaming, sleep, on-demand behavior, private DNS, and secure profile delivery.

Read mobile details →

Android

Account for vendor battery controls, always-on options, background behavior, and managed profile removal.

Read Android details →

Windows and macOS

Inspect route tables, interface priority, DNS resolvers, other VPN clients, sleep/wake, and shared-device policy.

Read desktop details →

iOS and Android: design for movement and interruption

Phones change networks, suspend applications, conserve battery, and disappear from management unexpectedly. Test the tunnel after moving between Wi-Fi and cellular, locking the screen, entering low-power mode, and returning from an extended sleep. The private site should either reconnect cleanly or fail clearly; it should not leave a stale route that makes the browser hang indefinitely.

QR codes and exported configuration files contain private key material. Treat them as temporary secrets. Do not leave screenshots in photo libraries or place profiles in shared tickets. For a managed fleet, distribute and remove configurations through the device management system. For an unmanaged device, document how the user confirms the publisher of the client application and how the operator revokes the peer if the device is lost.

Windows and macOS: account for competing network software

Desktop systems often have multiple adapters, virtual machines, security agents, local DNS proxies, and other VPN clients. A route can be installed on the wrong interface, and a resolver can answer private names differently from the mobile profile. Test Ethernet and Wi-Fi, docking and undocking, sleep and wake, and simultaneous connection to another approved VPN. Record known conflicts rather than relying on users to guess which application to disconnect.

Decide whether access follows the person or the device. A user-level tunnel supports named accountability, while a device-level tunnel can make a private service available before sign-in or to system processes. In both cases, the web application should retain named accounts for consequential actions. A connected desktop is not proof that the person at the keyboard is authorized to administer the site.

Linux may be a workstation, server, router, or automation client

Choose one component to own the WireGuard interface: wg-quick, NetworkManager, systemd-networkd, a container runtime, or an orchestration system. Two managers installing routes and DNS settings produce intermittent failures that are difficult to reproduce. Document the configuration location, service name, startup behavior, and diagnostic commands.

For unattended Linux peers, restrict the route and firewall policy to the exact service the automation needs. A CI runner publishing a static site may need HTTPS to one private host, not access to every internal subnet. Monitor an application transaction over the tunnel in addition to the latest handshake. A peer can exchange keepalive packets while the web service or DNS remains unavailable.

Use the same private name and expected answer everywhere

Test one canonical hostname on every supported platform. Record the expected private address while connected and the expected result while disconnected. Split DNS can direct only a private domain to the VPN resolver, avoiding the need to send unrelated queries through the tunnel. The exact resolver integration differs by operating system, so a profile value alone is not proof that the desired server answered.

TestExpected while connectedExpected while disconnected
Gateway handshakeRecent and transferring packetsNo active private path
Private hostnameResolves to the approved private addressFails or returns the documented public destination
HTTPS identityValid certificate for the private hostnameNo private site or login surface
General browsingUses the normal route unless full tunnel is intendedUnaffected

Use a domain you control and keep certificate names aligned with DNS. Do not train users to open private sites by raw IP address or bypass certificate warnings. Those workarounds hide the very failures the access system should detect.

Support and offboarding complete the onboarding process

Give users a short runbook: confirm internet access, activate the correctly named tunnel, open the private hostname, and verify the expected site identity. Support staff should be able to check the endpoint, recent handshake, peer address, route, DNS answer, and application log without asking the user to reinstall immediately. Reinstallation can erase useful evidence and create duplicate keys.

Offboarding removes the peer from the gateway, removes the profile from managed devices, disables the application account, and updates the inventory. Test revocation with a pilot peer. Review inactive devices on a schedule and investigate keys whose owners or platforms are unknown. The full cross-platform deployment guide expands each operating-system case.

A connected switch is not the acceptance test

Success means the intended site resolves, presents the right certificate, accepts authorized identity, rejects unauthorized access, survives network changes, and stops working after revocation. Use that same acceptance test across every platform.