colinardo
Goto Top

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:

/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

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