1. Installer WireGuard på OPNsense
Naviger til System --> Firmware --> Plug-ins, og installer 'os-wireguard'. Last inn siden på nytt og gå til VPN --> Wireguard.
2. Opprett en Local Instance
Under VPN --> WireGuard --> Local, opprett en ny instance med følgende verdier:
- Name: Mullvad
- Public Key: (Automatically Generated)
- Private Key: (Automatically Generated)
- Listen Port: 51820 (må være unik)
- DNS Server: 193.138.218.74 (dette er Mullvads privacy DNS-tjeneste)
- Tunnel Address: Legg inn 0.0.0.0/0 for nå; vi kommer tilbake til denne senere.
Trykk "Save" for å lagre.
3. Finn Tunnel-IPen for kontoen din
Når du nå har opprettet og lagret en Local Instance, klikk Edit, og en privat og offentlig krypteringsnøkkel skal ha blitt automatisk generert. Kopier den offentlige nøkkelen (Public Key).
SSH inn på OPNsense-boksen og kjør følgende kommando der "mullvad-account-number" er ditt 16-tegns lange Mullvad-kontonummer (uten mellomrom), og "mullvad-public-key" er nøkkelen du nettopp kopierte.
curl -sSL https://api.mullvad.net/wg/ -d account=[mullvad-account-number] --data-urlencode pubkey=[mullvad-public-key] ; echo
Dette vil gi deg to IP-adresser, en IPv4-adresse og en IPv6-adresse, noe lignende dette:
00.xx.xxx.xx/xx,fc00:bbbb:bbbb:bb00::0:0x00/128
Denne er linket til kontoen din, så hold den hemmelig.
4. Legg tunneladressen til i Local Instance
Gå tilbake til den opprettede Local Instance, og under "Tunnel Address", legg inn begge adressene du fikk fra curl-kommandoen over.
5. Velg en Mullvad-server
Gå til https://mullvad.net/en/servers/ og velg en WireGuard-server som dekker dine behov. Noter navnet, public key og portnummer.
6. Opprett et Endpoint
Gå til VPN --> WireGuard --> Endpoints og opprett en ny instans med følgende data:
- Name: MullvadServer
- Enabled: true
- Public Key: (public key fra din valgte Mullvad-server)
- Shared Secret: [blank]
- Allowed IPs: 0.0.0.0/0
- Endpoint Port: (multihop port fra din valgte Mullvad-server)
- Keepalive: 20 (sekunder)
Endpoint-oppsettet skal da se omtrent slik ut:
7. Koble Endpoint til Local Instance
Naviger tilbake til VPN --> WireGuard --> Local, og klikk Edit for din Local Instance. Under Peers, velg navnet på ditt nyopprettede Endpoint. Din Local Instance skal da se omtrent slik ut:
8. Legg til Outbound Rule
Under Firewall --> NAT --> Outbound, endre Rule Generation modus til Hybrid (fra automatisk).
Deretter, opprett en ny manuell regel med følgende detaljer:
- Interface: WireGuard
- Source Address: LAN net
- Translation / Target: Interface address
Resten av feltene kan være som de er:
9. Aktiver VPN
Til slutt, gå tilbake til VPN --> WireGuard --> General. Velg Enable WireGuard VPN og trykk Save. Ferdig!
Under VPN --> WireGuard --> List Configuration skal du nå kunne se tilkoblingsdetaljene.
10. Test
For å teste forbindelsen til Mullvad, gå til https://mullvad.net/en/check/
Her kan du også sjekke at IP-adressen din ikke er svartelistet, og at du ikke har noen DNS eller WebRTC-lekkasjer.
Mullvad har også en enkel API som kan brukes i scripts og for automatisering:
$ curl https://am.i.mullvad.net/connected
$ curl https://am.i.mullvad.net/json
Notater
Deaktivering og reaktivering av WireGuard fra General-fanen refresher ikke oppdaterte data fra verken Local eller Endpoint-fanene. For å få det til må du deaktivere, reaktivere og lagre endringene på de respektive sidene. Nyttig dersom du driver med feilsøking og ikke ser om endringene du gjør har noen effekt.
WireGuard-interface for NAT-regel
Jeg fikk ikke opp noe WireGuard-interface i listen over tilgjengelige interfaces da jeg skulle legge inn NAT-reglen, og prøvde meg frem med WAN-interfacet. Det funket overhodet ikke, så jeg måtte gå til Interfaces --> Assignments og opprette et nytt interface for wg0 med følgende informasjon:
- Enable: true
- Prevent interface removal: true
- Description: WireGuard
Resten av feltene lot jeg være som de var.
Deretter gikk jeg tilbake til Firewall --> NAT --> Outbound og endret regelen jeg hadde lagt inn til å bruke WireGuard-interfacet. Deretter gikk jeg tilbake til VPN --> WireGuard --> General og deaktiverte og reaktiverte WireGuard, og så fungerte det omsider.
SOCKS5 Proxy
Alternativt kan du bruke SOCKS5 på klienter eller i nettlesere for ekstra beskyttelse og økt ytelse. Det er også mulig å bruke SOCKS5-proxyer for multihop, som lar klienten komme ut på internett fra en annen server enn den du er tilkoblet. Mullvads WireGuard-proxy finnes på 10.64.0.1 port 1080.
- For mer detaljert informasjon om dette, se SOCKS5 Proxy Guide i Mullvads dokumentasjon.
Port Forwarding
Hvis du trenger å eksponere en intern tjeneste (webserver, (s)ftp-server, etc) mot internet fra bak Mullvad, må du tildele individuelle porter fra Mullvadkontoen din. Logg inn på kontoen din hos Mullvad og gå til mullvad.net/account/ports. Her vil du se en liste over dine public keys. Trykk "Add new" under Ports-seksjonen for din ønskede instans og spesifiser hvilken port din interne tjeneste kjører på.
- For mer detaljert informasjon om dette, se Port Forwarding Guide i Mullvads dokumentasjon.