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.
- Interfaces -> Assignments: Assign wg0 til OPT1. Klikk Save.
- Klikk på OPT1 for å se interface properties.
- 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.
- 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
- 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
- Firewall -> NAT -> Outbound: Endre til Hybrid outbound NAT rule generation. Klikk Save.
- 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
- 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
- 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.
- 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.
- 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.