Zedmos

5.5 VPN

Three VPN technologies, all first-class. Which one to pick:

Use it forBecause
WireGuardNew site-to-site links and remote workersSimplest to configure, fastest, smallest attack surface. Keys, not certificates.
IPsecConnecting to equipment you do not controlIt is the interoperability standard — a Cisco, Fortinet or cloud VPN gateway will speak it.
OpenVPNRemote workers on awkward networks, and existing deploymentsRuns over TCP/443 when everything else is blocked; mature client on every platform.

Whatever you choose, remember the two things every VPN needs beyond its own configuration: a firewall rule admitting the tunnel on the WAN, and rules on the tunnel interface deciding what the far side may reach.

WireGuard

Instances — /m/wireguard/server#instances

VPN: WireGuard instances
VPN: WireGuard instances

An instance is a tunnel endpoint on this appliance: its own key pair, its listen port, and the addresses it uses inside the tunnel.

VPN: adding a WireGuard instance
VPN: adding a WireGuard instance

The public key generated here is what you hand to the other side. Keep the private key where it is — it never needs to leave the appliance.

Peers — /m/wireguard/client#peers

VPN: WireGuard peers
VPN: WireGuard peers

The other ends. Each peer carries its public key, the allowed IPs — which is both the routing statement and the access control, so it must list exactly the networks that peer may use — and, for a peer you connect to, its endpoint address and port.

VPN: adding a WireGuard peer
VPN: adding a WireGuard peer

Allowed IPs is not a filter you can be generous with. A peer may send traffic from any address listed there, and traffic for those addresses is routed to it. Listing 0.0.0.0/0 on a site-to-site link hands that peer your whole routing table.

Peer generator — /wg-peergen#configbuilder

VPN: WireGuard peer generator
VPN: WireGuard peer generator

Builds a ready-made client configuration — keys, addresses, endpoint, allowed IPs — and shows it as text and as a QR code for the phone app. The fastest path from nothing to a working remote worker.

Status — /wg-status

VPN: WireGuard status
VPN: WireGuard status

Every instance and peer with the last handshake time and the bytes moved. WireGuard is quiet by design: no handshake means the tunnel is not up, and that is the number to look at first.

Log File — /log/core/wireguard

VPN: WireGuard log
VPN: WireGuard log

IPsec

Connections — /m/ipsec/swanctl

VPN: IPsec connections
VPN: IPsec connections

The modern IPsec configuration: a connection holds the remote address, the proposals (encryption, integrity, Diffie-Hellman group), the authentication (pre-shared key or certificate) and one or more children — the traffic selectors that say which networks the tunnel carries.

VPN: adding an IPsec connection
VPN: adding an IPsec connection

Both ends must agree on the proposals and the traffic selectors. When a tunnel refuses to come up, that disagreement is the cause far more often than anything else; the log names the mismatch.

Pre-Shared Keys — /m/ipsec/ipsec?a=preSharedKeys/preSharedKey

VPN: IPsec pre-shared keys
VPN: IPsec pre-shared keys

Shared secrets by identity. Long and random: a pre-shared key is the whole authentication.

Key Pairs — /m/ipsec/ipsec?a=keyPairs/keyPair

VPN: IPsec key pairs
VPN: IPsec key pairs

Key pairs for certificate-based authentication, for peers that require it.

Mobile & Advanced Settings — /m/ipsec/ipsec

VPN: IPsec mobile and advanced settings
VPN: IPsec mobile and advanced settings

Settings for road-warrior clients — the pool they are given addresses from, the DNS they are handed — and the daemon's own behaviour.

Status Overview — /ipsec-status#overview

VPN: IPsec status
VPN: IPsec status

Which connections are established, with whom, and for how long.

Security Association Database — /ipsec-status#sad

VPN: IPsec SAD
VPN: IPsec SAD

The live security associations with their counters — proof that traffic is actually passing, not merely that the tunnel negotiated.

Security Policy Database — /m/ipsec/swanctl?a=SPDs/SPD

VPN: IPsec SPD
VPN: IPsec SPD

The policies that decide which traffic must be protected.

Lease Status — /ipsec-status#leases

VPN: IPsec leases
VPN: IPsec leases

Addresses currently handed to mobile clients, and who holds them.

Virtual Tunnel Interfaces — /m/ipsec/swanctl?a=VTIs/VTI

VPN: IPsec VTIs
VPN: IPsec VTIs

Route-based IPsec: the tunnel becomes an interface you can route over and write rules against, instead of being selected by traffic selectors. The cleaner choice when a link carries many networks or takes part in failover.

Log File — /log/core/ipsec

VPN: IPsec log
VPN: IPsec log

The negotiation, step by step. When a tunnel will not establish, read it from the bottom: the last thing it says before giving up is the reason.

OpenVPN

Instances — /m/openvpn/openvpn?a=Instances/Instance

VPN: OpenVPN instances
VPN: OpenVPN instances

A server or client instance: its protocol and port, the certificates it uses, the tunnel network, and what it pushes to clients (routes, DNS).

VPN: adding an OpenVPN instance
VPN: adding an OpenVPN instance

A server instance needs a certificate authority and a server certificate from System → Trust before it can start.

Client Specific Overrides — ?a=Overwrites/Overwrite

VPN: OpenVPN client specific overrides
VPN: OpenVPN client specific overrides

Per-client exceptions matched on the certificate's common name: a fixed address for one user, an extra route for another.

Client Export — /openvpn-export

VPN: OpenVPN client export
VPN: OpenVPN client export

Downloads a ready configuration for a chosen user — the profile the client application imports. This is what you send the remote worker; it carries their certificate, so send it over a channel you trust.

Connection Status — /openvpn-status

VPN: OpenVPN connection status
VPN: OpenVPN connection status

Who is connected, from where, since when, and how much they have transferred.

Log File — /log/core/openvpn

VPN: OpenVPN log
VPN: OpenVPN log