Cover Image

Howto: Mullvad, Wireguard og OPNsense

 Sat 2021-01-30    VPN

Sette opp Mullvad VPN med WireGuard på OPNsense

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.

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å.