Manchmal bekomme ich komische Anfragen, viele davon machen keinen Sinn, weil es bessere Wege gibt das gewollte zu erreichen. Aber manche Leute lassen sich eben nicht überzeugen und wollen es genau so haben, wie sie es seit jeher schon tun. Also bekommen sie was sie möchten. In diesem Fall, ACLs auf einem Layer 2 Switch.
Cisco bietet hierzu mindestens zwei Möglichkeiten, ohne ein L3 Interface anzulegen. Das heißt es gibt kein Routed-Interface und auch kein SVI für die VLANs.
Möglichkeit eins ist es, eine ACL zu schreiben mit der ihr direkt den Traffic erlaubt (permit) oder blockt (deny). Diese ACL kann auf dem Switchport angewandt werden, genauso wie man es von L3 Interfaces auch kennt. In diesem Fall aber nur eingehend.
Der größte Nachteil dabei ist, dass die ACL nur auf einem Port liegt, also wahrscheinlich auf einige Ports, wenn nicht sogar alle, angewandt werden müsste. Wenn man wirklich verhindern möchte, dass bestimmte Hosts im VLAN mit anderen kommunizieren. Das skaliert nicht wirklich und kann auch umständlich im handling sein, denn man kann immer nur eine ACL auf einen Port binden. Nicht mehrere.
Die zweite Möglichkeit ist es, eine VLAN Access-Map zu nutzen. Wie funktioniert das nun?
Ihr erzeugt in diesem Fall eine ACL mit der ihr den Traffic markiert. Das heißt, ihr schreibt dort nur permit Statements (ACEs) für den Traffic den ihr „anfassen“ möchtet. Die ACL wird aber nicht selbst den Traffic erlauben oder blocken. Genauso wie man es oft in Route-Maps macht. ACL Beispiel:
ip access-list extended ACL1 permit ip any host 10.10.10.10 permit ip host 192.168.1.5 any
Nun schreibt ihr eine „vlan access-map“ der gebt ihr einen Namen und eine Sequenznummer. Darin könnt ihr mit „match“ und „action“ Statements arbeiten. Ihr nutzt also das „match“ Statement um eure ACL anzuwenden. Darauf folgt ein „action“ Statement um anzugeben was mit dem markierten Traffic passieren soll. Hier gibt es nur zwei Optionen. „Drop“ um den Traffic zu verwerfen und „forward“ um ihn weiterzuleiten.
vlan access-map VACL 10 match ip address ACL1 action drop
Danach muss die VLAN Access-Map noch auf einem VLAN aktiviert werden, so z.B. aktiviert ihr die Access-Map „VACL“ auf dem VLAN 100:
vlan filter VACL vlan-list 100
Wenn ihr das so ausführt, wird aber kein Traffic mehr in diesem VLAN transportiert. Das liegt daran, dass VLAN Access-Maps ein impliziertes Drop Statement am Ende haben, so wie auch ACLs. Das heißt eure Access-Map muss so aussehen:
vlan access-map VACL 10 match ip address ACL1 action drop vlan access-map VACL 20 action forward
Jetzt wird der Traffic den ihr in ACL1 markiert verworfen, aber jeder anderer Traffic ist erlaubt und wird geforwarded.
Meiner Meinung braucht man diese Funktion nicht oft und meistens gibt es bessere Lösungsmöglichkeiten (Mikrosegmentierung, Private-VLANs, Firewalls, etc.) aber manchmal muss man auch sowas bauen.