Everything that joins the Wi-Fi korthveil goes out through NordVPN. When NordVPN stops answering, it switches to IPVanish. When both are down, it is blocked (the kill switch): nothing leaves through your normal internet line. One wizard does it, and it can also send chosen devices, people connecting in over WireGuard, or only certain sites through the VPN.
What you need:
WIFI and DHCP.The screenshots come from a test firewall whose LAN zone is lan. On the GMKtec test firewall the Wi-Fi zone is WIFI.
Make a new configuration for this firewall at each provider. Never reuse one from another router or your phone: a WireGuard key used on two devices makes both drop their connection.
| Provider | Where |
|---|---|
| NordVPN | Nord Account › NordVPN › Manual setup: follow the WireGuard (NordLynx) instructions for one server. The file has your private key, the server's public key and endpoint (port 51820), and Address = 10.5.0.2/32. |
| IPVanish | Your IPVanish account: the WireGuard configuration generator. Choose a server near you and download the .conf file. |
| Mullvad, Proton VPN, Surfshark, others | The provider's WireGuard configuration generator. |
Each file looks like this; the keys are yours alone:
[Interface]
PrivateKey = (your key)
Address = 10.5.0.2/32
DNS = 103.86.96.100
[Peer]
PublicKey = (the server's key)
AllowedIPs = 0.0.0.0/0
Endpoint = us1234.nordvpn.com:51820
Keep the files safe, like passwords.
Go to Network › Interfaces, zones & routes and click the pencil on the Wi-Fi interface (wlp3s0):
| Field | Set to |
|---|---|
| Network name (SSID) | korthveil |
| Security | WPA2/WPA3-Personal (recommended) |
| Passphrase | Click Generate one: five groups of four letters and digits, without look-alikes such as 0/O and 1/l. Write it down; it is shown until you save. Or type your own (8 to 63 characters, 12 or more recommended). |

Click Save to pending changes. With WPA2/WPA3-Enterprise instead (a certificate per device, guide NAC and Enterprise Wi-Fi), everything below works the same.
Open System › Wizards › VPN provider with failover.
For each provider:
nord, then ipvanish. The tunnel becomes wgnord, wgipvanish.Korthveil reads the file, shows ready, and hides the private key on screen. Health check via the provider's DNS is the DNS server from the file. It is reached only through the tunnel, so it shows whether the whole path works.
Zone for the provider tunnels: providers. It is kept apart from the zone that remote VPN users arrive in, so rules can tell them apart.

Already imported a provider on VPN › WireGuard? Tick it under Provider tunnels already on this firewall instead of pasting it again.
| Field | Set to | Meaning |
|---|---|---|
| Group name | VPN_ONLY |
The gateway group the wizard creates |
| Order | wgnord first, then wgipvanish |
The arrows change the order |
| Health check | The provider's DNS (filled in) | Pinged through each tunnel every 5 seconds; 3 lost answers mark it down, 2 answers bring it back |
| Kill switch | on | No provider answers: blocked. Off: your normal internet line until one is back |

Failover or load balance: How the providers share the traffic chooses between Failover: one at a time, in order (above) and Load balance: all at once. With load balance every provider that answers carries a share, and one device stays on one provider for each site, so sites keep seeing the same address. A provider that stops answering is left out until it answers again; with none, the kill switch blocks. Weights (for example NordVPN 2, IPVanish 1) are set later on Network › Policy routing › Gateway groups. IPv6 through WireGuard tunnels without a gateway uses one provider at a time.

Choose any of:
WIFI for everything on the Wi-Fi korthveil. This is the setting for the test firewall.192.168.2.16 or 192.168.2.80-192.168.2.89.wg0) and the remote devices' internet traffic goes out through the providers too.
Adding people who connect in: use Wizards › Remote-access VPN, or VPN › WireGuard › Remote devices › Add device. Each device gets its own configuration file and a QR code: open the WireGuard app on the phone, tap +, Scan from QR code, and it is connected. Choose all their internet traffic (full tunnel) there, so it reaches the providers.
Leave Only these sites empty to send all their internet traffic through the VPN. Or list host names and networks, such as discord.com or 157.240.0.0/16, to send only those. Host names follow DNS changes on their own.
Traffic between your own networks (Wi-Fi to LAN, for example) never goes through the provider.

The review lists, in words, everything the wizard adds:
Configuration changes and Network actions show the exact lines.

Click Apply, then Keep these settings within five minutes. Without that, the firewall goes back by itself (safety rollback).


korthveil with the passphrase from Step 2.wgnord is up and active, wgipvanish up.Test the failover: on VPN › WireGuard, untick Enabled on wgnord and commit. Within about 15 seconds IPVanish is active and the IP check shows IPVanish. Turn wgnord back on: NordVPN takes over again. Downloads that were running stop and start again on the new path.
Test the kill switch: turn both tunnels off. Web pages stop loading, and nothing leaves through your normal internet line. Turn them back on.
Everything the wizard made can be changed on its own page:
| What | Where |
|---|---|
| Order, health checks, kill switch | Network › Policy routing › Gateway groups |
| Which networks, devices, or sites | Network › Policy routing › Policy routes (and the address objects VPN_ONLY_devices, VPN_ONLY_sites under Firewall › Aliases) |
| A provider's new file | Run the wizard again with the same name and tick Replace the tunnel, or VPN › WireGuard › Import configuration |
| Device reservations | Network › DHCP server |
In any rule or policy route, Add object… also lists the DHCP clients by name.
| Symptom | Check |
|---|---|
| A provider always shows down | VPN › WireGuard › Tunnel status: does it have a recent handshake? If not, the file is wrong or used elsewhere: make a new one. If it has one, try another health check address (1.1.1.1). |
| The Wi-Fi works but shows my real IP | Policy routing: a route for WIFI to VPN_ONLY exists, and nothing above it matches first. Policy lookup shows which one matches. |
| No internet at all on the Wi-Fi | Both providers are down and the kill switch is working. Gateway groups shows why. |
| Some sites refuse the VPN | Some services block VPN addresses. Send those sites around the VPN with a policy route Use the normal routes above the VPN route. |
| A device left the VPN after a while | It was on a lease and got a new address. Run the wizard again with Keep their addresses on, or reserve it on Network › DHCP server. |
More: the guide VPN failover with a kill switch, and moving pfSense rules to Korthveil explains gateway groups and policy routes in depth. adr/0067 and adr/0069 describe the design.