Cover Image

Port forwarding og split horizon routing med OPNsense og Wireguard VPN

 Tue 2023-08-08    OPNsense

Denne korte artikkelen tar for seg oppsett av både split horizon routing via WAN og VPN, samt portforwarding til interne tjenester.

Alt i denne artikkelen skjer i OPNsense webUI og forutstter en fungerende Wireguard VPN-forbindelse. Sett opp Wireguard VPN og sjekk at den fungerer som den skal. Sjekk også at du har aktivert port forwarding hos VPN-tilbyderen og at du har satt opp din lokale tjeneste til å lytte på den aktuelle porten.

For at dette skal fungere, må vi assigne Wireguard-interfacet til et OPNsense-interface.

  1. Interfaces -> Assignments: Assign wg0 til OPT1. Klikk Save.
  2. Klikk på OPT1 for å se interface properties.
  3. Endre følgende innstillinger og klikk Save:
    • Enabl: Yes
    • Lock: Prevent interface removal: Yes
    • Description: wginterface

Deretter må vi sette opp aliaser, NAT og brannmurregler. Husk å klikke Apply når du er ferdig i hver underseksjon for å aktivere endringene.

  1. Firewall -> Aliases: Legg til nytt alias med følgende innstillinger:
    • Enabled: Yes
    • Name: ISP_ROUTED
    • Type: Host(s)
    • Content: Skriv inn IP-adressene og/eller alias for alle nettverksenheter som IKKE skal routes gjennom VPN-tunnelen.
    • Description: Maskiner i dette aliaset routes direkte via WAN-interface til Internett
  2. Firewall -> NAT -> Port Forward: Legg til en ny portforwarding-regel med følgende innstillinger, og klikk Save:
    • Interface: wginterface
    • Protocol: TCP/UDP
    • Destination: wginterface address
    • Destination port range: (other) -> skriv inn portnummer, f.eks. 4242 i "from:" og "to:"-feltene
    • Redirect target IP: Alias eller IP-adresse til serveren som kjører tjenesten, f.eks. 192.168.0.114
    • Redirect target port: (other) -> 4242
    • Description: Fyll inn en beskrivelse om du ønsker
  3. Firewall -> NAT -> Outbound: Endre til Hybrid outbound NAT rule generation. Klikk Save.
  4. Legg til en ny portforwarding-regel med følgende innstillinger, og klikk Save. La resten av innstillingene være som de er.
    • Interface: wginterface
    • Source net: LAN net
    • Translation target: wginterface address
    • Description: Denne regelen router trafikk fra LAN til VPN
  5. Legg til en ny portforwarding-regel med følgende innstillinger, og klikk Save. La resten av innstillingene være som de er.
    • Interface: WAN
    • Source address: ISP_ROUTED
    • Translation target: WAN address
    • Description: Denne regelen router trafikk direkte til Internett
  6. System -> Gateways -> Single: Opprett en ny gateway til VPN-tilbyderen med følgende innstillinger, og klikk Save. La resten av innstillingene være som de er.
    • Name: VPN_GW
    • Description: VPN Provider Gateway (fyll inn mer eksakt info for din tilbyder - eller la være. Feltet er valgfritt.)
    • Interface: wginterface
    • IP address: Skriv inn IP-adressen du har fått tildelt som din tunnel address da du satt opp Wireguard-forbindelsen i utgangspunktet, f.eks. 10.200.150.99/32
    • Far gateway: Yes
    • Monitor IP: Skriv inn en IP-adresse som eksisterer på Internett, f.eks. Cloudflares DNS: 1.1.1.1. Denne er strengt tatt ikke nødvendig, men i noen tilfeller må man angi en ekstern IP for å kunne verifisere at gatewayen er oppe. Prøv først uten og hvis gatewayen konstant står som "Offline", angi en ekstern adresse for overvåkning.
  7. Firewall -> Rules -> LAN: Opprett en ny brannmurregel med følgende innstillinger, og klikk Save. La resten av innstillingene være som de er. Denne regelen må være først i listen. Selv om klientene i ISP_ROUTED også omfattes av "LAN net", så vil plasseringen i listen gjøre at denne regelen utføres først, og når firewallen er ferdig å prosessere denne regelen, så slutter den å prosessere regler.
    • Action: Pass
    • Interface: LAN
    • Source: ISP_ROUTED
    • Gateway: WAN_GW eller WAN_DHCP eller hva nå OPNsense kaller den.
  8. Firewall -> Rules -> LAN: Opprett en ny brannmurregel med følgende innstillinger, og klikk Save. La resten av innstillingene være som de er. Denne regelen må komme etter regelen i punkt 7. Hvis denne regelen er plassert før regelen i punkt 7 vil ALLE klienter routes via VPN og regelen i punkt 7 vil aldri prosesseres.
    • Action: Pass
    • Interface: LAN
    • Source: LAN net
    • Gateway: VPN_GW

Regeloppsettet er nå ferdig. Start tjenesten som skal lytte på port 4242 i eksempelet og sjekk via f.eks. https://canyouseeme.org at porten faktisk er åpen. Hvis den oppgis som Closed, Timed out, Refused eller andre feilmeldinger har du gjort noe feil i oppsettet. Gå til begynnelsen og sjekk at alt du har gjort er korrekt.