decker2022
Goto Top

OpenSense mit 2 WAN und 2 LAN, Gateway festlegen

Hallo

Ich habe eine Frage.
Meine OpenSense hat 2 WAN Schnittstellen konfiguriert, an einer hängt Vodafone und am anderen EWE.
Nun möchte ich dass grundsätzlich LAN 1 über Vodafone geht und LAN 2 über EWE.
Wie regel ich das ?.

Mein Versuch, bei LAN1 und LAN2 in den Einstellungen festzusetzen welche Gateway genommen werden soll. Dann klappt es nicht. So lange es auf Standart bleibt ist alles ok. Ich mache also irgendeinen entscheidenen (Denk-)Fehler.

Content-ID: 7734584918

Url: https://administrator.de/contentid/7734584918

Ausgedruckt am: 17.11.2024 um 01:11 Uhr

Spirit-of-Eli
Spirit-of-Eli 04.07.2023 um 07:49:16 Uhr
Goto Top
Moin,

bei der OSense sollte im LAN interface auch das Gateway definiert werden können.
Da einfach das jeweilige GW angeben.

Ansonsten könntest du das auch per Policy based Route machen und einfach in der Rule ins Internet pro LAN Interface unter Advanced das jeweilige Gateway angeben.

Die dritte Option wäre zwei Gateway Gruppen zu erstellen und jeweils ein Gateway mit der höchsten prio ein zu tragen.
Die Gateway Gruppen dann identisch zu Option 1 oder 2 setzen und du hast sogar ein FailOver.

Gruß
Spirit
Tezzla
Tezzla 04.07.2023 aktualisiert um 07:57:37 Uhr
Goto Top
Moin,

du kannst im Regelwerk des jeweiligen Interface, wo du erlaubst wer wodrauf zugreifen darf auch direkt das gewünschte Gateway mit angeben.

Zum Beispiel: Wenn du Port 80/443 tcp erlaubst, kannst du in der gleichen Regel recht weit unten auch das gewünschte Gateway einstellen. D.h. Du kannst individuell festlegen, welcher Traffic über welches Gateway geroutet wird.

So könnte man sagen: Gesurft wird über Vodafone, der Rest läuft über EWE. Oder wie auch immer.

Dort lassen sich auch Gateway-Gruppen angeben. Wenn du zB deine WAN Anschlüsse redundant nutzen möchtest (zB wenn A ausgefallen, nutze B), dann definiere zuerst eine Gateway-Gruppe und gib diese dann in der Firewall-Regel als Gateway an.

VG
Decker2022
Decker2022 04.07.2023 um 08:01:53 Uhr
Goto Top
Genau so dachte ich auch. Aber das klappt einfach nicht. Wenn ich das mache geht nix mehr raus. habe es hier mal an meiner dritten Schnittstelle WLAN ausprobiert.
bildschirmfoto 2023-07-04 um 08.00.06
7426148943
7426148943 04.07.2023 aktualisiert um 08:20:11 Uhr
Goto Top
Du hast die DNS Regel vergessen, denn so erreicht der Client die Sense für DNS Abfragen nicht mehr weil diese über das GW geroutet werden, guckst du hier wie du vorzugehen hast (Punkt 5 ist hier besonders zu beachten):
https://docs.opnsense.org/manual/how-tos/multiwan.html

Zeppel
Decker2022
Decker2022 04.07.2023 um 08:20:01 Uhr
Goto Top
Meinst du so ?
bildschirmfoto 2023-07-04 um 08.19.18
Geht leider auch nicht.
7426148943
7426148943 04.07.2023 aktualisiert um 08:27:10 Uhr
Goto Top
Zitat von @Decker2022:

Meinst du so ?
bildschirmfoto 2023-07-04 um 08.19.18
Geht leider auch nicht.

Nein, das reicht nicht, lies den Artikel, Punkt 5 !!

This rule will utilize the gateway group for all traffic coming from our LAN network. This also means that traffic intended for the firewall itself will be routed in this (wrong) direction. That is why Step 5 is needed for our DNS traffic going to and coming from our DNS forwarder on the firewall itself.

Step 5 - Add allow rule for DNS traffic
Add a rule just above the default LAN allow rule to make sure traffic to and from the firewall on port 53 (DNS) is not going to be routed to the Gateway Group that we just defined.

Start with pressing the + icon in the bottom left corner.

Enter the following details:

Action

Pass

Allow this traffic to pass

Interface

LAN

TCP/IP Version

IPv4

For our example we use IPv4

Protocol

TCP/UDP

Select the right protocol

Source

any

Destination

Single host or Network

Destination

192.168.1.1/32

IP of the firewall only hence /32

Destination port range

DNS - DNS

Only DNS

Category

DNS

See Organize PF Rules by Category

Description

Local Route DNS

Freely chosen description

Gateway

default

Deswegen ist es meist besser nur Traffic mit anderem GW zu markieren der nicht an lokale Netze geht, also mit einem Alias für RFC1918 Netze als Ziel zu arbeiten und das zu negieren, dann entfällt auch diese DNS Regel und man muss dann auch nicht für jedes weitere LAN zusätzliche Regeln anlegen.
Decker2022
Decker2022 04.07.2023 um 08:42:43 Uhr
Goto Top
Ok, Punkt 5. Dort steht das alle DNS Anfragen aus dem besagten Netz an die Firewall gehen sollen (IP of the firewall only hence /32)

und dann als Gateway ja wohl die die ich haben will und nicht Standard, denke ich mal. Aber so geht es auch nicht.
Vielleicht sollte ich erwähnen, dass Adguard da zwischen hängt und auf dem DNS Port hört in der Firewall. Adguard ist aber gekoppelt auf allen LAN's/WLANS und funktioniert auch.
bildschirmfoto 2023-07-04 um 08.37.28
Spirit-of-Eli
Spirit-of-Eli 04.07.2023 um 08:55:10 Uhr
Goto Top
Zitat von @Decker2022:

Ok, Punkt 5. Dort steht das alle DNS Anfragen aus dem besagten Netz an die Firewall gehen sollen (IP of the firewall only hence /32)

und dann als Gateway ja wohl die die ich haben will und nicht Standard, denke ich mal. Aber so geht es auch nicht.
Vielleicht sollte ich erwähnen, dass Adguard da zwischen hängt und auf dem DNS Port hört in der Firewall. Adguard ist aber gekoppelt auf allen LAN's/WLANS und funktioniert auch.
bildschirmfoto 2023-07-04 um 08.37.28

Du musst den Traffic 53 TCP/UDP zur Firewall freil geben. Und das muss, wie erwähnt, vor deiner PBR Rule nach extern geschehen.

(PBR = Policy Based Route)
7426148943
7426148943 04.07.2023 aktualisiert um 09:15:04 Uhr
Goto Top
Zitat von @Decker2022:

Ok, Punkt 5. Dort steht das alle DNS Anfragen aus dem besagten Netz an die Firewall gehen sollen (IP of the firewall only hence /32)

und dann als Gateway ja wohl die die ich haben will und nicht Standard, denke ich mal. Aber so geht es auch nicht.
Vielleicht sollte ich erwähnen, dass Adguard da zwischen hängt und auf dem DNS Port hört in der Firewall. Adguard ist aber gekoppelt auf allen LAN's/WLANS und funktioniert auch.
bildschirmfoto 2023-07-04 um 08.37.28

Nein du verstehst die Regel falsch! Die sagt nicht das alle DNS Anfragen an die Firewall gehe sollen. Diese hat den Zweck zu verhindern das diese Pakete mit einer Routing-Mark versehen werden und somit auf die andere Routing-Tabelle laufen welche nur das Provider-Default-GW enthält und nicht alle anderen lokalen Netze/Routen.

Das läuft so ab wenn es keine DNS Regel gibt:
  • Client möchte google.com abrufen, dazu muss es eine DNS-Abfrage machen
  • Client schickt DNS Anfrage an seinen DNS-Server, ist das die OPNSense, geht das Paket in der PREROUTING Chain am Router ein
  • In der PREROUTING Chain wird dem Paket wegen der PolicyRule die du ja angelegt hast ein Routing-Tag für den entsp. Provider verpasst.
  • Nun geht das Paket weiter in die Forwarding-Decision, dort wird entschieden wohin das Paket weiter geschickt wird. Da das Paket ein Routing-Tag hat wird nicht die Default-Routingtabelle genommen sondern die in der nur das Provider-GW enthalten ist. In dieser gibt es aber keins der lokalen Netze, also schickt die Firewall das Paket das eigentlich lokal ausgewertet werden sollte an das Provider GW was die lokale RFC1918 IP nicht kennt, und PENG, die DNS Anfrage schlägt fehl.

Jetzt kapiert wie das ganze abläuft? Wenn ja dann sollte dir jetzt auch klar sein warum die DNS Regel da stehen muss, nämlich um zu verhindern das diese Pakete mit einem Routing-Tag markiert werden und die default Routing-Tabelle nutzen. Diese Regel darf also keinesfalls das GW enthalten und muss vor der PolicyRule stehen!

Wenn man so wie ich oben vorgeschlagen habe nur NON RFC1918 Netze taggt, dann entfällt diese Regel und man fährt effizienter.
aqui
aqui 04.07.2023 aktualisiert um 09:15:27 Uhr
Goto Top
Decker2022
Decker2022 04.07.2023 um 10:31:57 Uhr
Goto Top
Sorry, ich habe den Überblick total verloren. Sehr informativ. Aber leider fehlt mir da wohl die Grundmaterie.
Ich wollte eigentlich nur ganz simpel von einem Lan zu einer bestimmten Gateway. Wusste nicht welch Apparat dafür nötig ist. Werde mich wohl erstmal in Ruhe belesen müssen wovon ihr redet. Bin zwar IT aber da bin ich leider gerade raus. Werde mich dann wieder melden.
7426148943
Lösung 7426148943 04.07.2023 aktualisiert um 11:10:37 Uhr
Goto Top
Am Ende reicht es folgendes zu tun

back-to-topAlias für private Netze anzulegen (RFC1918)


screenshot

back-to-topPolicyRule in der Firewall am LAN Interface anlegen


Diese Regel ganz oben in der Reihenfolge platzieren.

screenshot

Nach dieser regel sollte natürlich noch eine Regel für den Lokalen Traffic existieren, also bspw. die AnyToAny Regel dort platziert sein.

back-to-topDNS-Server müssen für beide Provider angelegt sein.


Wenn man es so macht entfällt die Extra-Behandlung von DNS-Paketen und man muss so auch keine Ausnahmen für andere lokale Netze in der Firewall erstellen weil nur Pakete/Verbindungen mit dem Routing-Tag versehen werden welche wirklich über den Provider geroutet und nicht lokal ausgeliefert werden müssen.

Bitte beachte auch wenn du IPv6-Adressen in deinen Netzen verteilst das diese ebenfalls Behandlung diesbezüglich bedürfen weil IPv6 bevorzugt benutzt wird. Also IPv6 Adressen nur von dem Provider per PrefixDelegation zuweisen über den sie auch ins Internet gehen sollen.
Tezzla
Tezzla 04.07.2023 aktualisiert um 10:56:25 Uhr
Goto Top
Probier mal Folgendes:
- Alias anlegen für private IP Adressen gemäß RFC 1918, also 10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16
- In deinem Wunschinterface eine neue Regel oben anlegen, Ziel nicht "Alias RFC 1918", Gateway aussuchen

Edit: @7426148943 war schneller face-smile
Decker2022
Decker2022 04.07.2023 um 11:57:53 Uhr
Goto Top
@7426148943
So weit so gut. Es scheint zu funktionieren. Wobei ich ehrlich sein will, ich durchblicke es noch nicht ganz.
7426148943
7426148943 04.07.2023 aktualisiert um 13:09:49 Uhr
Goto Top
Zitat von @Decker2022:

@7426148943
So weit so gut. Es scheint zu funktionieren. Wobei ich ehrlich sein will, ich durchblicke es noch nicht ganz.

Vielleicht helfen ein paar Grafiken, aber natürlich ist grundlegendes Firewallverständnis, vor allem der Chains nötig.
Das kannst du dir hier anlesen, das Grundprinzip ist hier immer ähnlich egal welche Firewall man nimmt.
https://www.thegeekstuff.com/2011/01/iptables-fundamentals/

back-to-topSo läuft der Traffic für eine lokale DNS-Anfrage ohne richtige Bedingung in der PolicyRule


screenshot

Deswegen kann der Client die Domain nicht in eine IP übersetzen, und es kommt so keine Verbindung zu Stande, was sich bei dir in "Kein Internet" äußert. Hättest du direkt eine IP angesprochen hätte es dagegen funktioniert, aber auch nur mit externen IPs, interne hättest du nicht erreichen können, außer die im selben Subnetz (außer dem Router).

back-to-topUnd so läuft der DNS-Traffic mit einer PolicyRule die nur Traffic markiert der nicht lokal ausgeliefert werden soll


screenshot

Nach der erfolgreichen DNS-Anfrage enthält das neue Paket die Zieladresse welche nicht mehr im Alias enthalten ist und wird dann wie im ersten Bild mit dem Routing-Tag versehen und läuft dann über den von dir definierten Provider.

screenshot

Hope this helps
Decker2022
Decker2022 04.07.2023 um 13:07:17 Uhr
Goto Top
danke, jetzt wirds heller