Firewall > Mangle > Passthrough

Passthrough

Was genau bewirkt die Einstellung „Passthrough“ in einigen Firewall -> Mangel-Aktionen?
Mikrotiks Dokumentation ist zwar korrekt aber trotzdem etwas dürftig:

passthrough (yes|no; Default: yes)
whether to let the packet to pass further (like action passthrough) into firewall or not (property only valid some actions). Quelle

 

Grundsätzlich stimmt Mikrotiks Aussage natürlich, ist die Option gesetzt, darf das Paket weiter den Mangle-Tab (hierarchisch) von oben nach unten durchwandern.

Nur wann sollte man das Ganze setzen und wann nicht? Dazu bedarf es einer kleinen Überlegung.
Ist es sinnvoll das Paket weiter im Mangling „bearbeiten“ zu wollen?

An einem kleinen Beispiel wird es sichtbar.
Eingehende Pakete werden mit einer Connection-Mark versehen (z. B. um Pakete eines bestimmten Internetanschlusses kommend zu markieren, so dass keine Asymmetrie im Routing entsteht):

Passthrough = yes ist das Standardverhalten

Im nächsten Schritt sollten die Antwortpakete (aus dem LAN zurück ins WAN) der richtigen Routing-Table zugewiesen werden.
Dafür würde man für die prerouting und output-Chain je eine Regel anlegen:

Prerouting-Chain
Output-Chain

Der Mangel-Tab sieht nun so aus:

Dies führt mit der Option passthrough = yes dazu, dass das Paket (welches in Regel 0 die Connection-Mark erhalten hat) im Mangel-Tab verbleibt und sofort im nächsten Schritt (Regel 1) eine Routing-Mark zugewiesen wird. Diese Routing-Mark dient aber dazu, das Paket auf dem Rückweg dem richtigen Gateway zuzuweisen – über das ein eintraf. Beim Hinweg verfügt diese Routing-Table aber natürlich über kein passendes Zielnetz. Besser gesagt, diese Routing-Table enthält normalerweise ein Default-Route 0.0.0.0/0, welche matchen würde, das Paket würde aber spätestens am ersten ISP-Router gedropt werden (da die Ziel-IP eine RFC1918-IP ist) oder es entstünde eine Routingschleife.

Ist die Option passthrough = no deaktiviert, wird das Paket nach der Regel 0 aus dem Mangle-Tab entfernt und findet seinen Weg normal zum Ziel (der Router speichert die gesetzte Connection-Mark im Connection-Tracking zu dieser Verbindung). Auf dem Rückweg matcht Regel 0 nicht, dafür matcht (je nachdem ob das LAN oder der Router selbst Ziel war), Regel 1 oder 2. An dieser Stelle wird das Paket der entsprechenden Routing-Table zugewiesen und findet so den Weg zurück zum Ursprung.

 

Lab

Schön kann man das in einer Lab-Simulation sehen, in der Router 1 eine Route zu Router 2 hat, die Routing-Mark/Table aber wieder zurück zu Router 1 zeigt (Defaultroute). Hier kommt es zu einer Routingschleife:

Paket -> Router 1 -> Router 2 -> Mangel 0 matcht -> passthrough -> Mangle 1 matcht -> Routing-Mark -> Defaultroute -> Router 1 und es beginnt wieder von vorne, bis die TTL bei 0 ist:

Nach 64 Versuchen ist das Ende erreicht, da jeder Router beim „Durchlauf“ den Wert 1 von der TTL abzieht (128 /2 = 64).

 

 


Referenzen:

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.