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.
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.
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 7734584918
Url: https://administrator.de/contentid/7734584918
Ausgedruckt am: 19.12.2024 um 09:12 Uhr
16 Kommentare
Neuester Kommentar
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
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
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
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
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
https://docs.opnsense.org/manual/how-tos/multiwan.html
Zeppel
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.
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.
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.
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)
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.
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.
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.
https://www.heise.de/select/ct/2016/24/1479992026108405
https://www.privacy-handbuch.de/handbuch_93d.htm
https://www.heise.de/news/Quad9-Datenschutzfreundliche-Alternative-zum-G ...
Meinst du so ?
Den Schnüffel- und Schnorchel DNS von Google. Das machen heutzutage ja nicht mal mehr Dummies.https://www.privacy-handbuch.de/handbuch_93d.htm
https://www.heise.de/news/Quad9-Datenschutzfreundliche-Alternative-zum-G ...
Am Ende reicht es folgendes zu tun
Diese Regel ganz oben in der Reihenfolge platzieren.
Nach dieser regel sollte natürlich noch eine Regel für den Lokalen Traffic existieren, also bspw. die AnyToAny Regel dort platziert 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.
Alias für private Netze anzulegen (RFC1918)
PolicyRule in der Firewall am LAN Interface anlegen
Diese Regel ganz oben in der Reihenfolge platzieren.
Nach dieser regel sollte natürlich noch eine Regel für den Lokalen Traffic existieren, also bspw. die AnyToAny Regel dort platziert sein.
DNS-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.
Zitat von @Decker2022:
@7426148943
So weit so gut. Es scheint zu funktionieren. Wobei ich ehrlich sein will, ich durchblicke es noch nicht ganz.
@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/
So läuft der Traffic für eine lokale DNS-Anfrage ohne richtige Bedingung in der PolicyRule
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).
Und so läuft der DNS-Traffic mit einer PolicyRule die nur Traffic markiert der nicht lokal ausgeliefert werden soll
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.
Hope this helps