OPNsense 2 Provider
Plan
| Rolle | Interface | Gerät | Identifier | IP-Adresse | Provider-Gateway |
|---|---|---|---|---|---|
| Internes Netz | LAN | em0 | lan | LAN-Netz/24 | – |
| Provider A | WAN1 | em1 | opt2 | 192.168.HS.2XX/24 | 192.168.HS.254 |
| Provider B | WAN2 | em4 | opt4 | 172.30.34.2XX/24 | 172.30.34.254 |
Hinweis: Die Identifier (opt1, opt2, opt3 …) vergibt OPNsense in der Reihenfolge, in der die Interfaces angelegt werden. Sie müssen nicht fortlaufend zu den Gerätenamen passen – wichtig ist nur, dass sie in Gateways, DNS und Regeln konsistent referenziert werden.
Was müssen wir tun?
- 2 WAN-Interfaces anlegen
- 2 Gateways definieren
- Eine Gatewaygruppe erstellen
- Die Internetleitungen überwachen (Healthcheck über Monitor-IP)
- Eine Entscheidungsinstanz schaffen: die Gatewaygruppe entscheidet über Tier und Trigger Level
- Zuordnung klären: Policy Routing über die Gateway-Angabe in der Firewallregel
- DNS-Server pro Leitung zuordnen
- Firewallregeln anpassen (Reihenfolge beachten!)
- NAT-Regeln anpassen
- Szenarien testen
Konfiguration
Interface WAN1
Interfaces: [WAN1]
| Feld | Wert |
|---|---|
| Enable | aktiv |
| Device | em1 |
| Description | WAN1 |
| Block private networks | aus |
| Block bogon networks | aus |
| IPv4 Configuration Type | Static IPv4 |
| IPv6 Configuration Type | None |
| IPv4 address | 192.168.HS.2XX/24 |
| IPv4 Upstream Gateway | hier kommt später WAN1GW rein |
Wichtig: Die Präfixlänge /24 darf nicht fehlen, sonst wird das Interface mit /32
angelegt und das Gateway ist nicht erreichbar.
Interface WAN2
Interfaces: [WAN2]
| Feld | Wert |
|---|---|
| Enable | aktiv |
| Device | em4 |
| Description | WAN2 |
| Block private networks | aus |
| Block bogon networks | aus |
| IPv4 Configuration Type | Static IPv4 |
| IPv6 Configuration Type | None |
| IPv4 address | 172.30.34.2XX/24 |
| IPv4 Upstream Gateway | WAN2GW |
Einstellen der Gateways
System: Gateways: Configuration
| Feld | GW1 | GW2 |
|---|---|---|
| Name | WAN1GW | WAN2GW |
| Interface | WAN1 | WAN2 |
| Address Family | IPv4 | IPv4 |
| IP Address | 192.168.HS.254 | 172.30.34.254 |
| Upstream Gateway | aktiv | aktiv |
| Far Gateway | aus | aus |
| Disable Gateway Monitoring | aus | aus |
| Monitor IP | 9.9.9.9 | 208.67.222.222 |
| Priority | 254 | 255 |
Zwei Punkte, die häufig falsch gemacht werden:
- Upstream Gateway muss bei beiden Gateways gesetzt sein. Es kennzeichnet ein Gateway als
Internet-Ausgang; ist es nur bei einem gesetzt, verhält sich das Failover unvorhersehbar.
- Die Monitor-IPs müssen bei verschiedenen Betreibern liegen und dürfen nicht mit den
DNS-Servern identisch sein. 8.8.8.8 und 8.8.4.4 gehören beide Google: fällt Google aus, werden beide Leitungen als tot gemeldet. Für jede Monitor-IP legt OPNsense zusätzlich eine Hostroute über das jeweilige Gateway an; benutzt man dieselbe IP auch als DNS-Server, überlagern sich Hostroute und DNS-Zuordnung.
- Die niedrigere Priority gewinnt bei der Wahl des Default-Gateways. Stehen beide auf 255,
ist die Wahl zufällig.
Einstellen der Gatewaygruppe
System: Gateways: Group
| Feld | Wert |
|---|---|
| Group Name | GW_GROUP |
| Gateway Priority | WAN1GW = Tier 1, WAN2GW = Tier 2 |
| Trigger Level | Member Down |
| Pool Options | Default |
| Ziel | Tier-Vergabe | Trigger Level |
|---|---|---|
| Failover (Standard hier) | WAN1GW = Tier 1, WAN2GW = Tier 2 | Member Down |
| Lastverteilung | beide Tier 1 | Packet Loss or High Latency |
Bei Lastverteilung zusätzlich Firewall: Settings: Advanced → Sticky connections aktivieren, sonst wechseln einzelne Verbindungen desselben Clients die Leitung.
DNS pro Leitung
System: Settings: General
| DNS Server | Use gateway |
|---|---|
| 8.8.8.8 | WAN1GW |
| 1.1.1.1 | WAN2GW |
- Prefer IPv4 over IPv6: aktiv
- Die Zuordnung sorgt dafür, dass jeder DNS-Server über „seine“ Leitung befragt wird. Fällt eine
Leitung aus, bleibt der andere Resolver erreichbar.
NAT auf beiden WAN-Interfaces
Firewall: NAT: Outbound – manuelle Regeln (Protokoll und Ports jeweils *, IPv4)
| # | Interface | Source | Destination | Translate / target | Beschreibung |
|---|---|---|---|---|---|
| 1 | WAN1 | LAN network | * | Interface address | LAN ins Internet |
| 2 | WAN1 | SERVER network | * | Interface address | SERVER ins Internet |
| 3 | WAN1 | DMZ network | ! 10.88.0.0/16 |
Interface address | DMZ ins Internet – kein NAT zu den anderen DMZs |
| 4 | WAN2 | LAN network | * | Interface address | LAN ins Internet |
| 5 | WAN2 | SERVER network | * | Interface address | SERVER ins Internet |
| 6 | WAN2 | DMZ network | ! 10.88.0.0/16 |
Interface address | DMZ ins Internet – kein NAT zu den anderen DMZs |
Das Ausrufezeichen vor dem Zielnetz invertiert die Bedingung: Die Regel greift für alle Ziele
außer 10.88.0.0/16. Verkehr aus der DMZ zu den übrigen internen Netzen wird
also nicht übersetzt und behält seine Quelladresse – nur so bleiben Logs und Firewallregeln
auf den Zielsystemen auswertbar.
Jede Regel existiert doppelt, einmal je WAN-Interface. Das ist bei Multiwan zwingend: Welche Leitung genutzt wird, entscheidet das Policy Routing der Firewallregel; die passende NAT-Regel muss auf beiden Wegen bereitstehen.
Firewallregeln mit Gateway-Gruppe
Firewall: Rules: LAN – die Reihenfolge ist entscheidend:
| # | Action | Source | Destination | Gateway | Zweck |
|---|---|---|---|---|---|
| 1 | Pass | LAN net | This Firewall | leer (default) | DNS, NTP, Web-GUI |
| 2 | Pass | LAN net | Alias LOKALE_NETZE | leer (default) | interne Netze, DMZ, VPN |
| 3 | Pass | LAN net | any | GW_GROUP | Internetverkehr über die Gruppe |
Regel 3 im Detail:
| Feld | Wert |
|---|---|
| Action | Pass |
| Quick | aktiv |
| Interface | LAN |
| Direction | in |
| TCP/IP Version | IPv4 |
| Protocol | any |
| Source | LAN net |
| Destination | any |
| Description | LAN to any über Gateway-Gruppe |
| Gateway | GW_GROUP |
Der klassische Fehler: Nur eine einzige Regel mit Gateway GW_GROUP. Eine Gateway-Angabe erzwingt Policy Routing für alles, was auf die Regel passt – auch für Pakete an die DMZ, an VPN-Gegenstellen und an die Firewall selbst. Diese Pakete werden dann in Richtung Internet geschickt und verschwinden. Deshalb müssen die Regeln 1 und 2 ohne Gateway-Angabe darüber stehen.
Der Alias LOKALE_NETZE (Firewall: Aliases, Typ Network) enthält alle eigenen
Netze, z. B. die LAN-, DMZ- und VPN-Bereiche.
Firewall: Settings: Advanced
| Option | Empfehlung | Wirkung |
|---|---|---|
| Skip rules when gateway is down | aktiv | Bei totem Gateway wird die Regel entfernt statt auf das Default-Gateway zurückzufallen – verhindert stillen Rückfall auf die falsche Leitung |
| Sticky connections | nur bei Lastverteilung | hält alle Verbindungen eines Clients auf derselben Leitung |
Szenarien testen
- curl -4 --interface em1 ifconfig.co
62.159.72.206
- curl -4 --interface em4 ifconfig.co
194.59.156.244
| Szenario | Vorgehen | Erwartetes Ergebnis |
|---|---|---|
| Normalbetrieb | traceroute 9.9.9.9 vom Client |
erster Hop 10.88.1.1 (GW1) |
| Ausfall WAN1 | Kabel in VirtualBox trennen | Dashboard zeigt GW1 offline, Verkehr läuft über 10.99.99.1 |
| Rückkehr WAN1 | Kabel wieder verbinden | GW1 wieder online, neue Verbindungen laufen über GW1 |
| DNS-Test | dig @9.9.9.9 und dig @1.0.0.1 |
beide antworten, jeder über seine Leitung |
| Zugriff intern | Ping in DMZ bei totem WAN1 | funktioniert weiter (Regel 2 ohne Gateway) |
Statusanzeigen: Lobby: Dashboard (Widget Gateways), System: Gateways: Log File sowie Interfaces: Diagnostics: Routes.
