Cisco IOS bietet sowohl für IPv4 als auch für IPv6 sogenannte Access Control Lists (ACL) an, welche eine einfache Filtermöglichkeit für eingehende und ausgehende Pakete bieten. Es existieren folgende Arten von IPv6-Access-Lists:
Einen Überblick über die Möglichkeiten und Konfiguration von ACLs gibt die Cisco-Präsentation Cisco IOS IPv6 Access Control Lists (10).
Anhand einiger einfacher Beispiele sollen in diesem Kapitel die verschiedenen Zugriffsbeschränkungen demonstriert werden.
Die beiden Fast-Ethernet-Schnittstellen werden wie folgt vorbereitet:
R5(config)#interface f0/0 R5(config-if)#ipv6 enable R5(config-if)#ipv6 address FEC2::/64 eui-64 R5(config-if)#ipv6 nd prefix FEC2::/64 R5(config-if)#ipv6 nd ra-interval 10 R5(config)#interface f0/1 R5(config-if)#ipv6 enable R5(config-if)#ipv6 address FEC1::/64 eui-64 R5(config-if)#ipv6 nd prefix FEC1::/64 R5(config-if)#ipv6 nd ra-interval 10
Um die den Zugriff nur aus dem Subnetz A zu erlauben, wird die Access-List list0 im globalen Konfigurationsmodus kreiert und mit dem Interface f0/0 verbunden. Das bedeutet nun, dass nur noch Traffic vom Subnetz FEC2::/64 zugelassen wird.
R5(config)#ipv6 access-list list0 R5(config-ipv6-acl)#permit ipv6 FEC2::/64 any log R5(config-ipv6-acl)#exit R5(config)#int f0/0 R5(config-if)#ipv6 traffic-filter list0 in
Mit der zweiten Access-List (list1) wird der Port 80 (http) an Wochentagen während der Arbeitszeit gesperrt. Diese ACL wird am zweiten Interface f0/1 aktiviert.
R5(config)#ipv6 access-list list1 R5(config-ipv6-acl)#deny tcp any any eq 80 time-range vormittag log R5(config-ipv6-acl)#deny tcp any any eq 80 time-range nachmittag log R5(config-ipv6-acl)#permit tcp any any eq 80 log R5(config-ipv6-acl)#exit R5(config)#int f0/1 R5(config-if)#ipv6 traffic-filter list1 out
Die time-range wurde in der list1 mit vormittag und nachmittag angegeben. Diese beiden Zeiten müssen jetzt noch definiert werden.
R5(config)#time-range vormittag R5(config-time-range)#periodic weekdays 07:00 to 12:00 R5(config-time-range)#exit R5(config)#time-range nachmittag R5(config-time-range)#periodic weekdays 13:00 to 17:30 R5(config-time-range)#exit
Die vollständige Konfiguration ist in Anhang C.2.7 aufgeführt.
Die Option log hinter den Regeln veranlasst den Router, alle Pakete aufzuzeichnen, die die Regel erfüllen. Damit die Regeln getestet werden können, kann mit dem Befehl terminal monitor dieses Log direkt auf die Konsole ausgegeben werden. Die Ausgabe sieht dann etwa wie folgt aus:
Oct 10 10:34:16.406: %IPV6-6-ACCESSLOGP: list list1/10 denied tcp FEC2::201:2FF:FE87:17A5(33960) -> FEC1::201:2FF:FE87:179C(80), 1 packet
Um die Wirksamkeit der ACLs zu überprüfen, können diese mit dem show-Befehl angezeigt werden. Schön zu sehen sind die Anzahl der Matches und ob ein Filter überhaupt aktiv ist. Bei der list1 dürfen zum Beispiel die beiden ersten Filter nicht gleichzeitig aktiv sein, weil sich die time-ranges nicht überschneiden.
R5#show access-lists IPv6 access list list0 permit ipv6 FEC2::/64 any log (\textbf{29 matches}) sequence 10 IPv6 access list list1 deny tcp any any eq www log time-range vormittag (\textbf{active}) sequence 10 deny tcp any any eq www log time-range nachmittag (\textbf{inactive}) sequence 20 permit tcp any any eq www log (\textbf{22 matches}) sequence 30
Wenn mit der Option time-range gearbeitet wird, muss überprüft werden, ob die Zeit und das Datum überhaupt richtig gesetzt ist. Insbesondere bei kleineren Cisco-Routern ist die Uhr nicht batteriegepuffert und muss daher nach jedem Einschalten neu gestellt werden.
R5#clock set 10:34:00 10 oct 2003
Pakete, welche durch die Access-Lists abgefangen werden, werden dem Sender mit einem ICMPv6 Unreachable signalisiert (Zeile 2). Der ICMP-Code lautet 1, dieser steht für Administratively prohibited (Zeile 3). Die ICMPv6 Typen und Codes sind im RFC 2463 (3) definiert.
Internet Control Message Protocol v6 \textbf{Type: 1 (Unreachable)} \textbf{Code: 1 (Administratively prohibited)} Checksum: 0x554b (correct) Internet Protocol Version 6 Version: 6 Traffic class: 0x00 Flowlabel: 0x00000 Payload length: 40 Next header: TCP (0x06) Hop limit: 63 Source address: fec2::201:2ff:fe87:17a5 (fec2::201:2ff:fe87:17a5) Destination address: fec1::201:2ff:fe87:179c (fec1::201:2ff:fe87:179c) Transmission Control Protocol, Src Port: 34095, Dst Port: 22, Seq: 156188826, Ack: 0, Len: 0 Source port: 34095 (34095) Destination port: ssh (22) Sequence number: 156188826 Header length: 40 bytes Flags: 0x0002 (SYN) 0... .... = Congestion Window Reduced (CWR): Not set .0.. .... = ECN-Echo: Not set ..0. .... = Urgent: Not set ...0 .... = Acknowledgment: Not set .... 0... = Push: Not set .... .0.. = Reset: Not set .... ..1. = Syn: Set .... ...0 = Fin: Not set Window size: 5760 Checksum: 0xd73c (correct) Options: (20 bytes) Maximum segment size: 1440 bytes SACK permitted Time stamp: tsval 9918147, tsecr 0 NOP Window scale: 0 bytes