Da für vielen DSL-Anbietern IPv6 ein Fremdwort ist, muss man sich oft mit einem Tunnel behelfen. Die Erweiterung einer Cisco IOS Umgebung (Router und Switch) um IPv6 ist zwar nicht aufwendig, umfasst aber doch ein paar Schritte, die ich hier kurz beispielhaft zusammenfassen möchte.
Sehr leicht hat man die Einrichtung bei dem (kostenlosen) Anbieter Hurricane Electric: http://tunnelbroker.net/ Dort muss man sich registrieren und bekommt seine Zugangsdaten per Mail zugesendet. Nachdem man sich angemeldet hat, kann man auch gleich einen neuen Tunnel konfigurieren:
In dem darauf folgenden Dialog wird die eigene IPv4-Adresse eingetragen. Weiterhin wird angegeben, wo der Tunnel im Internet terminiert werden soll. Für Deutschland bietet sich hier Frankfurt an.
Um ein Tunnel einrichten zu können, muss der Router, über den man sich ins Internet verbindet, „pingbar“ sein! Wenn das gewährleistet ist, kann der Dialog mit “Submit” abgeschlossen werden.
In der dann folgenden Fenster wählt man die “Tunnel Details” aus, hier kann sich verschiedene noch Beispielkonfigurationen für ein Systeme ausgeben lassen (für verschiedene Systeme/Hersteller verfügbar). Standardmäßig bekommt man 'nur' ein /64er Netz. Wenn man hinter dem Router noch weitere Infrastruktur/Devices hat, muss man noch das “Routed /48″ aktivieren:
Die eigentliche Router-Konfiguration ist recht einfach und kann als Vorlage von der obigen Webseite generiert werden:
interface Tunnel0 description Hurricane Electric IPv6 Tunnelbroker no ip address ipv6 address [die zugewiesene /64-Adresse ] ipv6 enable tunnel source Dialer 0 tunnel destination [Der ausgewählte Tunnelserver] tunnel mode ipv6ip exit ! ipv6 route ::/0 Tunnel0
Abweichend von der vorgeschlagenen Konfiguration sollte die „tunnel source“ auf das verwendete Dialer-Interface geändert werden. Damit ist die Konfig unabhängig von der konfigurierten oder dynamisch empfangenen IP-Adresse.
Natürlich muss IPv6 auch noch global eingeschaltet werden:
ipv6 unicast-routing ipv6 cef
Die Access-Liste auf dem Public-Interface (Dialer0 in Beispiel) muss wie oben beschrieben pingbar (ICMP echo) sein. Weiterhin muss das IP-Protokoll 41 (GRE) für den Tunnel erlaubt sein:
permit icmp any any echo permit 41 any any
Wenn man eine dynamsiche IP-Adresse hat, dann muss der Tunnel für jede neue IP neu registriert werden. Sehr einfach geht das mit der DDNS von Cisco.
ip ddns update method tunnelbroker_net HTTP add http://ipv4.tunnelbroker.net/ipv4_end.php?pass=<md5-password>&user_id=<user_id>&tunnel_id=<tunnel_id>&ipv4b=<a>
Danach einfach den DDNS Eintrag am Dialer konfigurieren
interface dialer 0 ip ddns update tunnelbroker_net
Danach wird die neue IP-Adresse auch bei einem Router-Neustart bzw sobald der Dialer eine Verbindung herstellt registriert.
Natürlich wird man auch für IPv6 eine Firewall aktivieren. Hier offenbart sich dann leider das Grauen bei Cisco. Zum einen unterstützt die Zone-Based-Firewall kein IPv6, und auch die traditionelle IOS-Firewall (CBAC) unterstützt nur TCP, UDP, ICMP und FTP. Keine weiteren Protokolle und auch keine Erweiterungen, wie das Inspizieren von Router-eigenem Traffic.
Als erstes wird die FW-Policy angelegt und im Tunnel aktiviert:
ipv6 inspect name FW tcp ipv6 inspect name FW udp ipv6 inspect name FW icmp ipv6 inspect name FW ftp ! interface Tunnel0 ipv6 inspect FW out
Als Nächstes muss der eingehende Traffic gefiltert werden. Dabei muss man aufpassen, kein einfaches „deny ipv6 any any“ zu konfigurieren, da dann das Neighbor-Discovery nicht mehr funktioniert. So könnte es aber aussehen:
ipv6 access-list OUTSIDE-IN-v6 permit icmp any any nd-na permit icmp any any nd-ns deny ipv6 any any ! interface Tunnel0 ipv6 traffic-filter OUTSIDE-IN-v6 in
Aus dem zugewiesenen /48er Netz wird jedem Netz ein Subnet zugewiesen. Welche Subnet-Adressen man nehmen könnte, habe ich hier schon mal angedeutet. Da alle diese Netze die ersten 48 Bit gemeinsam haben, kann man sich die Konfiguration mit Hilfe der „General-Prefixes“ erleichtern. Diese haben einen Namen (hier HE1) und beinhalten die ersten 48 Bit der IP-Adresse.
ipv6 general-prefix HE1 2001:aaaa:bbbb::/48
Auf den Interfaces kann bei der Konfiguration der IP-Adressen dieser Prefix referenziert werden:
interface Vlan20 ipv6 address HE1 ::20:0:0:0:1/64 ipv6 enable
Mit dieser Konfig kündigt sich der Router automatisch an, und der PC sollte sich mit einer IPv6-Adresse selbst konfigurieren. Die Funktion kann per Ping („ping6 ipv6.google.com“) oder per Webbrowser („http://ip6.me“) überprüft werden.
Um auf dem verwendeten Cisco Catalyst 3560 IPv6 konfigurieren zu können, muss der Switch erst vorbereitet werden. Das Default-„Switch Database Management-Template“ unterstützt kein IPv6:
c3560(config)#sdm prefer dual-ipv4-and-ipv6 default
Je nachdem, was man mit seinem Catalyst alles machen möchte, ist evtl. auch ein anderes Template nötig. Diese sind im Configuration-Guide beschrieben. Dieser Befehl taucht später nicht in der Konfiguration auf, kann aber mit „sh sdm prefer“ kontrolliert werden.
Der Rest der Konfiguration ist dann dem Router sehr ähnlich. IPv6 aktivieren, General-Prefix konfigurieren und Interfaces mit einer IPv6-Adresse versehen:
ipv6 general-prefix HE1 2001:aaaa:bbbb::/48 ipv6 unicast-routing ! interface Vlan20 ipv6 address HE1 ::20:0:0:0:2/64 ! interface Vlan25 ipv6 address HE1 ::25:0:0:0:1/64
Der Router muss jetzt natürlich noch die internen Netze lernen und der Switch eine Default-Route bekommen. In einem kleinen Netz reichen dafür ohne weiteres statische Routen, die mit „ipv6 route“ anstelle „ip route“ konfiguriert werden. Bei Bedarf kann man natürlich auch RIP, OSPF, EIGRP oder IS-IS benutzen.