IT-Academy Logo
Sign Up Login Help
Home - Netzwerke - IPv6 over IPv4-Tunnel zwischen Cisco-Router und Linux



IPv6 over IPv4-Tunnel zwischen Cisco-Router und Linux

Das Ziel dieser Beschreibung ist, eine IPv6-Verbindung zwischen zwei Endgeräten über eine bestehende IPv4-Infrastruktur herzustellen. Dazu werden die IPv6-Pakete enkapsuliert (= "eingepackt") und als IPv4-Paket transportiert. Der Empfänger dekapsuliert das empfangene Paket und kann so wieder das unveränderte IPv6-Paket behandeln.


Autor: Stefan Schultheis (schulti)
Datum: 04-03-2003, 08:36:54
Referenzen: www.cisco.com
Schwierigkeit: Fortgeschrittene
Ansichten: 12015x
Rating: 6 (5x bewertet)

Hinweis:

Für den hier dargestellte Inhalt ist nicht der Betreiber der Plattform, sondern der jeweilige Autor verantwortlich.
Falls Sie Missbrauch vermuten, bitten wir Sie, uns unter missbrauch@it-academy.cc zu kontaktieren.

[Druckansicht] [Als E-Mail senden] [Kommentar verfassen]



Vorwort

Obwohl dieser Artikel ein sehr spezielles Thema behandelt, bin ich der Meinung, dass viele Leser die Hilfe bei dieser Situation sinnvoll empfinden werden. Auch weil IPv6 in Zukunft eine immer wichtigere Rolle spielen wird, habe ich mich entscheiden, dieses Szenario zu beschreiben.

Einleitung

Das Ziel dieser Beschreibung ist, eine IPv6-Verbindung zwischen zwei Endgeräten über eine bestehende IPv4-Infrastruktur herzustellen. Dazu werden die IPv6-Pakete enkapsuliert (= "eingepackt") und als IPv4-Paket transportiert. Der Empfänger dekapsuliert das empfangene Paket und kann so wieder das unveränderte IPv6-Paket behandeln.

In meinem konkreten Fall habe ich einen Cisco 3640-Router mit IOS Version 12.2(8)T2 (IP Plus Featureset) verwendet. Der Router ist einerseits an ein IPv4-Netz – das Internet – angebunden und hat auf einem anderen Link eine native IPv6-Anbindung. Mit "native" meine ich in diesem Fall, dass als Layer3-Protokoll auf diesem Link direkt IPv6 betrieben wird.
Das andere Endgerät ist ein Debian Linux-Server mit Kernel 2.4.20. Der Server ist über ADSL mit dem Internet verbunden.

Vorbereitung

Der Cisco-Router kann erfolgreich mit beiden Netzen kommunizieren. Am Linux-Server habe ich IPv6-Unterstützung in den Kernel kompiliert.
Am Cisco-Router konfiguriere ich ein Loopback-Interface (mit der IPv4-Adresse 172.17.62.105). Von diesem Interface aus werden wir den Tunnel betreiben. Am Linux-Server verwende ich die vom Provider zugewiesene statische IP-Adresse 172.17.60.181.

Für den Tunnel lege ich ein Link-Netz fest: 3ffe:153:affe:2::0/126
Am Linux-Server möchte ich intern Adressen aus diesem Bereich vergeben: 3ffe:153:a::/48



Konfiguration

Am Cisco-Router aktiviere ich als erstes die Unterstützung von Unicast IPv6-Routing. Ich erzeuge ein "Tunnel1"-Interface, in dem ich keine IPv4-Adresse definiere, aber alle nötigen IPv6-Parameter setze. Als Source-Adresse für die IPv4-Pakete (welche die IPv6-Pakete enthalten) definiere ich das erzeugte Loopback1-Interface. Als Destination lege ich die Adresse 172.17.60.181 des Linux-Servers fest. Der Tunnel-Modus ist ipv6ip (IPv6overIPv4).

Die Konfiguration sieht so aus:

ipv6 unicast-routing
!
interface Loopback1
description Source Interface fuer IPv6-in-v4 Tunnel
ip address 172.17.62.105 255.255.255.255
!
interface Tunnel1
description IPv6 Tunnel to Stefan/home
no ip address
ipv6 address 3ffe:153:AFFE:2::1/126
ipv6 enable
tunnel source Loopback1
tunnel destination 172.17.60.181
tunnel mode ipv6ip
!
ipv6 route 3ffe:153:A::/48 3ffe:153:AFFE:2::2


Am Linux-Server erzeuge ich ebenfalls ein Tunnelinterface (sit0) mit dem Namen test6. Für diesen Tunnel definiere ich die selben Endpunkte. Nachdem ich das Interface als aktiv konfiguriert habe, vergebe ich die IPv6-Adresse, die ich in meinen Vorbereitungen geplant habe. Um mit der ganzen Welt kommunizieren zu können, setze ich eine IPv6 Default-Route auf das Interface.
Auf meinem internen Ethernet-Interface (eth0) vergebe ich die erste IP-Adresse aus dem ersten /64-Netz in meinem Bereich: 3ffe:153:a::1. Als Netzgröße wähle ich /64.

#!/bin/bash
ip tunnel add test6 mode sit remote 172.17.62.105 local 172.17.60.181 ttl 225
ip link set test6 up
ip addr add 3ffe:153:affe:2::2/126 dev test6
ip route add ::/0 dev test6
ip addr add 3ffe:153:a::1/64 dev eth0


Testen der Verbindung

Um den Tunnel überprüfen zu können, schicke ich ein PING6 vom Cisco-Router zum Linux-Server:

Router#ping 3ffe:153:affe:2::2
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 3ffe:153:AFFE:2::2, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 40/44/52 ms.


Falls hier ein Fehler auftritt, überprüfen Sie nochmals die Tunnel-Konfiguration. Vielleicht ist IPv6 am Router oder Server nicht unterstützt oder aktiviert? Ich versuche das interne Ethernet-Interface des Linux-Servers vom Router aus zu erreichen:

AT_V6_C01#ping 3ffe:153:a::1
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 3ffe:153:A::1, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 36/48/52 ms.


Sollte hier ein Problem bestehen, kann das daran liegen, dass die Route am Cisco-Router nicht richtig auf den Linux-Server gesetzt ist, oder dass der Linux-Server keine IPv6-Pakete routet!

Zum Abschluss versuchen wir, vom Linux-Server auf das Internet zuzugreifen:
gate:~# traceroute6 2001:628:402:1:204:acff:fede:2319
traceroute to 2001:628:402:1:204:acff:fede:2319 (2001:628:402:1:204:acff:fede:2319) from 3ffe:153:affe:2::2, 30 hops max, 16 byte packets
1 3ffe:153:affe:2::1 (3ffe:153:affe:2::1) 28.866 ms 27.215 ms 32.336 ms
2 3ffe:153:affe:1::2 (3ffe:153:affe:1::2) 35.937 ms 35.45 ms 32.459 ms
3 2001:628:4fe::1853 (2001:628:4fe::1853) 33.026 ms 33.987 ms 30.796 ms
4 2001:628::3 (2001:628::3) 37.109 ms 33.975 ms 39.271 ms
5 2001:628:402:1:204:acff:fede:2319 (2001:628:402:1:204:acff:fede:2319) 39.45 ms 35.005 ms 39.274 ms


Ein Problem an diesem Punkt kann auf eine falsche, oder fehlende Default-Route deuten. Nun brauchen wir nur noch ein paar IPv6-taugliche Applikationen, und können loslegen. Um auch den Workstations im internen Netz die Kommunikation über IPv6 zu vereinfachen, habe ich einen "Router Advertisement Daemon for IPv6" (radvd) installiert. Dieser reagiert auf IPv6-RA-Anfragen und teilt den internen Maschinen die korrekte IP-Konfiguration mit.


s-a-e
Rookie
Beitrag vom:
16-11-2004, 22:22:36

Pv6 over IPv4-Tunnel

Netter Test, werde diese Teststellung auch nochmal versuchen nachzubauen - das nötige Cisco wissen habe ich, mal schauen wie es mit Linux klappen wird... es wurde aber alles verständlich Erklärt!

-----------------------------------------------------


schulti
Junior-Member
Beitrag vom:
30-05-2004, 17:53:33

Schulti dankt...

...für die Blumen! :)

-----------------------------------------------------


Sven
Rookie
Beitrag vom:
02-04-2004, 14:12:42

hätts nicht besser schreiben können ;-)

-----------------------------------------------------


[back to top]



Userdaten
User nicht eingeloggt

Gesamtranking
Werbung
Datenbankstand
Autoren:04510
Artikel:00815
Glossar:04116
News:13565
Userbeiträge:16552
Queueeinträge:06247
News Umfrage
Ihre Anforderungen an ein Online-Zeiterfassungs-Produkt?
Mobile Nutzung möglich (Ipone, Android)
Externe API Schnittstelle/Plugins dritter
Zeiterfassung meiner Mitarbeiter
Exportieren in CSV/XLS
Siehe Kommentar



[Results] | [Archiv] Votes: 1158
Comments: 0