Mikrotik Scripting : Parameter "place-before" nutzen um FW-Regeln "nach" anderen anzulegen
Ein schneller Tipp für die programmatische Arbeit mit Firewall-Regeln auf der Konsole von RouterOS.
Normalerweise verfügt man beim Anlegen von Firewallregeln in der Konsole von RouterOS ja bereits über den Parameter place-before der Regeln vor einer anderen anlegt. Es kann jedoch vorkommen, dass ihr die Regeln programmgesteuert nach einer anderen bestimmten Regel platzieren müsst.
Angenommen, Ihr möchtet eine neue Regel nach der allgemeinen "statefull" Firewall-Regel "established,related" in der input chain anlegen, dann könnt ihr das so erreichen:
Die neue Regel landet dann wie gewünscht hinter der gesuchten Regel. Dabei wird die Eigenschaft .nextid der gesuchten Regel verwendet um an die interne ID der nächsten Regel in der Chain zu kommen. Dies funktioniert übrigens auch wenn die gesuchte Regel die letzte in der Chain ist, da in diesem Fall RouterOS der Eigenschaft .nextid automatisch den Wert *ffffffff zuweist, welche die maximal mögliche interne Referenznummer ist.
Achtung: Der obige Einzeiler geht davon aus, dass eine bestimmte Regel bereits existiert, andernfalls schlägt dieser Befehl natürlich fehl. Aus Sicherheitsgründen prüft man deswegen i.d.R. vorher immer auf Existenz der entsprechenden Regel, etwa so:
Vielleicht hilft es euch.
Grüße @colinardo
Normalerweise verfügt man beim Anlegen von Firewallregeln in der Konsole von RouterOS ja bereits über den Parameter place-before der Regeln vor einer anderen anlegt. Es kann jedoch vorkommen, dass ihr die Regeln programmgesteuert nach einer anderen bestimmten Regel platzieren müsst.
Angenommen, Ihr möchtet eine neue Regel nach der allgemeinen "statefull" Firewall-Regel "established,related" in der input chain anlegen, dann könnt ihr das so erreichen:
/ip firewall filter add chain=input protocol=tcp dst-port=22 action=accept place-before=([get ([find chain=input && connection-state ~ "established"]->0)]->".nextid")
Die neue Regel landet dann wie gewünscht hinter der gesuchten Regel. Dabei wird die Eigenschaft .nextid der gesuchten Regel verwendet um an die interne ID der nächsten Regel in der Chain zu kommen. Dies funktioniert übrigens auch wenn die gesuchte Regel die letzte in der Chain ist, da in diesem Fall RouterOS der Eigenschaft .nextid automatisch den Wert *ffffffff zuweist, welche die maximal mögliche interne Referenznummer ist.
Achtung: Der obige Einzeiler geht davon aus, dass eine bestimmte Regel bereits existiert, andernfalls schlägt dieser Befehl natürlich fehl. Aus Sicherheitsgründen prüft man deswegen i.d.R. vorher immer auf Existenz der entsprechenden Regel, etwa so:
{
:local rule ([/ip firewall filter find chain=input && connection-state ~ "established"]->0)
:if ($rule) do={
/ip firewall filter add chain=input protocol=tcp dst-port=22 action=accept place-before=([get $rule]->".nextid")
} else={
:error "Regel nicht gefunden!"
}
}
Vielleicht hilft es euch.
Grüße @colinardo
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 671532
Url: https://administrator.de/tutorial/mikrotik-scripting-parameter-place-before-nutzen-um-fw-regeln-nach-anderen-anzulegen-671532.html
Ausgedruckt am: 21.02.2025 um 17:02 Uhr