Chapter 6. IPv6-Tunneling mit Cisco und/oder 6bone

By Marco Davids <marco@sara.nl>

Hinweis an die Betreuer:

Soweit es mich betrifft, ist das IPv6-IPv4-Tunneling nicht per Definition GRE Tunneling. Du kannst IPv6 über IPv4 mittels GRE-Tunnel-Geräte tunneln (GRE-Tunnel ANY to IPv4), aber die hier verwendeten ("sitzenden") Geräte tunnelt nur IPv6 über IPv4 und sind daher etwas anderes.

6.1. IPv6-Tunneling

Dies ist eine weitere Anwendung der Tunnelfähigkeiten Linux. Es ist bei den ersten IPv6-Anwendern, oder nennen wir sie Pioniere, beliebt. Die "praktisch" beschriebenen Beispiele sind sicherlich nicht der einzige Weg, um IPv6-Tunneling zu benutzen. Jedoch ist dies die häfigste Methode, Tunnel zwischen Linux und Cisco IPv6-fähigen Router zu benutzen und die Erfahrung sagt uns, dass viele Menschen dies weiterhin verwenden werden. Zehn zu eins, das gilt auch für Sie;-)

Ein wenig zu IPv6-Adressen:

IPv6-Adressen sind, im Vergleich zu IPv4-Adressen, wirklich groß: 128 Bit gegen 32 Bit. Und das gibt uns das, was wir brauchen: viele, viele IP-Adressen: 340.282.266.920.938.463.463.374.607.431.768.211.465 (> 340 Sextillionen) um genau zu sein. Davon abgesehen, IPv6 (oder IPng, für IP Next Generation) soll für kleinere Routing-Tabellen auf Internet-Backbone-Routern, einfachere Konfiguration von Geräten, bessere Sicherheit auf IP-Ebene und eine bessere Unterstützung für QoS bereit stellen.

Ein Beispiel: 2002:836b:9820:0000:0000:0000:836b:9886

IPv6-Adressen aufzuschreiben kann ganz schön lästig sein. Um sich das Leben leichter zu machen, gibt es einige Regeln:

Die Adresse 2002:836b:9820:0000:0000:0000:836b:9886 kann man so schreiben 2002:836b:9820::836b:9886, das ist um einges freundlicher.

Anderes Beispiel, die Adresse 3ffe:0000:0000:0000:0000:0020:34A1:F32C kann man als 3ffe::20:34A1:F32C schreiben, das ist noch kürzer.

IPv6 soll der Nachfolger des aktuellen IPv4 sein. Da es sich um eine relativ neue Technologie handelt, gibt es noch keine weltweiten nativen IPv6-Netzwerk. Um schnell voran zu kommen, wurde die 6bone eingeführt.

Native IPv6-Netze werden durch Einkapseln des IPv6-Protokolls in IPv4-Pakete verbunden und über die bestehenden IPv4-Infrastruktur von einem IPv6-Standort zum Anderen gesendet.

Das ist genau das, wo der Tunnel auftritt.

Um IPv6 nutzen zu können, sollte wir einen Kernel haben, der das unterstützt. Es gibt viele gute Dokumente, wie man das erreicht. Aber es sind nur ein paar Schritte:

Hast du das alles gemacht, dann kannst du weitermachen und einen IPv6-fähigen Kernel kompilieren:

HINWEIS: Nicht auf die Option "Modul" gehen. Das funktioniert nicht immer.

Mit anderen Worten, IPv6 als im Kernel 'integriert' (built-in) kompilieren . Danach kannst du die Konfiguration wie gewohnt speichern und weiter machen mit der Zusammenstellung des Kernels.

HINWEIS: Bevor du dies tust, bearbeite das Makefile: EXTRAVERSION = -x ; --> ; EXTRAVERSION = -x-IPv6

Es gibt viele gute Dokumentation über die Kompilierung und Installation eines Kernels, aber in diesem Dokument geht es nicht darum. Treten jetzt Probleme auf, suche nach der Dokumentation für die Erstellung einer Linux-Kernel nach eigenen Vorgaben.

Die Datei /usr/src/linux/README kann ein guter Anfang sein. Nachdem Du all das erledigt und mit dem neuen Kernel neu gestartet hast, schau dir die Ausgabe von '/sbin/ifconfig -a' an und beachte das brandneue 'sit0-device'. SIT steht für Simple Internet Transition. Du darfst dich selbst beglückwünschen; du bist jetzt einen wichtigen Schritt weiter an IP der nächsten Generation ;-)

Jetzt zu dem nächsten Schritt. Du möchtest deinen Host, oder vielleicht sogar dein gesamtes LAN mit einem anderen IPv6-fähigen Netzwerk verbinden. Dies kann der "6bone", dessen Einstellungen sind vor allem für diesen Zweck geeignet.

Nehmen wir an, du hast folgendendes IPv6-Netzwerk: 3ffe:604:6:8::/64 und du oder ein Freund möchte sich mit 6bone verbinden. Bitte beachten die /64-Subnetz Notation funktioniert genauso wie mit regulären IP-Adressen.

Deine IPv4-Adresse ist 145.100.24.181 und der 6bone-Router hat die IPv4-Adresse 145.100.1.5.

# ip tunnel add sixbone mode sit remote 145.100.1.5 [local 145.100.24.181 ttl 255]
# ip link set sixbone up
# ip addr add 3FFE:604:6:7::2/126 dev sixbone
# ip route add 3ffe::0/16 dev sixbone

Was bedeutet das. In der ersten Zeile erstellten wir ein Tunnel-Device namens sixbone. Als Mode legten wir sit (das ist IPv6 in IPv4-Tunneling) fest und sagten ihm wohin (remote) er geht und von wo (lokalen) er kommt. Die TTL stellen wir auf Maximum, 255.

Als nächstes aktivieren (up) wir das Device. Danach fügen wir deine eigene Netzwerkadresse hinzu und setzen eine Route für 3ffe::0/16 (das sind alle aktuellen 6bone) durch den Tunnel. Ist die bestimmte Maschine auf der du das ausgeführst dein IPv6-Gateway, dann füge die folgenden Zeilen ein:

# echo 1 >/proc/sys/net/ipv6/conf/all/forwarding
# /usr/local/sbin/radvd

Letzteres, radvd ist -ähnlich Zebra- ein Router Advertisement Daemon, fü die Unterstützung von IPv6-Autokonfigurationsfunktionen. Wenn du möchtest, benutze deine Lieblings-Suchmaschine um mehr zu erfahren. Du kannst noch mal prüfen:

# /sbin/ip -f inet6 addr

Wenn radvd auf deinem IPv6-Gateway läuft, und ein IPv6-fähiger Linuxrechner in deinem LAN ist gestartet, bist du in der Lage die Vorteile der IPv6-Autokonfiguration zu genießen:

# /sbin/ip -f inet6 addr
1: lo: <LOOPBACK,UP> mtu 3924 qdisc noqueue inet6 ::1/128 scope host

3: eth0: <BROADCAST,MULTICAST,UP> mtu 1500 qdisc pfifo_fast qlen 100
inet6 3ffe:604:6:8:5054:4cff:fe01:e3d6/64 scope global dynamic
valid_lft forever preferred_lft 604646sec inet6 fe80::5054:4cff:fe01:e3d6/10 
scope link

Der nächste Schritt ist die Konfigurierung von bind für IPv6-Adressen. Die A-Typ hat ein Äquivalent für IPv6: AAAA. Fü in-addr.arpa ist es: ip6.int. Zu diesem Thema stehen eine Menge Informationen zur Verfügung.

Die Verfügbarkeit von IPv6-fähigen Anwendungen nimmt stetig zu, einschließlich Secure Shell, telnet, inetd, Mozilla Browser, Apache Webserver und viele andere. Aber das soll nicht zum Umfangs dieser Routing-Dokumentation gehören ;-)

Auf der Cisco Seite würde die Konfiguration in etwa so aussehen:

!
interface Tunnel1
description IPv6 tunnel
no ip address
no ip directed-broadcast
ipv6 address 3FFE:604:6:7::1/126
tunnel source Serial0
tunnel destination 145.100.24.181
tunnel mode ipv6ip
!
ipv6 route 3FFE:604:6:8::/64 Tunnel1
Steht dir aber kein Cisco zur Verfügung, probiere einen der vielen IPv6-Tunnel-Broker im Internet. Er konfiguriert dann seinen Cisco mit einem extra-Tunnel für dich. Meist mit Hilfe einer benutzerfreundlichen Weboberfläche. Suche nach "IPv6 Tunnel Broker" mithilfe deiner Lieblings-Suchmaschine.