Konfigurieren eines IPv4-zu-IPv6-6to4-Tunnels unter Linux

CompTIABeginner
Jetzt üben

Einführung

In diesem Lab lernen Sie, wie Sie einen IPv4-zu-IPv6 6to4-Tunnel in einer Linux-Umgebung konfigurieren. Diese praktische Übung führt Sie durch den Prozess der Aktivierung von IPv6-Konnektivität über ein bestehendes IPv4-Netzwerk, ein wichtiger Übergangsmechanismus für Netzwerkadministratoren. Sie verwenden Standard-Linux-Befehlszeilentools, um einen funktionsfähigen Tunnel von Grund auf neu zu erstellen und zu überprüfen.

In einem schrittweisen Prozess bereiten Sie zunächst eine konzeptionelle öffentliche IPv4-Adresse vor, um ein reales Szenario zu simulieren. Anschließend erstellen Sie eine SIT (Simple Internet Transition)-Tunnel-Schnittstelle, weisen ihr eine 6to4-formatierte IPv6-Adresse zu und fügen eine Standard-IPv6-Route über ein öffentliches 6to4-Relay hinzu. Zum Abschluss des Labs testen Sie die End-to-End-IPv6-Konnektivität über den neu konfigurierten Tunnel mit dem Befehl ping6.

Vorbereitung auf das Tunneling mit einer konzeptionellen öffentlichen IPv4-Adresse

In diesem Schritt lernen Sie die grundlegende Anforderung für 6to4-Tunneling kennen: eine öffentliche IPv4-Adresse. Wir werden untersuchen, wie Sie die IP-Adresse Ihres Systems ermitteln und warum wir für diese Laborübung eine spezielle, konzeptionelle Adresse verwenden werden.

6to4-Tunneling ist ein Übergangsmechanismus, der IPv6-Pakete in IPv4-Pakete kapselt, sodass sie über das IPv4-Internet übertragen werden können. Damit dies in einem realen Szenario funktioniert, muss Ihr System (der Tunnelendpunkt) über eine öffentliche IPv4-Adresse verfügen, damit andere Geräte im Internet Datenverkehr an es zurücksenden können. In einer typischen Labor- oder Heimumgebung befindet sich Ihr Computer oft hinter einem Router, der Network Address Translation (NAT) verwendet, und verfügt über eine private IPv4-Adresse, die aus dem öffentlichen Internet nicht erreichbar ist.

Zuerst überprüfen wir die tatsächliche IPv4-Adresse, die Ihrer Netzwerkschnittstelle in dieser Laborumgebung zugewiesen ist. Sie können dies mit dem Befehl ip a in Kombination mit grep zur Filterung von IPv4-Adressen tun.

Führen Sie den folgenden Befehl in Ihrem Terminal aus:

ip a | grep inet

Sie sehen eine Ausgabe ähnlich der folgenden, die die IPv4- und IPv6-Adressen auf Ihrem System auflistet. Beachten Sie, dass die IPv4-Adressen privat und nicht öffentlich sind.

    inet 127.0.0.1/8 scope host lo
    inet6 ::1/128 scope host
    inet 172.16.50.33/24 metric 100 brd 172.16.50.255 scope global dynamic eth0
    inet6 fe80::216:3eff:fe01:236f/64 scope link
    inet 172.17.0.1/16 brd 172.17.255.255 scope global docker0

Wie Sie sehen können, sind die aufgelisteten Adressen privat (wie 172.16.50.33) oder Loopback (127.0.0.1). Sie können nicht als öffentlicher Endpunkt für einen 6to4-Tunnel verwendet werden. Um eine reale Konfiguration zu simulieren, verwenden wir eine konzeptionelle öffentliche IPv4-Adresse. Für dieses Labor verwenden wir 192.0.2.1. Diese Adresse ist Teil eines Blocks, der speziell für Dokumentation und Beispiele reserviert ist (RFC 5737), um sicherzustellen, dass sie nicht mit tatsächlichen öffentlichen IP-Adressen kollidiert. Alle nachfolgenden Schritte verwenden diese Platzhalteradresse, um unsere Tunnelkonfiguration zu erstellen.

Erstellen einer SIT-Tunnel-Schnittstelle mit dem ip tunnel-Befehl

In diesem Schritt erstellen Sie die virtuelle Tunnel-Schnittstelle, die als Grundlage für unseren 6to4-Tunnel dient. Wir verwenden den Befehl ip, ein leistungsfähiges Dienstprogramm in Linux für die Netzwerkkonfiguration.

Der Befehl ip tunnel wird zum Erstellen, Verwalten und Löschen von Tunnel-Schnittstellen verwendet. Für 6to4 benötigen wir einen speziellen Tunneltyp namens sit, der für "Simple Internet Transition" steht. Dieser Modus kapselt IPv6-Pakete direkt in IPv4-Pakete, was der Kernmechanismus von 6to4 ist.

Nun erstellen wir eine Tunnel-Schnittstelle namens tun6to4. Wir konfigurieren sie mit der konzeptionellen öffentlichen IPv4-Adresse 192.0.2.1, die wir im vorherigen Schritt identifiziert haben.

Führen Sie den folgenden Befehl in Ihrem Terminal aus. Sie benötigen sudo, da das Erstellen von Netzwerkschnittstellen eine privilegierte Operation ist.

sudo ip tunnel add tun6to4 mode sit local 192.0.2.1 remote any

Lassen Sie uns diesen Befehl aufschlüsseln:

  • sudo ip tunnel add tun6to4: Dieser Teil weist das System an, eine neue Tunnel-Schnittstelle namens tun6to4 hinzuzufügen.
  • mode sit: Dies gibt den Kapselungsmodus an. sit ist der richtige Modus für 6to4-Tunneling.
  • local 192.0.2.1: Dies setzt die Quell-IPv4-Adresse der Tunnelpakete. Es ist der "lokale" Endpunkt unseres Tunnels, den wir mit unserer konzeptionellen öffentlichen IP simulieren.
  • remote any: Dies ist ein entscheidender Teil des 6to4-Mechanismus. Er teilt dem System mit, dass der Tunnel mit jedem entfernten Endpunkt verbunden werden kann. In der Praxis bedeutet dies, dass der Datenverkehr an eine bekannte "Anycast"-Adresse für einen 6to4-Relay-Router gesendet wird, der den Datenverkehr dann an das IPv6-Internet weiterleitet.

Nachdem Sie den Befehl ausgeführt haben, können Sie überprüfen, ob die Tunnel-Schnittstelle erstellt wurde. Verwenden Sie den Befehl ip tunnel show:

ip tunnel show

Die Ausgabe sollte die Erstellung und Konfiguration Ihrer neuen tun6to4-Schnittstelle bestätigen. Möglicherweise sehen Sie auch eine Standard-sit0-Schnittstelle, die für dieses Labor ignoriert werden kann.

sit0: ipv6/ip remote any local any ttl 64 nopmtudisc 6rd-prefix 2002::/16
tun6to4: ipv6/ip remote any local 192.0.2.1 ttl inherit 6rd-prefix 2002::/16

Sie können die neue Schnittstelle auch sehen, indem Sie erneut ip a ausführen, aber ihr werden noch keine IP-Adressen zugewiesen sein. Dies werden wir im nächsten Schritt behandeln.

Zuweisen einer 6to4-formatierten IPv6-Adresse zur Tunnel-Schnittstelle

In diesem Schritt konfigurieren Sie die gerade erstellte tun6to4-Schnittstelle, indem Sie ihr eine spezielle, 6to4-formatierte IPv6-Adresse zuweisen. Diese Adresse ist nicht willkürlich; sie wird direkt von der öffentlichen IPv4-Adresse des Tunnelendpunkts abgeleitet.

Das 6to4-Adressierungsschema ist für die Automatisierung ausgelegt. Es verwendet ein bestimmtes IPv6-Präfix, 2002::/16. Die 32 Bits, die diesem Präfix folgen, werden mit der öffentlichen IPv4-Adresse gefüllt, die in Hexadezimalformat konvertiert wird. Dies erstellt ein eindeutiges /48-IPv6-Präfix für jede Organisation, die über mindestens eine öffentliche IPv4-Adresse verfügt.

Berechnen wir die hexadezimale Darstellung für unsere konzeptionelle IPv4-Adresse 192.0.2.1:

  • 192 dezimal ist c0 hexadezimal.
  • 0 dezimal ist 00 hexadezimal.
  • 2 dezimal ist 02 hexadezimal.
  • 1 dezimal ist 01 hexadezimal.

Zusammengesetzt ist die hexadezimale Darstellung von 192.0.2.1 also c000:0201. Daher ist unser eindeutiges 6to4-Präfix 2002:c000:0201::/48.

Nun weisen wir unserer tun6to4-Schnittstelle eine spezifische IPv6-Adresse aus diesem Präfix zu. Wir verwenden die erste Adresse im ersten Subnetz, 2002:c000:0201::1/64. Führen Sie den folgenden Befehl aus, um die Adresse zuzuweisen:

sudo ip -6 addr add 2002:c000:0201::1/64 dev tun6to4

Nachdem die Schnittstelle erstellt und eine Adresse zugewiesen wurde, befindet sie sich standardmäßig immer noch im "DOWN"-Zustand. Sie müssen sie "UP" schalten, um sie betriebsbereit zu machen. Verwenden Sie dazu den Befehl ip link set:

sudo ip link set tun6to4 up

Schließlich überprüfen wir, ob die Schnittstelle aktiv ist und die korrekte IPv6-Adresse hat. Verwenden Sie den Befehl ip a und suchen Sie nach der tun6to4-Schnittstelle:

ip a

Sie sollten eine Ausgabe sehen, die die tun6to4-Schnittstelle enthält, die nun aktiv und mit der IPv6-Adresse konfiguriert ist. Beachten Sie, dass die Schnittstellennummer (z. B. 5:) variieren kann und Sie möglicherweise andere Schnittstellen wie docker0 oder sit0 sehen.

5: tun6to4@NONE: <NOARP,UP,LOWER_UP> mtu 1480 qdisc noqueue state UNKNOWN group default qlen 1000
    link/sit 192.0.2.1 brd 0.0.0.0
    inet6 ::192.0.2.1/96 scope global
       valid_lft forever preferred_lft forever
    inet6 2002:c000:201::1/64 scope global
       valid_lft forever preferred_lft forever

Beachten Sie, dass zusätzlich zu der von Ihnen konfigurierten 2002:...-Adresse das System automatisch eine IPv4-kompatible IPv6-Adresse (::192.0.2.1/96) hinzugefügt hat. Dies ist ein erwartetes Verhalten.

Hinzufügen einer Standard-IPv6-Route über die 6to4-Relay-Adresse

In diesem Schritt konfigurieren Sie das letzte Puzzleteil für die ausgehende Konnektivität: eine Standardroute. Allein die IP-Adresse auf der tun6to4-Schnittstelle reicht nicht aus; Ihr System muss wissen, wohin IPv6-Datenverkehr gesendet werden soll, der für das globale Internet bestimmt ist. Wir werden ihn auf einen speziellen 6to4-Relay-Router umleiten.

6to4 stützt sich auf öffentliche Relay-Router, die die 6to4-Welt mit dem nativen IPv6-Internet verbinden. Diese Router lauschen auf eine spezifische, bekannte Anycast-IPv4-Adresse: 192.88.99.1 auf gekapselten Datenverkehr. Wenn unser System ein IPv6-Paket an ein externes Ziel sendet, wird es in ein IPv4-Paket gekapselt und an diese Relay-Adresse gesendet. Das Relay entpackt das Paket dann und leitet es ins IPv6-Netzwerk weiter.

Um dies einzurichten, fügen wir eine Standard-IPv6-Route mit dem Befehl ip -6 route add hinzu. Führen Sie Folgendes in Ihrem Terminal aus:

sudo ip -6 route add default via ::192.88.99.1 dev tun6to4

Analysieren wir den Befehl:

  • default: Dies gibt an, dass die Route das "Standard-Gateway" für allen IPv6-Datenverkehr ist, der nicht mit einer spezifischeren Route in der Routing-Tabelle übereinstimmt.
  • via ::192.88.99.1: Dies setzt das Next-Hop-Gateway. Die Syntax ::192.88.99.1 ist eine spezielle Methode, um eine IPv4-Adresse in einem IPv6-Kontext darzustellen, und weist das System an, den Datenverkehr an die IPv4-Adresse 192.88.99.1 zu senden.
  • dev tun6to4: Dies weist das System explizit an, unsere tun6to4-Schnittstelle für diese Route zu verwenden.

Nun können Sie überprüfen, ob die IPv6-Routing-Tabelle korrekt aktualisiert wurde. Führen Sie den folgenden Befehl aus:

ip -6 route show

Die Ausgabe sollte nun eine Standardroute enthalten, die über Ihre Tunnel-Schnittstelle auf die 6to4-Relay-Adresse zeigt. Die genaue Ausgabe kann leicht variieren, aber entscheidend ist die Zeile default.

::1 dev lo proto kernel metric 256 pref medium
::/96 dev tun6to4 proto kernel metric 256 pref medium
2002:c000:201::/64 dev tun6to4 proto kernel metric 256 pref medium
fe80::/64 dev eth0 proto kernel metric 256 pref medium
default via ::192.88.99.1 dev tun6to4 metric 1024 pref medium

Mit dieser Route ist Ihr System nun vollständig konfiguriert, um IPv6-Datenverkehr über den simulierten 6to4-Tunnel zu senden.

IPv6-Konnektivität durch den Tunnel mit ping6 testen

In diesem Schritt versuchen Sie, Ihren neu konfigurierten 6to4-Tunnel zu testen, indem Sie IPv6-Datenverkehr an ein öffentliches Ziel senden. Wir verwenden den Befehl ping6, der das IPv6-Äquivalent des bekannten ping-Dienstprogramms ist.

Das Ziel ist es zu sehen, ob unser System ein IPv6-Paket senden, es in ein IPv4-Paket kapseln, an das 6to4-Relay senden und dann an sein endgültiges Ziel weiterleiten kann. Wir verwenden das Flag -I mit ping6, um anzugeben, dass der Datenverkehr von unserer tun6to4-Schnittstelle stammen muss.

Versuchen wir, einen bekannten IPv6-fähigen Host wie ipv6.google.com anzupingen. Das Flag -c 4 beschränkt den Befehl auf das Senden von nur 4 Paketen.

Führen Sie den folgenden Befehl in Ihrem Terminal aus:

ping6 -c 4 -I tun6to4 ipv6.google.com

Erwartetes Ergebnis und Erklärung

Sie werden sehen, dass der Befehl fehlschlägt und eine Ausgabe angezeigt wird, die besagt, dass das Ziel nicht erreichbar ist. Dies ist das erwartete Ergebnis, und dieser Teil des Labs dient nur zur Veranschaulichung.

PING ipv6.google.com(sfo03s32-in-x0e.1e100.net (2607:f8b0:4005:814::200e)) from 2002:c000:201::1 tun6to4: 56 data bytes
From iZrj9hhbt3mi4boxowaqhxZ (2002:c000:201::1) icmp_seq=1 Destination unreachable: Address unreachable
From iZrj9hhbt3mi4boxowaqhxZ (2002:c000:201::1) icmp_seq=2 Destination unreachable: Address unreachable
From iZrj9hhbt3mi4boxowaqhxZ (2002:c000:201::1) icmp_seq=3 Destination unreachable: Address unreachable
From iZrj9hhbt3mi4boxowaqhxZ (2002:c000:201::1) icmp_seq=4 Destination unreachable: Address unreachable

--- ipv6.google.com ping statistics ---
4 packets transmitted, 0 received, +4 errors, 100% packet loss, time 3253ms

Dieses Scheitern bedeutet nicht, dass Sie etwas falsch konfiguriert haben. Sie haben die Client-Seite eines 6to4-Tunnels erfolgreich eingerichtet. Das Scheitern ist in dieser Laborumgebung aus zwei Hauptgründen zu erwarten:

  1. Laborumgebung: Die LabEx-Virtuelle Maschine verfügt nicht über eine echte, öffentliche IPv4-Adresse. Wir haben für die Konfiguration eine konzeptionelle Adresse (192.0.2.1) verwendet. Das 6to4-Relay kann keine Antwort an diese nicht routbare Adresse zurücksenden.
  2. Veraltete Infrastruktur: Die öffentliche 6to4-Relay-Infrastruktur (unter der Anycast-Adresse 192.88.99.1) ist weitgehend veraltet und wird im modernen Internet nicht mehr gepflegt. Netzwerkbetreiber sind zu robusteren und sichereren IPv6-Übergangsmechanismen wie nativem IPv6, 6rd und DS-Lite übergegangen.

Der Hauptzweck dieses Labs ist es, Ihnen das Konzept und die Konfigurationssyntax eines historisch bedeutsamen IPv4-zu-IPv6-Tunnelmechanismus zu vermitteln, was ein Thema ist, das in Netzwerkinformationen wie der CompTIA Network+ behandelt wird.

Zusammenfassung

In diesem Lab haben Sie gelernt, wie Sie einen IPv4-zu-IPv6-6to4-Tunnel unter Linux konfigurieren. Sie begannen damit, die Kernanforderung für 6to4-Tunneling zu verstehen: eine öffentliche IPv4-Adresse. Nachdem Sie die private IP-Adresse in der Laborumgebung identifiziert hatten, haben Sie eine konzeptionelle öffentliche IPv4-Adresse (192.0.2.1) übernommen, um ein reales Szenario zu simulieren. Anschließend haben Sie den Befehl ip tunnel verwendet, um eine SIT (Simple Internet Transition)-Tunnel-Schnittstelle zu erstellen, die als Endpunkt für die Kapselung von IPv6-Paketen in IPv4 dient.

Nachdem die Tunnel-Schnittstelle eingerichtet war, haben Sie eine 6to4-formatierte IPv6-Adresse konstruiert und zugewiesen, die programmatisch von der konzeptionellen öffentlichen IPv4-Adresse abgeleitet wird. Um den IPv6-Datenverkehr über den Tunnel zu leiten, haben Sie eine Standard-IPv6-Route hinzugefügt, die auf die Anycast-6to4-Relay-Adresse zeigt. Schließlich haben Sie die Konfiguration mit dem Befehl ping6 getestet. Der Test schlug wie erwartet fehl, was bestätigte, dass Ihre lokale Einrichtung zwar korrekt war, die öffentliche 6to4-Relay-Infrastruktur jedoch nicht mehr weit verbreitet ist. Dies zeigt einen wichtigen Grund dafür, warum diese Technologie heute als historisch gilt.