Switch Rules (ACL) / MAC Addresses

Auf Geräten mit Switch-Chip nach MAC-Adressen filtern

Leider ist dieses Feature nicht gut dokumentiert.

Vorteil ist, dass mit Switch-Rules (ACLs) unter Beibehaltung der Wirespeed gewisse Filterungen möglich sind. Sonst kann bei aktiven Hardware-Offload keine Filterung vorgenommen werden! Sei es auf Layer2 (Bridge -> Filter) oder Layer3+ (Firewall -> Filter).

 

Die gesamte – etwas dürftige – Mikrotik-Dokumentation:

  • dst-mac-address – match by destination mac address and mask;
  • src-mac-address – …;

Quelle

 

Erklärung:

Aufgebaut sind die MAC-Filter nach dem Schema:

00:00:00:00:00:00 / 00:00:00:00:00:00

Der linke Teil (vor dem Schrägstrich) bezieht sich auf die zu filternde MAC-Adresse.
Der rechte Teil bezieht sich auf die Maske, was also vom linken Teil (binär) zutreffen muss.

 

Der Maskenwert kann ein beliebiger Hexwert sein. In der Regel ist er pro Oktett aber entweder „00“ oder „FF“.

00 = das entsprechende Oktett der MAC-Adresse wird ignoriert
FF = der Filter trifft nur zu, wenn das entsprechende Oktett der tatsächlichen MAC-Adresse mit dem Definierten übereinstimmt
00:00:00:00:00:00 = der Filter trifft immer zu (= Wildcard)

 

Beispiel:

08:55:31:AB:CD:EF / FF:FF:FF:FF:FF:FF = der Filter trifft nur zu, wenn die MAC-Adresse exakt „08:55:31:AB:CD:EF“ ist
08:55:31:AB:CD:EF / FF:FF:FF:00:00:00 = der Filter trifft auf alle MAC-Adressen mit der Hersteller-ID (OUI) „08:55:31“ zu
00:00:00:00:00:00 / 00:00:00:00:00:00 = der Filter trifft auf jede MAC-Adresse zu, der linke Teil spielt keine Rolle (Wildcard)

 

Als Maskenwert ist jeder Hexwert zulässig, z. B. 0xC0 (= 0b11000000). In diesem Fall müssten nur die ersten zwei Bit eines Oktetts übereinstimmen.
So trifft der Filter „00:C0:00:00:00:00″ nur auf die ersten zwei Bit des zweiten Oktetts von „08:55:31:AB:CD:EF“ zu.

Filter: 2. Oktett 0xC0 = 0b11000000
MAC: 2. Oktett 0x55 = 0b01010101

Der Filter würde z. B. auch auf 0b01111111 (0x7F) oder 0b01000000 (0x40) zutreffen.
Nicht jedoch auf 0b10111111 (0xBF) oder 0b10000000 (0x80)!

 


Eine Umformung von MSB zu LSB innerhalb der Oktetten ist nicht nötig!

0x55 = 0b01010101 (binäre Darstellung, nicht-kanonische Darstellung, MSB-zuerst)
0x55 = 0b10101010 (kanonische Darstellung, LSB-zuerst)

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert